Set-Secret
Fügt einen geheimen Schlüssel zu einem registrierten Tresor von SecretManagement hinzu.
Syntax
SecureStringParameterSet (Standard)
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>]
Beschreibung
Important
Das PowerShell-Team hat entschieden, dass Secret-Module funktionsfertig sind und nicht mehr aktiv entwickelt werden. Die Module werden weiterhin für Sicherheits- und kritische Fehlerbehebungen unterstützt. Das Code-Repository wird archiviert.
Die zuletzt veröffentlichten Versionen sind:
Die Natur der Geheimnisse hat sich seit der Planung dieses Projekts grundlegend verändert. Passwortlose Authentifizierungsmethoden wie Passkeys, Single Sign-on und föderierte Zugangsdaten wie Microsoft Entra ID, Biometrie und Hardware-Sicherheitsschlüssel sind die Zukunft.
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: Can't store secret PublishSecret. Vault LocalStore2 doesn't 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 zur Bestätigung auf, bevor Sie das Cmdlet ausführen.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | vgl |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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:
- String
- int
- DateTime
Metadaten werden nicht sicher in einem Tresor gespeichert. Metadaten sollten keine vertraulichen Informationen enthalten.
Parametereigenschaften
| Typ: | Hashtable |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
SecureStringParameterSet
| Position: | 1 |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
ObjectParameterSet
| Position: | 1 |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Name
Gibt den Namen des geheimen Schlüssels an, der hinzugefügt oder aktualisiert werden soll. Wildcardzeichen (*) sind nicht zulässig.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
SecureStringParameterSet
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
ObjectParameterSet
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Secret
Gibt den Wert des geheimen Schlüssels an. Das Objekt muss eines der unterstützten Typen sein:
- Byte[]
- String
- SecureString
- PSCredential-
- hashtable
Parametereigenschaften
| Typ: | Object |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
ObjectParameterSet
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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.
Parametereigenschaften
| Typ: | Microsoft.PowerShell.SecretManagement.SecretInformation |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
SecretInfoParameterSet
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-SecureStringSecret
Gibt den Wert des geheimen Schlüssels als SecretString- -Objekt an.
Parametereigenschaften
| Typ: | SecureString |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
SecureStringParameterSet
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
SecureStringParameterSet
| Position: | 2 |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
ObjectParameterSet
| Position: | 2 |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Wi |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
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.