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