Set-Secret
Добавляет секрет в зарегистрированное хранилище SecretManagement.
Синтаксис
Set-Secret
[-Name] <String>
-SecureStringSecret <SecureString>
[[-Vault] <String>]
[[-Metadata] <Hashtable>]
[-NoClobber]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Secret
[-Name] <String>
-Secret <Object>
[[-Vault] <String>]
[[-Metadata] <Hashtable>]
[-NoClobber]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Secret
-SecretInfo <SecretInformation>
[-Vault] <String>
[-NoClobber]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Этот командлет добавляет значение секрета по имени в хранилище. Если имя хранилища не указано, секрет добавляется в хранилище по умолчанию. Если секрет с таким именем существует, он перезаписан. Дополнительные данные можно включить в секрет, если поддерживается хранилищем расширений.
Набор параметров по умолчанию принимает объект SecureString. Если выполнить команду без указания значения секрета, командлет предложит ввести SecureString. Текст строки не отображается в консоли.
Примеры
Пример 1
Set-Secret -Name Secret1 -Secret "SecretValue"
Get-Secret -Name Secret1
System.Security.SecureString
В этом примере добавляется секрет с именем Secret1
с обычным текстовым значением SecretValue
. Так как имя хранилища не указано, секрет добавляется в хранилище по умолчанию текущего пользователя.
Get-Secret
показывает, что был добавлен секрет.
Пример 2
PS C:\> Set-Secret -Name Secret2 -Vault LocalStore
cmdlet Set-Secret at command pipeline position 1
Supply values for the following parameters:
SecureStringSecret: ***********
PS C:\> Get-Secret -Name Secret2
System.Security.SecureString
В этом примере в хранилище Secret2
добавляется секрет с именем LocalStore
. Так как секретное значение не было предоставлено, командлет запрашивает значение SecureString. Консоль скрывает строковое значение по мере ввода.
Get-Secret
показывает, что был добавлен секрет.
Пример 3
$Metadata = @{ Expiration = ([datetime]::new(2022, 5, 1)) }
Set-Secret -Name TargetSecret -Secret $targetToken -Vault LocalStore -Metadata $Metadata
Get-SecretInfo -Name TargetSecret | Select-Object Name,Metadata
Name Metadata
---- --------
TargetSecret {[Expiration, 5/1/2022 12:00:00 AM]}
В этом примере в хранилище TargetSecret
добавляется секрет с именем LocalStore
с метаданными, указывающими дату окончания срока действия секрета.
Get-SecretInfo
извлекает метаданные для только что созданного секрета.
Пример 4
$Metadata = @{ Expiration = ([datetime]::new(2022, 5, 1)) }
Set-Secret -Name PublishSecret -Secret $targetToken -Vault LocalStore2 -Metadata $Metadata
Set-Secret: Cannot store secret PublishSecret. Vault LocalStore2 does not support secret metadata.
В этом примере в хранилище PublishSecret
добавляется секрет с именем LocalStore2
PublishSecret
с дополнительными метаданными.
Однако хранилище LocalStore2
не поддерживает метаданные секрета, а операция возвращает ошибку.
Параметры
-Confirm
Запрашивает подтверждение перед запуском командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Metadata
Указывает хэш-, содержащую пары "ключ-значение", которые необходимо связать с секретом в хранилище. Указанное хранилище расширений может не поддерживать метаданные секрета. Если хранилище не поддерживает метаданные, операция завершается ошибкой и возвращает ошибку. Значения любых метаданных в хэш-таблицы должны быть одним из следующих типов:
- строка
- int
- DateTime
Метаданные не хранятся безопасно в хранилище. Метаданные не должны содержать конфиденциальную информацию.
Тип: | Hashtable |
Position: | 1 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Name
Указывает имя секрета для добавления или обновления. Подстановочные знаки (*
) не разрешены.
Тип: | String |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-NoClobber
Вызывает ошибку, если секрет с тем же именем уже существует в хранилище. По умолчанию этот командлет обновляет секрет с новым значением, если он уже существует.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Secret
Указывает значение секрета. Объект должен быть одним из поддерживаемых типов:
- Byte[]
- строка
- SecureString
- PSCredential
- хэш-
Тип: | Object |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-SecretInfo
Указывает объект SecretInformation, описывающий сохраненный секрет, возвращаемый Get-SecretInfo
.
Это позволяет копировать секреты из одного хранилища расширений в другое.
Тип: | SecretInformation |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-SecureStringSecret
Указывает значение секрета в качестве объекта SecretString.
Тип: | SecureString |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Vault
Указывает имя хранилища для добавления или обновления секрета. Подстановочные знаки (*
) не разрешены. По умолчанию секрет добавляется или обновляется в хранилище по умолчанию текущего пользователя.
Тип: | String |
Position: | 2 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет, если командлет выполняется. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Выходные данные
None
Примечания
При запуске Set-Secret
с параметром имени, чтобы указать имя секрета, командлет вызывает GetSecret()
, реализованную расширением хранилища.
Set-Secret
проходит через имя, предоставленное пользователем. Расширение хранилища ищет секрет по имени. Если GetSecret()
возвращает совпадение, Set-Secret
перезаписывает секрет, если не используется параметр NoClobber. Расширение хранилища всегда записывает полученную секретную информацию.
Это зависит от реализации расширения хранилища, чтобы решить, следует ли использовать сравнение с учетом регистра по имени. Например, имена секретов в хранилище расширений Microsoft.PowerShell.SecretStore не учитывает регистр. Если имя, которое вы передаете в Set-Secret
, отличается только по имени существующего секрета в хранилище SecretStore, имя перезаписывается новым значением, которое вы указали.
PowerShell