Set-Secret

将机密添加到已注册的 SecretManagement 保管库。

语法

SecureStringParameterSet (默认值)

Set-Secret
    [-Name] <String>
    [[-Vault] <String>]
    [[-Metadata] <Hashtable>]
    -SecureStringSecret <SecureString>
    [-NoClobber]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ObjectParameterSet

Set-Secret
    [-Name] <String>
    [[-Vault] <String>]
    [[-Metadata] <Hashtable>]
    -Secret <Object>
    [-NoClobber]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

SecretInfoParameterSet

Set-Secret
    [-Vault] <String>
    -SecretInfo <SecretInformation>
    [-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: Can't store secret PublishSecret. Vault LocalStore2 doesn't support secret metadata.

此示例使用额外的元数据将名为 PublishSecret 的机密添加到 LocalStore2 保管库。 但是,保管库 LocalStore2 不支持机密元数据,并且操作返回错误。

参数

-Confirm

在运行 cmdlet 之前,提示你进行确认。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Metadata

指定 哈希表 包含要与保管库中的机密关联的键值对。 指定的扩展保管库可能不支持机密元数据。 如果保管库不支持元数据,操作将失败并返回错误。 哈希表中任何元数据的值必须是下列类型之一:

  • 字符串
  • int
  • 日期时间

元数据不会安全地存储在保管库中。 元数据不应包含敏感信息。

参数属性

类型:Hashtable
默认值:None
支持通配符:False
不显示:False

参数集

SecureStringParameterSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
ObjectParameterSet
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Name

指定要添加或更新的机密的名称。 不允许使用通配符(*)。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

SecureStringParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
ObjectParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-NoClobber

如果保管库中已存在具有相同名称的机密,则会导致命令返回错误。 默认情况下,如果机密已存在,则此 cmdlet 会使用新值更新机密。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Secret

指定机密的值。 该对象必须是支持的类型之一:

  • Byte[]
  • 字符串
  • SecureString
  • PSCredential
  • 哈希表

参数属性

类型:Object
默认值:None
支持通配符:False
不显示:False

参数集

ObjectParameterSet
Position:Named
必需:True
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-SecretInfo

指定描述 返回的存储机密的 Get-SecretInfo 对象。 这允许将机密从一个扩展保管库复制到另一个扩展保管库。

参数属性

类型:Microsoft.PowerShell.SecretManagement.SecretInformation
默认值:None
支持通配符:False
不显示:False

参数集

SecretInfoParameterSet
Position:Named
必需:True
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-SecureStringSecret

将机密的值指定为 SecretString 对象。

参数属性

类型:SecureString
默认值:None
支持通配符:False
不显示:False

参数集

SecureStringParameterSet
Position:Named
必需:True
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Vault

指定要在其中添加或更新机密的保管库的名称。 不允许使用通配符(*)。 默认情况下,机密在当前用户的默认保管库中添加或更新。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

SecureStringParameterSet
Position:2
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
ObjectParameterSet
Position:2
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WhatIf

显示 cmdlet 运行时会发生什么情况。 cmdlet 未能运行。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:无线

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

Hashtable

输出

None

备注

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

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