Set-Secret

Dodaje wpis tajny do zarejestrowanego magazynu SecretManagement.

Składnia

SecureStringParameterSet (domyślnie)

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

Opis

Ważna

Zespół PowerShell zdecydował, że moduły Secret są funkcjonalnie kompletne i nie będą już aktywnie rozwijane. Moduły będą nadal wspierane w zakresie bezpieczeństwa i krytycznych poprawek błędów. Repozytorium kodu zostało zarchiwizowane.

Najnowsze opublikowane wersje to:

Charakter sekretów zasadniczo się zmienił od czasu powstania tego projektu. Metody uwierzytelniania bez hasła, takie jak klucze dostępowe, single log-on oraz federacyjne systemy uwierzytelniania, takie jak Microsoft Entra ID, biometria i sprzętowe klucze bezpieczeństwa, to przyszłość.

To polecenie cmdlet dodaje wartość wpisu tajnego według nazwy do magazynu. Jeśli nazwa magazynu nie zostanie określona, wpis tajny zostanie dodany do magazynu domyślnego. Jeśli wpis tajny o tej nazwie istnieje, zostanie zastąpiony. Dodatkowe dane mogą być dołączane do wpisu tajnego, jeśli są obsługiwane przez magazyn rozszerzeń.

Domyślny zestaw parametrów przyjmuje obiekt SecureString . Jeśli polecenie zostanie uruchomione bez określania wartości wpisu tajnego, polecenie cmdlet wyświetli monit o wprowadzenie elementu 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 ze zwykłą wartością SecretValuetekstową . 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 magazynu LocalStore . Ponieważ nie podano żadnej wartości wpisu tajnego, polecenie cmdlet monituje o wartość SecureString . Konsola ukrywa wartość ciągu podczas jej 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 do magazynu dodawany jest wpis tajny o nazwie TargetSecretLocalStore 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: Can't store secret PublishSecret. Vault LocalStore2 doesn't support secret metadata.

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

Parametry

-Confirm

Prosi o potwierdzenie przed uruchomieniem cmdletu.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:por

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Metadata

Określa tabelę skrótów zawierającą pary klucz-wartość, które mają zostać skojarzone z wpisem tajnym w magazynie. Określony magazyn rozszerzenia może nie obsługiwać metadanych wpisów tajnych. Jeśli magazyn nie obsługuje metadanych, operacja zakończy się niepowodzeniem i zwróci błąd. Wartości wszystkich metadanych w tabeli skrótów muszą należeć do jednego z następujących typów:

  • ciąg
  • int
  • Data i czas

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

Właściwości parametru

Typ:Hashtable
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

SecureStringParameterSet
Position:1
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
ObjectParameterSet
Position:1
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Name

Określa nazwę wpisu tajnego, który ma zostać dodany lub zaktualizowany. Symbole wieloznaczne (*) są niedozwolone.

Właściwości parametru

Typ:String
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

SecureStringParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
ObjectParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-NoClobber

Powoduje, że polecenie zwraca błąd, jeśli wpis tajny o tej samej nazwie już istnieje w repozytorium. Domyślnie to polecenie cmdlet aktualizuje wpis tajny przy użyciu nowej wartości, jeśli już istnieje.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Secret

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

  • Bajt[]
  • String
  • SecureString
  • PSCredential
  • Tabela skrótów

Właściwości parametru

Typ:Object
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

ObjectParameterSet
Position:Named
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-SecretInfo

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

Właściwości parametru

Typ:Microsoft.PowerShell.SecretManagement.SecretInformation
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

SecretInfoParameterSet
Position:Named
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-SecureStringSecret

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

Właściwości parametru

Typ:SecureString
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

SecureStringParameterSet
Position:Named
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Vault

Określa nazwę magazynu, w którym ma zostać dodany lub zaktualizowany wpis tajny. Symbole wieloznaczne (*) są niedozwolone. Domyślnie wpis tajny jest dodawany lub aktualizowany w domyślnym magazynie bieżącego użytkownika.

Właściwości parametru

Typ:String
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

SecureStringParameterSet
Position:2
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
ObjectParameterSet
Position:2
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-WhatIf

Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Cmdlet nie został uruchomiony.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False
Aliasy:Wi

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

CommonParameters

To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Dane wejściowe

Hashtable

Dane wyjściowe

None

Notatki

Po uruchomieniu Set-Secret z parametrem Name w celu określenia nazwy wpisu tajnego wywołania GetSecret() polecenia cmdlet są implementowane przez rozszerzenie magazynu. Set-Secret przechodzi przez nazwę podaną przez użytkownika. Rozszerzenie magazynu wyszukuje wpis tajny o tej nazwie. Jeśli GetSecret() zwraca dopasowanie, zastępuje wpis tajny, Set-Secret chyba że użyjesz parametru NoClobber . Rozszerzenie magazynu zawsze zapisuje otrzymane informacje tajne.

To zależy od implementacji rozszerzenia magazynu, aby zdecydować, czy użyć porównania z uwzględnieniem wielkości liter w nazwie. Na przykład w nazwach wpisów tajnych w magazynie rozszerzenia Microsoft.PowerShell.SecretStore nie jest rozróżniana wielkość liter. Jeśli nazwa, do Set-Secret której przekazujesz, różni się tylko wielkością liter od nazwy istniejącego wpisu tajnego w magazynie sekretów, nazwa zostanie zastąpiona nową podaną wartością.