Freigeben über


Set-Secret

Fügt einen geheimen Schlüssel zu einem registrierten Tresor von SecretManagement hinzu.

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

Beschreibung

Dieses Cmdlet fügt einem Tresor einen geheimen Wert nach Namen hinzu. Wenn kein Tresorname angegeben wird, wird der geheime Schlüssel dem Standardtresor hinzugefügt. Wenn ein Geheimschlüssel mit diesem Namen vorhanden ist, wird er überschrieben. Zusätzliche Daten können im geheimen Schlüssel enthalten sein, wenn sie vom Erweiterungstresor unterstützt werden.

Der Standardparametersatz akzeptiert ein SecureString--Objekt. Wenn Sie den Befehl ausführen, ohne den geheimen Wert anzugeben, werden Sie vom Cmdlet aufgefordert, eine SecureString-einzugeben. Der Text der Zeichenfolge ist in der Konsole nicht sichtbar.

Beispiele

Beispiel 1

Set-Secret -Name Secret1 -Secret "SecretValue"
Get-Secret -Name Secret1

System.Security.SecureString

In diesem Beispiel wird ein Geheimschlüssel namens Secret1 mit einem Nur-Text-Wert von SecretValuehinzugefügt. Da kein Tresorname angegeben wurde, wird der geheime Schlüssel dem Standardtresor des aktuellen Benutzers hinzugefügt. Get-Secret zeigt, dass der geheime Schlüssel hinzugefügt wurde.

Beispiel 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

In diesem Beispiel wird dem Secret2 Tresor ein Geheimschlüssel mit dem Namen LocalStore hinzugefügt. Da kein geheimer Wert angegeben wurde, fordert das Cmdlet einen SecureString- Wert ein. Die Konsole blendet den Zeichenfolgenwert aus, während er eingegeben wird. Get-Secret zeigt, dass der geheime Schlüssel hinzugefügt wurde.

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

In diesem Beispiel wird dem TargetSecret Tresor ein geheimer LocalStore mit Metadaten hinzugefügt, der das Ablaufdatum des geheimen Schlüssels angibt. Get-SecretInfo ruft die Metadaten für den neu erstellten geheimen Schlüssel ab.

Beispiel 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.

In diesem Beispiel wird dem PublishSecret Tresor mit zusätzlichen Metadaten ein Geheimschlüssel mit dem Namen LocalStore2 hinzugefügt. Der Tresor LocalStore2 unterstützt jedoch keine geheimen Metadaten, und der Vorgang gibt einen Fehler zurück.

Parameter

-Confirm

Fordert Sie vor dem Ausführen des Cmdlets zur Bestätigung auf.

Typ:SwitchParameter
Aliase:cf
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Metadata

Gibt eine Hashtable- mit Schlüsselwertpaaren an, die dem geheimen Schlüssel im Tresor zugeordnet werden sollen. Der angegebene Erweiterungstresor unterstützt möglicherweise keine geheimen Metadaten. Wenn der Tresor keine Metadaten unterstützt, schlägt der Vorgang fehl und gibt einen Fehler zurück. Die Werte aller Metadaten in der Hashtabelle müssen einen der folgenden Typen aufweisen:

  • Zeichenfolge
  • int
  • DateTime-

Metadaten werden nicht sicher in einem Tresor gespeichert. Metadaten sollten keine vertraulichen Informationen enthalten.

Typ:Hashtable
Position:1
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Name

Gibt den Namen des geheimen Schlüssels an, der hinzugefügt oder aktualisiert werden soll. Wildcardzeichen (*) sind nicht zulässig.

Typ:String
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-NoClobber

Bewirkt, dass der Befehl einen Fehler zurückgibt, wenn bereits ein Geheimschlüssel mit demselben Namen im Tresor vorhanden ist. Standardmäßig aktualisiert dieses Cmdlet den geheimen Schlüssel mit dem neuen Wert, sofern er bereits vorhanden ist.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Secret

Gibt den Wert des geheimen Schlüssels an. Das Objekt muss eines der unterstützten Typen sein:

  • Byte[]
  • Zeichenfolgen-
  • SecureString-
  • PSCredential-
  • hashtable
Typ:Object
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-SecretInfo

Gibt ein SecretInformation Objekt an, das ein gespeichertes Geheimnis beschreibt, das von Get-SecretInfozurückgegeben wird. Dadurch können geheime Schlüssel aus einem Erweiterungstresor in einen anderen kopiert werden.

Typ:SecretInformation
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-SecureStringSecret

Gibt den Wert des geheimen Schlüssels als SecretString- -Objekt an.

Typ:SecureString
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-Vault

Gibt den Namen des Tresors an, in dem der geheime Schlüssel hinzugefügt oder aktualisiert werden soll. Wildcardzeichen (*) sind nicht zulässig. Standardmäßig wird der geheime Schlüssel im Standardtresor des aktuellen Benutzers hinzugefügt oder aktualisiert.

Typ:String
Position:2
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-WhatIf

Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Typ:SwitchParameter
Aliase:wi
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

Hashtable

Ausgaben

None

Hinweise

Wenn Sie Set-Secret mit dem Parameter Name ausführen, um den Namen des geheimen Schlüssels anzugeben, ruft das Cmdlet GetSecret() auf, das von der Vault-Erweiterung implementiert wird. Set-Secret den Vom Benutzer bereitgestellten Namen durchläuft. Die Tresorerweiterung sucht das Geheimnis anhand dieses Namens. Wenn GetSecret() eine Übereinstimmung zurückgibt, überschreibt Set-Secret den geheimen Schlüssel, es sei denn, Sie verwenden den NoClobber Parameter. Die Tresorerweiterung schreibt immer die geheimen Informationen, die sie empfängt.

Es liegt an der Vault-Erweiterungsimplementierung, um zu entscheiden, ob ein Vergleich zwischen Groß- und Kleinschreibung für den Namen verwendet werden soll. Bei geheimen Namen im Microsoft.PowerShell.SecretStore Erweiterungstresor wird die Groß-/Kleinschreibung nicht beachtet. Wenn sich der Name, den Sie an Set-Secret übergeben, nur nach Groß-/Kleinschreibung mit dem Namen eines vorhandenen geheimen Schlüssels in einem SecretStore-Tresor unterscheidet, wird der Name mit dem von Ihnen angegebenen neuen Wert überschrieben.