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

説明

このコマンドレットは、名前によってシークレット値をコンテナーに追加します。 コンテナー名が指定されていない場合、シークレットは既定のコンテナーに追加されます。 その名前のシークレットが存在する場合は、上書きされます。 拡張コンテナーでサポートされている場合は、シークレットに追加のデータを含めることができます。

既定のパラメーター セットは SecureString オブジェクトを受け取ります。 シークレット値を指定せずにコマンドを実行すると、コマンドレットによって 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 追加します。 シークレット値が指定されていないので、コマンドレットは 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]}

次の使用例は、シークレットの有効期限をLocalStore示すメタデータを含む という名前TargetSecretのシークレットをコンテナーに追加します。 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.

次の使用例は、追加のメタデータを含む という名前 PublishSecretLocalStore2 シークレットをコンテナーに追加します。 ただし、コンテナー LocalStore2 はシークレット メタデータをサポートしていないため、操作によってエラーが返されます。

パラメーター

-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

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

-Metadata

コンテナー内のシークレットに関連付けるキーと値のペアを含む Hashtable を指定します。 指定された拡張コンテナーでは、シークレット メタデータがサポートされていない可能性があります。 コンテナーでメタデータがサポートされていない場合、操作は失敗し、エラーが返されます。 ハッシュテーブル内のメタデータの値は、次のいずれかの型である必要があります。

  • 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

同じ名前のシークレットがコンテナーに既に存在する場合、コマンドからエラーが返されます。 既定では、このコマンドレットは、シークレットが既に存在する場合は、新しい値でシークレットを更新します。

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

-Secret

シークレットの値を指定します。 オブジェクトは、サポートされている型のいずれかである必要があります。

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

-SecretInfo

によってGet-SecretInfo返される格納されたシークレットを記述する SecretInformation オブジェクトを指定します。 これにより、ある拡張機能コンテナーから別の拡張機能コンテナーにシークレットをコピーできます。

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

コマンドレットの実行時に発生する内容を示します。 コマンドレットは実行されません。

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

入力

Hashtable

出力

None

メモ

Name パラメーターを使用してを実行Set-Secretしてシークレットの名前を指定すると、コンテナー拡張機能によって実装されている がコマンドレットによって呼び出GetSecret()されます。 Set-Secret は、ユーザーが指定した名前を渡します。 コンテナー拡張機能は、その名前でシークレットを検索します。 が一致を返す場合 GetGecret() は、 Set-SecretNoClobber パラメーターを使用しない限り、シークレットが上書きされます。 コンテナー拡張機能は、受信したシークレット情報を常に書き込みます。

名前に対して大文字と小文字を区別する比較を使用するかどうかを決定するのは、コンテナー拡張機能の実装に依存します。 たとえば、 Microsoft.PowerShell.SecretStore 拡張機能コンテナー内のシークレット名では、大文字と小文字は区別されません。 渡す Set-Secret 名前が SecretStore コンテナー内の既存のシークレットの名前と大文字と小文字のみが異なる場合、名前は指定した新しい値で上書きされます。