共用方式為


Set-Secret

將秘密新增至 SecretManagement 已註冊的保存庫。

Syntax

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>]

Description

此 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 前提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Metadata

指定 雜湊表 ,其中包含要與保存庫中秘密建立關聯的金鑰/值組。 指定的擴充保存庫可能不支援秘密中繼資料。 如果保存庫不支援中繼資料,作業會失敗並傳回錯誤。 雜湊表中任何中繼資料的值必須是下列其中一種類型:

  • string
  • int
  • DateTime

中繼資料不會安全地儲存在保存庫中。 中繼資料不應包含敏感性資訊。

Type:Hashtable
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

指定要新增或更新的秘密名稱。 不允許萬用字元 (*) 。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-NoClobber

如果保存庫中已有相同名稱的秘密,則會導致命令傳回錯誤。 根據預設,如果秘密已經存在,此 Cmdlet 會以新的值來更新秘密。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Secret

指定秘密的值。 物件必須是其中一個支援的類型:

  • Byte[]
  • 字串
  • SecureString
  • PSCredential
  • Hashtable
Type:Object
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SecretInfo

指定 SecretInformation 物件,描述 所 Get-SecretInfo 傳回的預存秘密。 這可讓您將秘密從一個擴充保存庫複製到另一個保存庫。

Type:SecretInformation
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SecureStringSecret

指定秘密的值做為 SecretString 物件。

Type:SecureString
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Vault

指定要新增或更新秘密的保存庫名稱。 不允許萬用字元 (*) 。 根據預設,密碼會在目前使用者的預設保存庫中新增或更新。

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 不會執行此 Cmdlet。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

Hashtable

輸出

None

備註

當您使用Name參數執行 Set-Secret 以指定秘密的名稱時,保存庫擴充功能所實作的 Cmdlet 呼叫。 GetSecret() Set-Secret 傳遞使用者所提供的名稱。 保存庫延伸模組會依該名稱查閱秘密。 如果傳 GetGecret() 回相符專案, Set-Secret 除非您使用 NoClobber 參數,否則會覆寫秘密。 保存庫延伸模組一律會寫入其收到的秘密資訊。

保存庫延伸模組實作是決定是否要在名稱上使用區分大小寫的比較。 例如, Microsoft.PowerShell.SecretStore 擴充保存庫中的秘密名稱不區分大小寫。 如果您傳遞至 Set-Secret 的名稱只會因 SecretStore 保存庫中現有秘密的名稱而有所不同,則會以您提供的新值覆寫名稱。