Udostępnij za pośrednictwem


Set-Secret

Dodaje wpis tajny do zarejestrowanego magazynu SecretManagement.

Składnia

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

Opis

To polecenie cmdlet dodaje wartość wpisu tajnego według nazwy do magazynu. Jeśli nie określono nazwy magazynu, wpis tajny jest dodawany do domyślnego magazynu. Jeśli istnieje wpis tajny o tej nazwie, zostanie zastąpiony. Dodatkowe dane można dołączyć do wpisu tajnego, jeśli jest obsługiwany przez magazyn rozszerzeń.

Domyślny zestaw parametrów przyjmuje obiekt SecureString . Jeśli uruchomisz polecenie bez określenia wartości wpisu tajnego, polecenie cmdlet wyświetli monit o wprowadzenie protokołu SecureString. Tekst ciągu nie jest widoczny w konsoli programu .

Przykłady

Przykład 1

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

System.Security.SecureString

W tym przykładzie dodano wpis tajny o nazwie Secret1 z wartością zwykłego tekstu .SecretValue Ponieważ nie określono nazwy magazynu, wpis tajny jest dodawany do domyślnego magazynu bieżącego użytkownika. Get-Secret pokazuje, że wpis tajny został dodany.

Przykład 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

W tym przykładzie dodano wpis tajny o nazwie Secret2 do LocalStore magazynu. Ponieważ nie podano wartości wpisu tajnego, polecenie cmdlet wyświetla monit o wartość SecureString . Konsola ukrywa wartość ciągu w miarę wpisywania. Get-Secret pokazuje, że wpis tajny został dodany.

Przykład 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]}

W tym przykładzie LocalStore dodano wpis tajny o nazwie TargetSecret do magazynu z metadanymi wskazującymi datę wygaśnięcia wpisu tajnego. Get-SecretInfo pobiera metadane dla nowo utworzonego wpisu tajnego.

Przykład 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.

W tym przykładzie LocalStore2 dodano wpis tajny o nazwie PublishSecret do magazynu z dodatkowymi metadanymi. LocalStore2 Magazyn nie obsługuje jednak metadanych wpisów tajnych, a operacja zwraca błąd.

Parametry

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

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

-Metadata

Określa tabelę skrótu zawierającą pary klucz-wartość do skojarzenia z wpisem tajnym w magazynie. Określony magazyn rozszerzeń może nie obsługiwać metadanych wpisów tajnych. Jeśli magazyn nie obsługuje metadanych, operacja kończy się niepowodzeniem i zwraca błąd. Wartości wszystkich metadanych w tabeli skrótu muszą być jednym z następujących typów:

  • ciąg
  • Int
  • Data/godzina

Metadane nie są bezpiecznie przechowywane w magazynie. Metadane nie powinny zawierać poufnych informacji.

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

-Name

Określa nazwę wpisu tajnego do dodania lub zaktualizowania. Symbole wieloznaczne (*) nie są dozwolone.

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

-NoClobber

Powoduje zwrócenie błędu, jeśli wpis tajny o tej samej nazwie już istnieje w magazynie. Domyślnie to polecenie cmdlet aktualizuje wpis tajny przy użyciu nowej wartości, jeśli już istnieje.

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

-Secret

Określa wartość wpisu tajnego. Obiekt musi być jednym z obsługiwanych typów:

  • Bajt[]
  • Ciąg
  • Securestring
  • PSCredential
  • Hashtable
Type:Object
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SecretInfo

Określa obiekt SecretInformation opisujący przechowywany wpis tajny zwrócony przez .Get-SecretInfo Umożliwia to kopiowanie wpisów tajnych z jednego magazynu rozszerzeń do innego.

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

-SecureStringSecret

Określa wartość wpisu tajnego jako obiekt SecretString .

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

-Vault

Określa nazwę magazynu do dodania lub zaktualizowania wpisu tajnego. Symbole wieloznaczne (*) nie są dozwolone. Domyślnie wpis tajny jest dodawany lub aktualizowany w domyślnym magazynie bieżącego użytkownika.

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

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie jest uruchamiane.

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

Dane wejściowe

Hashtable

Dane wyjściowe

None

Uwagi

Po uruchomieniu Set-Secret polecenia z parametrem Name w celu określenia nazwy wpisu tajnego polecenie cmdlet wywołuje GetSecret() zaimplementowane przez rozszerzenie magazynu. Set-Secret przekazuje nazwę podaną przez użytkownika. Rozszerzenie magazynu wyszukuje wpis tajny według tej nazwy. Jeśli GetGecret() zwraca dopasowanie, zastępuje wpis tajny, Set-Secret chyba że używasz parametru NoClobber . Rozszerzenie magazynu zawsze zapisuje odbierane informacje tajne.

Do implementacji rozszerzenia magazynu należy zdecydować, czy należy użyć porównania z uwzględnieniem wielkości liter w nazwie. Na przykład nazwy wpisów tajnych w magazynie rozszerzeń Microsoft.PowerShell.SecretStore są bez uwzględniania wielkości liter. Jeśli nazwa przekazywana do Set-Secret nazwy różni się tylko wielkością liter od nazwy istniejącego wpisu tajnego w magazynie SecretStore, nazwa zostanie zastąpiona nową wartością.