Freigeben über


Set-Secret

Fügt einem registrierten SecretManagement-Tresor ein Geheimnis 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 Geheimniswert anhand des Namens hinzu. Wenn kein Tresorname angegeben wird, wird das Geheimnis dem Standardtresor hinzugefügt. Wenn ein Geheimnis mit diesem Namen vorhanden ist, wird es überschrieben. Zusätzliche Daten können in das Geheimnis eingeschlossen werden, wenn sie vom Erweiterungstresor unterstützt werden.

Der Standardparametersatz akzeptiert ein SecureString-Objekt . Wenn Sie den Befehl ausführen, ohne den Geheimniswert anzugeben, werden Sie vom Cmdlet aufgefordert, einen SecureString-Wert 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 Geheimnis namens Secret1 mit dem Nur-Text-Wert hinzugefügt SecretValue. Da kein Tresorname angegeben wurde, wird das Geheimnis dem Standardtresor des aktuellen Benutzers hinzugefügt. Get-Secret zeigt, dass das Geheimnis 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 Tresor ein Geheimnis mit dem LocalStore Namen Secret2 hinzugefügt. Da kein Geheimniswert angegeben wurde, fordert das Cmdlet zur Eingabe eines SecureString-Werts auf. Die Konsole blendet den Zeichenfolgenwert während der Eingabe aus. Get-Secret zeigt, dass das Geheimnis 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 Tresor ein Geheimnis mit dem Namen TargetSecret hinzugefügt, dessen LocalStore Metadaten das Ablaufdatum des Geheimnisses angeben. Get-SecretInfo ruft die Metadaten für das neu erstellte Geheimnis 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 LocalStore2 Tresor ein Geheimnis mit dem Namen PublishSecret mit zusätzlichen Metadaten hinzugefügt. Der Tresor LocalStore2 unterstützt jedoch keine Geheimmetadaten, und der Vorgang gibt einen Fehler zurück.

Parameter

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

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

-Metadata

Gibt eine Hashtabelle an, die Schlüssel-Wert-Paare enthält, die dem Geheimnis 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 einem der folgenden Typen entsprechen:

  • string
  • int
  • DateTime

Metadaten werden nicht sicher in einem Tresor gespeichert. Metadaten dürfen keine vertraulichen Informationen enthalten.

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

-Name

Gibt den Namen des hinzuzufügenden oder zu aktualisierenden Geheimnisses an. Wildcardzeichen (*) sind nicht zulässig.

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

-NoClobber

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

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

-Secret

Gibt den Wert des Geheimnisses an. Das -Objekt muss einer der unterstützten Typen sein:

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

-SecretInfo

Gibt ein SecretInformation-Objekt an, das ein von Get-SecretInfozurückgegebenes gespeichertes Geheimnis beschreibt. Dies ermöglicht das Kopieren von Geheimnissen aus einem Erweiterungstresor in einen anderen.

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

-SecureStringSecret

Gibt den Wert des Geheimnisses als SecretString-Objekt an.

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

-Vault

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

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

-WhatIf

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

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

Eingaben

Hashtable

Ausgaben

None

Hinweise

Wenn Sie mit dem Parameter Name ausführenSet-Secret, um den Namen des Geheimnisses anzugeben, ruft GetSecret() das Cmdlet auf, das von der Tresorerweiterung implementiert wird. Set-Secret durchläuft den vom Benutzer bereitgestellten Namen. Die Tresorerweiterung sucht das Geheimnis nach diesem Namen. Wenn GetGecret() eine Übereinstimmung zurückgibt, überschreibt das Geheimnis, es sei denn, Set-Secret Sie verwenden den NoClobber-Parameter . Die Tresorerweiterung schreibt immer die empfangenen geheimen Informationen.

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