AFAIK, es ist nicht möglich, die Antwort des Benutzers auf die Bestätigungsaufforderung zu erfassen; Es ist kein Teil des Befehlsverlaufs von PowerShell, und obwohl Sie möglicherweise die Informationen aus dem Puffer abrufen können, die nur vom standardmäßigen PowerShell-Host unterstützt werden, da andere Hosts andere Puffer verwenden. In diesem Fall ist es wahrscheinlich am besten, entweder eine separate Bestätigung in Ihrem Skript mit einer if-Anweisung durchzuführen.
$userAnswer = Read-Host "Are you sure you wish to proceed?"
if($userAnswer -eq "yes"){
rm .\foo.txt
}
Verwenden Sie dann einfach die Variable $ userAnswer, um zu wissen, auf was Ihr Benutzer geantwortet hat. Alternativ könnten Sie ihre Antwort ermitteln, indem Sie überprüfen, ob der Vorgang abgeschlossen wurde. Dies wäre meine bevorzugte Methode, da Sie sicher sind, dass die Datei gelöscht wurde, anstatt dies anzunehmen, weil das Cmdlet erfolgreich ausgeführt und der Benutzer bestätigt hat (die Zuverlässigkeit ist wahrscheinlich nicht anders, wenn man bedenkt, dass remove-item unglaublich gut getestet wurde) Es könnte einen Unterschied machen, wenn Sie eine Drittanbieter-Bibliothek einer Art verwenden, die in etwa so aussehen würde wie unten.
rm .\foo.txt -Confirm
if(Test-Path .\foo.txt){
$success = $false
} else {
$success = $true
}
und wenn Sie wirklich wissen müssen, ob es aufgrund eines Fehlers oder den Benutzer löschen fehlgeschlagen nein sagen Sie so etwas wie
rm .\foo.txt -Confirm
if(Test-Path .\foo.txt){
$success = $false
} else {
$success = $true
}
if(!($success) -and (!($?))){
$status = "Previous command failed"
} elseif (!($success) -and $?){
$status = "User cancelled operation"
}
Hoffnung machen könnte, das hilft.
Danke für die schnelle Antwort und die Arbeit um. :) –