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 之前,提示您進行確認。
參數屬性
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
指定 哈希表 包含金鑰/值組,以與保存庫中的秘密產生關聯。 指定的擴充功能保存庫可能不支援秘密元數據。 如果保存庫不支援元數據,則作業會失敗並傳回錯誤。 哈希表中任何元數據的值必須是下列其中一種類型:
元數據不會安全地儲存在保存庫中。 元數據不應包含敏感性資訊。
| 類型: | 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 會以新值更新秘密。
參數屬性
參數集
(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 物件。
參數屬性
參數集
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 未被執行。
參數屬性
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸出
None
備註
當您使用 Set-Secret 參數執行 以指定秘密的名稱時,Cmdlet 會呼叫保存庫擴充功能所實作的 GetSecret()。
Set-Secret 傳遞使用者所提供的名稱。 保存庫延伸模組會依該名稱查閱秘密。 如果 GetSecret() 傳回相符專案,除非您使用 Set-Secret 參數,否則 會覆寫秘密。 保存庫延伸模組一律會寫入它收到的秘密資訊。
由保存庫延伸模組實作決定是否要在名稱上使用區分大小寫的比較。 例如,Microsoft.PowerShell.SecretStore 擴充保存庫中的秘密名稱不區分大小寫。 如果您傳遞至 Set-Secret 的名稱只因 SecretStore 保存庫中現有秘密的名稱而有所不同,則會以您提供的新值覆寫名稱。