Richiesta di conferma dai cmdlet
I cmdlet devono richiedere conferma quando stanno per apportare una modifica al sistema esterno all'Windows PowerShell locale. Ad esempio, se un cmdlet sta per aggiungere un account utente o arrestare un processo, il cmdlet deve richiedere conferma all'utente prima di procedere. Al contrario, se un cmdlet sta per modificare una variabile Windows PowerShell, non è necessario che il cmdlet richieda la conferma.
Per effettuare una richiesta di conferma, il cmdlet deve indicare che supporta le richieste di conferma e deve chiamare i metodi System.Management.Automation.Cmdlet.ShouldProcess e System.Management.Automation.Cmdlet.ShouldContinue (facoltativo) per visualizzare un messaggio di richiesta di conferma.
Supporto delle richieste di conferma
Per supportare le richieste di conferma, il cmdlet deve impostare il SupportsShouldProcess
parametro dell'attributo Cmdlet su true
. In questo modo Confirm
vengono WhatIf
abilitati i parametri del cmdlet e forniti da Windows PowerShell. Il Confirm
parametro consente all'utente di controllare se viene visualizzata la richiesta di conferma. Il WhatIf
parametro consente all'utente di determinare se il cmdlet deve visualizzare un messaggio o eseguire la relativa azione. Non aggiungere manualmente i Confirm
parametri e a un WhatIf
cmdlet.
Nell'esempio seguente viene illustrata una dichiarazione di attributo Cmdlet che supporta le richieste di conferma.
[Cmdlet(VerbsDiagnostic.Test, "RequestConfirmationTemplate1",
SupportsShouldProcess = true)]
Chiamata dei metodi di richiesta di conferma
Nel codice del cmdlet chiamare il metodo System.Management.Automation.Cmdlet.ShouldProcess prima che venga eseguita l'operazione che modifica il sistema. Progettare il cmdlet in modo che se la chiamata restituisce il valore , l'operazione non viene eseguita e il cmdlet elabora false
l'operazione successiva.
Chiamata del metodo ShouldContinue
La maggior parte dei cmdlet richiede la conferma usando solo il metodo System.Management.Automation.Cmdlet.ShouldProcess. Tuttavia, in alcuni casi potrebbe essere necessaria una conferma aggiuntiva. In questi casi, integrare la chiamata System.Management.Automation.Cmdlet.ShouldProcess con una chiamata al metodo System.Management.Automation.Cmdlet.ShouldContinue. Ciò consente al cmdlet o al provider di controllare in modo più fine l'ambito di Sì a tutte le risposte alla richiesta di conferma.
Se un cmdlet chiama il metodo System.Management.Automation.Cmdlet.ShouldContinue, anche il cmdlet deve fornire un Force
parametro switch. Se l'utente specifica quando l'utente richiama il cmdlet, il cmdlet deve comunque chiamare Force
System.Management.Automation.Cmdlet.ShouldProcess, ma deve ignorare la chiamata a System.Management.Automation.Cmdlet.ShouldContinue.
System.Management.Automation.Cmdlet.ShouldContinue genererà un'eccezione quando viene chiamato da un ambiente non interattivo in cui l'utente non può essere richiesto. L'aggiunta di un parametro garantisce che il comando possa comunque essere eseguito quando Force
viene richiamato in un ambiente non interattivo.
Nell'esempio seguente viene illustrato come chiamare System.Management.Automation.Cmdlet.ShouldProcess e System.Management.Automation.Cmdlet.ShouldContinue.
if (ShouldProcess (...) )
{
if (Force || ShouldContinue(...))
{
// Add code that performs the operation.
}
}
Il comportamento di una chiamata System.Management.Automation.Cmdlet.ShouldProcess può variare a seconda dell'ambiente in cui viene richiamato il cmdlet. L'uso delle linee guida precedenti consente di garantire che il cmdlet si comporti in modo coerente con altri cmdlet, indipendentemente dall'ambiente host.
Per un esempio di chiamata del metodo System.Management.Automation.Cmdlet.ShouldProcess, vedere Come richiedere conferme.
Specificare il livello di impatto
Quando si crea il cmdlet, specificare il livello di impatto (la gravità) della modifica. A tale scopo, impostare il valore del ConfirmImpact
parametro dell'attributo Cmdlet su High, Medium o Low. È possibile specificare un valore solo ConfirmImpact
per quando si specifica anche il parametro per il cmdlet SupportsShouldProcess
.
Per la maggior parte dei cmdlet non è necessario specificare in modo esplicito ConfirmImpact
. Usare invece l'impostazione predefinita del parametro , che è Medium. Se si imposta ConfirmImpact
su Alta, l'operazione verrà confermata per impostazione predefinita. Riservare questa impostazione per azioni altamente dannose, ad esempio la riformattazione di un volume del disco rigido.
Chiamata di metodi non di conferma
Se il cmdlet o il provider deve inviare un messaggio ma non richiedere conferma, può chiamare i tre metodi seguenti. Evitare di usare il metodo System.Management.Automation.Cmdlet.WriteObject per inviare messaggi di questi tipi perché l'output di System.Management.Automation.Cmdlet.WriteObject è associato al normale output del cmdlet o del provider, il che rende difficile la scrittura di script.
Per prestare attenzione all'utente e continuare con l'operazione, il cmdlet o il provider può chiamare il metodo System.Management.Automation.Cmdlet.WriteWarning.
Per fornire informazioni aggiuntive che l'utente può recuperare usando il parametro , il cmdlet o il provider può chiamare
Verbose
il metodo System.Management.Automation.Cmdlet.WriteVerbose.Per fornire dettagli a livello di debug per altri sviluppatori o per il supporto del prodotto, il cmdlet o il provider può chiamare il metodo System.Management.Automation.Cmdlet.WriteDebug. L'utente può recuperare queste informazioni usando il
Debug
parametro .
I cmdlet e i provider chiamano prima i metodi seguenti per richiedere la conferma prima di tentare di eseguire un'operazione che modifica un sistema all'esterno di Windows PowerShell:
Questa operazione viene eseguita chiamando il metodo System.Management.Automation.Cmdlet.Shouldprocess, che richiede all'utente di confermare l'operazione in base al modo in cui l'utente ha richiamato il comando.
Vedere anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per