Добавляет подпись 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, чтобы добавить к подписи отметку времени. Это защищает скрипт от сбоя в случае истечения срока действия сертификата.






См. также




Содержание