共用方式為


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

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: 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[]
  • String
  • 安全字串
  • PSCredential
  • 哈希表

參數屬性

類型:Object
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ObjectParameterSet
Position:Named
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-SecretInfo

指定 SecretInformation 物件,描述 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 參數,否則 會覆寫秘密。 保存庫延伸模組一律會寫入它收到的秘密資訊。

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