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

输入

Hashtable

输出

None

备注

使用 Set-Secret 参数运行 以指定机密的名称时,cmdlet 将调用由保管库扩展实现的 GetSecret()Set-Secret 通过用户提供的名称。 保管库扩展按该名称查找机密。 如果 GetSecret() 返回匹配项,Set-Secret 将覆盖机密,除非使用 NoClobber 参数。 保管库扩展始终写入它收到的机密信息。

由保管库扩展实现决定是否对名称使用区分大小写的比较。 例如,Microsoft.PowerShell.SecretStore 扩展保管库中的机密名称不区分大小写。 如果传递给 Set-Secret 的名称与 SecretStore 保管库中现有机密的名称不同,则名称将覆盖你提供的新值。