Set-AuthenticodeSignature
Добавляет подпись 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:
. Если сертификат недопустим или не имеет code-signing
центра, команда завершается ошибкой.
Тип: | X509Certificate2 |
Position: | 1 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Content
Этот параметр отображается в описании синтаксиса, так как он определен в базовом классе, Set-AuthenticodeSignature
производным от него. Однако поддержка этого параметра не реализована Set-AuthenticodeSignature
.
Тип: | Byte[] |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-FilePath
Указывает путь к подписываемому файлу.
Тип: | String[] |
Position: | 1 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Force
Позволяет командлету добавлять подпись в файл, доступный только для чтения. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-HashAlgorithm
Задает алгоритм хэширования, который использует Windows для расчета цифровой подписи для файла.
Для PowerShell 7.3 по умолчанию используется SHA256, который является алгоритмом хэширования Windows по умолчанию. Для более ранних версий по умолчанию используется SHA1. Файлы, подписанные с использованием другого алгоритма хэширования, могут не распознаваться в других системах. Какие алгоритмы поддерживаются, зависят от версии операционной системы.
Список возможных значений см. в разделе HashAlgorithmName Struct.
Тип: | String |
Position: | Named |
Default value: | SHA256 |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-IncludeChain
Определяет, какие сертификаты в цепочке доверия сертификатов включаются в цифровую подпись. NotRoot — это значение по умолчанию.
Допустимые значения:
- Подписыватель: включает только сертификат подписи.
- NotRoot: включает все сертификаты в цепочке сертификатов, за исключением корневого центра.
- Все: включает все сертификаты в цепочке сертификатов.
Тип: | String |
Position: | Named |
Default value: | NotRoot |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-LiteralPath
Указывает путь к подписываемому файлу. В отличие от FilePath, значение параметра LiteralPath используется точно так же, как и типизированный параметр. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Тип: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-SourcePathOrExtension
Этот параметр отображается в описании синтаксиса, так как он определен в базовом классе, Set-AuthenticodeSignature
производным от него. Однако поддержка этого параметра не реализована Set-AuthenticodeSignature
.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-TimestampServer
Добавляет к подписи отметку времени, использует заданный сервер отметок времени. Введите URL-адрес сервера отметок времени в виде строки. URL-адрес должен начинаться с https://
или http://
.
Отметка времени представляет собой значение точного времени, когда сертификат был добавлен в файл. Отметка времени защищает скрипт от сбоев в случае истечения срока действия сертификата, поскольку пользователи и программы могут проверить, что сертификат действовал в момент подписания.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Можно передать строку, содержащую путь к файлу для этого командлета.
Выходные данные
Этот командлет возвращает объект Signature , представляющий заданное значение.
Примечания
Этот командлет доступен только на платформах Windows.
Связанные ссылки
PowerShell