Добавляет подпись Authenticode, чтобы подписать скрипт Windows PowerShell или другой файл.
Синтаксис
Set-AuthenticodeSignature [-FilePath] <string[]> [-Сертификат] <X509Certificate2> [-Force] [-HashAlgorithm <string>] [-IncludeChain <string>] [-TimestampServer <string>] [-Confirm] [-WhatIf] [<CommonParameters>]
Описание
Командлет Set-AuthenticodeSignature добавляет подпись Authenticode в любой файл, совместимый с протоколом SIP (Subject Interface Package).
В файле скрипта Windows PowerShell подпись имеет вид блока текста, который указывает конец инструкций, выполняемых в скрипте. Если при запуске командлета в файле уже есть подпись, то эта подпись удаляется.
Параметры
-Сертификат <X509Certificate2>
Задает сертификат, который будет использоваться для подписания скрипта или файла. Введите переменную, в которой хранится объект, представляющий сертификат, или выражение, которое получает сертификат.
Чтобы найти сертификат, воспользуйтесь командлетом Get-PfxCertificate или Get-ChildItem на диске сертификата (Cert:). Если сертификат недействителен или не имеет заверителя подписи кода, то команда завершается сбоем.
Обязательно? |
true |
Позиция? |
2 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-FilePath <string[]>
Указывает путь к подписываемому файлу.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue, ByPropertyName) |
Принимать подстановочные знаки? |
false |
-Force
Позволяет командлету добавлять подпись в файл, доступный только для чтения. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-HashAlgorithm <string>
Задает алгоритм хэширования, который использует Windows для расчета цифровой подписи для файла. По умолчанию он задан как SHA1, что является алгоритмом хэширования в Windows по умолчанию.
Файлы, подписанные с использованием другого алгоритма хэширования, могут не распознаваться в других системах.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
SHA1 |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-IncludeChain <string>
Определяет, какие сертификаты в цепочке доверия сертификатов включаются в цифровую подпись. "NotRoot" — значение по умолчанию.
Допустимые значения:
Signer: включает в себя только сертификат подписавшего.
NotRoot: включает в себя все сертификаты в цепочке сертификатов, за исключением корневого центра.
All: включает в себя все сертификаты в цепочке сертификатов.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-TimestampServer <string>
Использует заданный сервер отметок времени, чтобы добавить к подписи отметку времени. Введите URL-адрес сервера отметок времени в виде строки.
Отметка времени представляет собой значение точного времени, когда сертификат был добавлен в файл. Отметка времени защищает скрипт от сбоев в случае истечения срока действия сертификата, поскольку пользователи и программы могут проверить, что сертификат действовал в момент подписания.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Confirm
Запрашивает подтверждение перед выполнением команды.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-WhatIf
Описывает, что произойдет при выполнении команды, без ее фактического выполнения.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.String Строку, содержащую путь к файлу, можно передать командлету Set-AuthenticodeSignature по конвейеру. |
Выходные данные |
System.Management.Automation.Signature |
Пример 1
C:\PS>$cert=Get-ChildItem -Path cert:\CurrentUser\my -CodeSigningCert C:\PS>Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -certificate $cert Описание ----------- Эти команды извлекают сертификат подписи кода из поставщика сертификата Windows PowerShell и используют его, чтобы подписать скрипт Windows PowerShell. Первая команда использует командлет Get-ChildItem и поставщик сертификата Windows PowerShell, чтобы получить сертификаты во вложенном каталоге "Cert:\CurrentUser\My" хранилища сертификатов. (Cert: это диск, предоставленный поставщиком сертификата.) Параметр CodeSigningCert, который поддерживается только поставщиком сертификата, обеспечивает извлечение сертификатов только с заверителем подписи кода. Команда сохраняет результат в переменной $cert. Вторая команда подписывает скрипт PSTestInternet2.ps1 с помощью командлета Set-AuthenticodeSignature. Параметр FilePath указывает имя скрипта, а параметр Certificate указывает, что сертификат хранится в переменной $cert.
Пример 2
C:\PS>$cert = Get-PfxCertificate C:\Test\Mysign.pfx C:\PS>Set-AuthenticodeSignature -Filepath ServerProps.ps1 -Cert $cert Описание ----------- Эти команды используют командлет Get-PfxCertificate для поиска сертификата подписи кода. Затем они используют его для подписи скрипта Windows PowerShell. Первая команда использует командлет Get-PfxCertificate, чтобы найти сертификат "C:\Test\MySign.pfx" и сохранить его в переменной $cert. Во второй команде командлет Set-AuthenticodeSignature используется для подписи скрипта. Параметр FilePath подписи Set-AuthenticodeSignature указывает путь к файлу подписываемого скрипта, а параметр Cert передает переменную $cert, в которой содержится сертификат, в Set-AuthenticodeSignature. Если файл сертификата защищен паролем, то оболочка Windows PowerShell просит ввести пароль.
Пример 3
C:\PS>Set-AuthenticodeSignature -filepath c:\scripts\Remodel.ps1 -certificate $cert -IncludeChain All -TimeStampServer "http://timestamp.fabrikam.com/scripts/timstamper.dll" Описание ----------- Эта команда добавляет цифровую подпись, которая включает корневой центр в цепочке доверия, и подписывается сторонним сервером штампов времени. Команда использует параметр FilePath, чтобы указать подписываемый скрипт, и параметр Certificate, чтобы указать сертификат, сохраненный в переменной $cert. Она использует параметр IncludeChain, чтобы включить все подписи в цепочке доверия (включая корневой центр сертификации). Кроме того, она использует параметр TimeStampServer, чтобы добавить к подписи отметку времени. Это защищает скрипт от сбоя в случае истечения срока действия сертификата.
См. также