Set-Secret
Aggiunge un segreto a un insieme di credenziali registrato SecretManagement.
Sintassi
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>]
Descrizione
Questo cmdlet aggiunge un valore segreto in base al nome a un insieme di credenziali. Quando non viene specificato alcun nome dell'insieme di credenziali, il segreto viene aggiunto all'insieme di credenziali predefinito. Se esiste un segreto con tale nome, viene sovrascritto. È possibile includere dati aggiuntivi con il segreto, se supportato dall'insieme di credenziali delle estensioni.
Il set di parametri predefinito accetta un oggetto SecureString . Se si esegue il comando senza specificare il valore del segreto, il cmdlet richiede di immettere secureString. Il testo della stringa non è visibile nella console.
Esempio
Esempio 1
Set-Secret -Name Secret1 -Secret "SecretValue"
Get-Secret -Name Secret1
System.Security.SecureString
In questo esempio viene aggiunto un segreto denominato Secret1
con un valore di testo normale .SecretValue
Poiché non è stato specificato alcun nome dell'insieme di credenziali, il segreto viene aggiunto all'insieme di credenziali predefinito dell'utente corrente. Get-Secret
mostra che il segreto è stato aggiunto.
Esempio 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 questo esempio viene aggiunto un segreto denominato Secret2
all'insieme LocalStore
di credenziali. Poiché non è stato specificato alcun valore segreto, il cmdlet richiede un valore SecureString . La console nasconde il valore stringa digitato. Get-Secret
mostra che il segreto è stato aggiunto.
Esempio 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 questo esempio viene aggiunto un segreto denominato TargetSecret
all'insieme LocalStore
di credenziali con i metadati che indicano la data di scadenza del segreto. Get-SecretInfo
recupera i metadati per il segreto appena creato.
Esempio 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 questo esempio viene aggiunto un segreto denominato PublishSecret
all'insieme LocalStore2
di credenziali con metadati aggiuntivi.
Tuttavia, l'insieme LocalStore2
di credenziali non supporta i metadati dei segreti e l'operazione restituisce un errore.
Parametri
-Confirm
Richiede la conferma dell'utente prima di eseguire il cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Metadata
Specifica una tabella Hash contenente coppie chiave-valore da associare al segreto nell'insieme di credenziali. L'insieme di credenziali delle estensioni specificato potrebbe non supportare i metadati dei segreti. Se l'insieme di credenziali non supporta i metadati, l'operazione ha esito negativo e restituisce un errore. I valori di tutti i metadati nella tabella hash devono essere uno dei tipi seguenti:
- string
- int
- DateTime
I metadati non vengono archiviati in modo sicuro in un insieme di credenziali. I metadati non devono contenere informazioni riservate.
Type: | Hashtable |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Specifica il nome del segreto da aggiungere o aggiornare. I caratteri jolly (*
) non sono consentiti.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoClobber
Fa sì che il comando restituisca un errore se un segreto con lo stesso nome esiste già nell'insieme di credenziali. Per impostazione predefinita, questo cmdlet aggiorna il segreto con il nuovo valore, se già esistente.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Secret
Specifica il valore del segreto. L'oggetto deve essere uno dei tipi supportati:
- Byte[]
- Stringa
- Securestring
- PSCredential
- Hashtable
Type: | Object |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SecretInfo
Specifica un oggetto SecretInformation che descrive un segreto archiviato restituito da Get-SecretInfo
.
In questo modo è possibile copiare i segreti da un insieme di credenziali delle estensioni a un altro.
Type: | SecretInformation |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SecureStringSecret
Specifica il valore del segreto come oggetto SecretString .
Type: | SecureString |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Vault
Specifica il nome dell'insieme di credenziali in cui aggiungere o aggiornare il segreto. I caratteri jolly (*
) non sono consentiti. Per impostazione predefinita, il segreto viene aggiunto o aggiornato nell'insieme di credenziali predefinito dell'utente corrente.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Mostra l'esito in caso di esecuzione del cmdlet. Il cmdlet non viene eseguito.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
Output
None
Note
Quando si esegue Set-Secret
con il parametro Name per specificare il nome del segreto, il cmdlet chiama GetSecret()
implementato dall'estensione dell'insieme di credenziali. Set-Secret
passa attraverso il nome fornito dall'utente. L'estensione dell'insieme di credenziali cerca il segreto in base a tale nome. Se GetGecret()
restituisce una corrispondenza, sovrascrive il segreto a Set-Secret
meno che non si usi il parametro NoClobber . L'estensione dell'insieme di credenziali scrive sempre le informazioni segrete ricevute.
Spetta all'implementazione dell'estensione dell'insieme di credenziali decidere se usare o meno un confronto con distinzione tra maiuscole e minuscole sul nome. Ad esempio, i nomi dei segreti nell'insieme di credenziali delle estensioni Microsoft.PowerShell.SecretStore non fanno distinzione tra maiuscole e minuscole. Se il nome passato a Set-Secret
è diverso solo per caso con il nome di un segreto esistente in un insieme di credenziali SecretStore, il nome viene sovrascritto con il nuovo valore specificato.