Set-AuthenticodeSignature (Microsoft.PowerShell.Security)
Set-AuthenticodeSignature
- Модуль:
- Microsoft.PowerShell.Security
Добавляет подпись Authenticode в сценарий PowerShell или другой файл.
Синтаксис
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-FilePath] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
-LiteralPath <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
-SourcePathOrExtension <String[]>
-Content <Byte[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]Описание
Этот командлет доступен только на платформе Windows.
Командлет Set-AuthenticodeSignature добавляет подпись Authenticode к любому файлу, который поддерживает пакет интерфейса субъекта (SIP).
В файле сценария PowerShell подпись принимает форму блока текста, указывающего конец инструкций, выполняемых в сценарии. Если при запуске этого командлета в файле есть подпись, эта подпись удаляется.
Примеры
Пример 1. Подписание сценария с использованием сертификата из локального хранилища сертификатов.
Эти команды получают сертификат подписи кода от поставщика сертификатов PowerShell и используют его для подписи сценария PowerShell.
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $certПервая команда использует командлет Get-ChildItem и поставщик сертификатов PowerShell для получения сертификатов в подкаталоге Cert:\CurrentUser\My хранилища сертификатов. Диск Cert: — это диск, предоставляемый поставщиком сертификатов. Параметр CodeSigningCert, который поддерживается только поставщиком сертификатов, ограничивает количество получаемых сертификатов теми, у кого есть полномочия подписи кода. Команда сохраняет результат в переменной $cert.
Вторая команда использует командлет Set-AuthenticodeSignature для подписи сценария PSTestInternet2.ps1. Он использует параметр FilePath для указания имени сценария и параметр Certificate для указания того, что сертификат хранится в переменной $cert.
Примечание
Использование параметра CodeSigningCert с Get-ChildItem возвращает только сертификаты, обладающие полномочиями подписи кода и содержащие закрытый ключ. Если закрытого ключа нет, сертификаты нельзя использовать для подписи.
Пример 2. Подписание сценария с использованием сертификата из файла PFX.
Эти команды используют командлет Get-PfxCertificate для загрузки сертификата подписи кода. Затем используйте его для подписания сценария PowerShell.
$cert = Get-PfxCertificate -FilePath C:\Test\Mysign.pfx
Set-AuthenticodeSignature -FilePath ServerProps.ps1 -Certificate $certПервая команда использует командлет Get-PfxCertificate для загрузки сертификата C:\Test\MySign.pfx в переменную $cert.
Вторая команда использует Set-AuthenticodeSignature для подписи скрипта. Параметр FilePath в Set-AuthenticodeSignature указывает путь к подписываемому файлу сценария, а параметр Cert передает $cert переменная, содержащая сертификат для Set-AuthenticodeSignature.
Если файл сертификата защищен паролем, PowerShell запросит пароль.
Пример 3. Добавьте подпись, включающую корневой центр сертификации.
Эта команда добавляет цифровую подпись, включающую корневой центр сертификации в цепочку доверия, и она подписывается сторонним сервером меток времени.
Set-AuthenticodeSignature -FilePath c:\scripts\Remodel.ps1 -Certificate $cert -IncludeChain All -TimestampServer "https://timestamp.fabrikam.com/scripts/timstamper.dll"Команда использует параметр FilePath для указания подписываемого сценария и параметр Certificate для указания сертификата, который сохраняется в переменной $cert. Он использует параметр IncludeChain для включения всех подписей в цепочку доверия, включая корневой центр сертификации. Он также использует параметр TimeStampServer для добавления отметки времени к подписи. Это предотвращает сбой сценария по истечении срока действия сертификата.
Параметры
-Certificate
Указывает сертификат, который будет использоваться для подписи сценария или файла. Введите переменную, в которой хранится объект, представляющий сертификат, или выражение, которое получает сертификат.
Чтобы найти сертификат, используйте Get-PfxCertificate или используйте командлет Get-ChildItem на диске сертификата Cert:. Если сертификат недействителен или не имеет полномочий подписать код, команда завершится неудачно.
- Тип :
X509Сертификат2
- Позиция:
1
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Confirm
Запрашивает подтверждение перед запуском командлета.
- Тип :
SwitchParameter
- Псевдонимы:
cf
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Content
Этот параметр появляется в списке синтаксиса, поскольку он определен в базовом классе, производным от которого является Set-AuthenticodeSignature. Однако поддержка этого параметра не реализована в Set-AuthenticodeSignature.
- Тип :
Байт[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-FilePath
Указывает путь к подписываемому файлу.
- Тип :
String[]
- Позиция:
1
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-Force
Позволяет командлету добавлять подпись к файлу, доступному только для чтения. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-HashAlgorithm
Указывает алгоритм хеширования, который Windows использует для вычисления цифровой подписи файла.
Для PowerShell 7.3 по умолчанию используется SHA256, который является алгоритмом хеширования Windows по умолчанию. Для более ранних версий по умолчанию используется SHA1. Файлы, подписанные другим алгоритмом хеширования, могут не распознаваться в других системах. Какие алгоритмы поддерживаются, зависит от версии операционной системы.
Список возможных значений см. в разделе HashAlgorithmName Struct.
- Тип :
String
- Позиция:
Именованный
- Значение по умолчанию:
SHA256
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-IncludeChain
Определяет, какие сертификаты в цепочке доверия сертификатов включены в цифровую подпись. NotRoot используется по умолчанию.
Допустимые значения:
- Подписавшая сторона: включает только сертификат подписывающей стороны.
- NotRoot: включает все сертификаты в цепочке сертификатов, за исключением корневого центра сертификации.
- Все: включает все сертификаты в цепочке сертификатов.
- Тип :
String
- Позиция:
Именованный
- Значение по умолчанию:
NotRoot
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-LiteralPath
Указывает путь к подписываемому файлу. В отличие от FilePath, значение параметра LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности.
- Тип :
String[]
- Псевдонимы:
PSPath
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-SourcePathOrExtension
Этот параметр появляется в списке синтаксиса, поскольку он определен в базовом классе, производным от которого является Set-AuthenticodeSignature. Однако поддержка этого параметра не реализована в Set-AuthenticodeSignature.
- Тип :
String[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-TimestampServer
Использует указанный сервер отметок времени для добавления отметки времени к подписи. Введите URL-адрес сервера меток времени в виде строки. URL-адрес должен начинаться с https:// или http://.
Отметка времени представляет собой точное время добавления сертификата в файл. Отметка времени предотвращает сбой сценария в случае истечения срока действия сертификата, поскольку пользователи и программы могут проверить, что сертификат был действителен на момент подписания.
- Тип :
String
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-WhatIf
Показывает, что произойдет, если командлет запустится. Командлет не запускается.
- Тип :
SwitchParameter
- Псевдонимы:
wi
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
Строка
Вы можете передать строку, содержащую путь к файлу этого командлета.
Выходы
Подпись
Этот командлет возвращает объект Signature, представляющий установленное им значение.
Примечания
Этот командлет доступен только на платформах Windows.