Share via


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

Hashtable

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.