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>]
说明
此 cmdlet 按名称向保管库添加机密值。 如果未指定保管库名称,则会将机密添加到默认保管库。 如果存在具有该名称的机密,则会覆盖该机密。 如果扩展保管库支持,则可以将其他数据包含在机密中。
默认参数集采用 SecureString 对象。 如果在未指定机密值的情况下运行命令,cmdlet 会提示输入 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
保管库。 由于未提供机密值,cmdlet 会提示输入 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
保管库。
但是,保管库 LocalStore2
不支持机密元数据,并且操作返回错误。
参数
-Confirm
在运行 cmdlet 之前,提示你进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Metadata
指定 哈希表 包含要与保管库中的机密关联的键值对。 指定的扩展保管库可能不支持机密元数据。 如果保管库不支持元数据,操作将失败并返回错误。 哈希表中任何元数据的值必须是下列类型之一:
- 字符串
- int
- DateTime
元数据不会安全地存储在保管库中。 元数据不应包含敏感信息。
类型: | Hashtable |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Name
指定要添加或更新的机密的名称。 不允许使用通配符(*
)。
类型: | String |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-NoClobber
如果保管库中已存在具有相同名称的机密,则会导致命令返回错误。 默认情况下,如果机密已存在,则此 cmdlet 会使用新值更新机密。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Secret
指定机密的值。 该对象必须是支持的类型之一:
- Byte[]
- 字符串
- SecureString
- PSCredential
- 哈希表
类型: | Object |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-SecretInfo
指定描述 返回的存储机密的 Get-SecretInfo
对象。
这允许将机密从一个扩展保管库复制到另一个扩展保管库。
类型: | SecretInformation |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-SecureStringSecret
将机密的值指定为 SecretString 对象。
类型: | SecureString |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Vault
指定要在其中添加或更新机密的保管库的名称。 不允许使用通配符(*
)。 默认情况下,机密在当前用户的默认保管库中添加或更新。
类型: | String |
Position: | 2 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
显示 cmdlet 运行时会发生什么情况。 该 cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
输出
None
备注
使用 Set-Secret
参数运行 以指定机密的名称时,cmdlet 将调用由保管库扩展实现的 GetSecret()
。
Set-Secret
通过用户提供的名称。 保管库扩展按该名称查找机密。 如果 GetSecret()
返回匹配项,Set-Secret
将覆盖机密,除非使用 NoClobber 参数。 保管库扩展始终写入它收到的机密信息。
由保管库扩展实现决定是否对名称使用区分大小写的比较。 例如,Microsoft.PowerShell.SecretStore 扩展保管库中的机密名称不区分大小写。 如果传递给 Set-Secret
的名称与 SecretStore 保管库中现有机密的名称不同,则名称将覆盖你提供的新值。