Powershell komut dosyaları, ctrl-c tuşuna basarak kullanıcı tarafından kolayca sonlandırılabilir. Bir Powershell betiğinin ctrl-c'yi yakalaması ve kullanıcıya betiği gerçekten sonlandırmak isteyip istemediğini onaylamasını istemek için bir yol var mı?Ctrl-c'yi yakalamanın ve kullanıcının onaylamasını istemek için bir yol var mı?
5
A
cevap
2
Ödeme this post on the MSDN forums. Eğer onay bir GUI MessageBox kullanmak istemiyorsanız
[console]::TreatControlCAsInput = $true
while ($true)
{
write-host "Processing..."
if ([console]::KeyAvailable)
{
$key = [system.console]::readkey($true)
if (($key.modifiers -band [consolemodifiers]"control") -and ($key.key -eq "C"))
{
Add-Type -AssemblyName System.Windows.Forms
if ([System.Windows.Forms.MessageBox]::Show("Are you sure you want to exit?", "Exit Script?", [System.Windows.Forms.MessageBoxButtons]::YesNo) -eq "Yes")
{
"Terminating..."
break
}
}
}
}
, bunun yerine Salt ana bilgisayar kullanabilir veya Host.UI.RawUI.ReadKey David onun cevabını gösterdi() olarak $.
2
while ($true)
{
Write-Host "Do this, do that..."
if ($Host.UI.RawUI.KeyAvailable -and (3 -eq [int]$Host.UI.RawUI.ReadKey("AllowCtrlC,IncludeKeyUp,NoEcho").Character))
{
Write-Host "You pressed CTRL-C. Do you want to continue doing this and that?"
$key = $Host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown")
if ($key.Character -eq "N") { break; }
}
}
+0
Bu yüzden tüm kodlarımın etrafına sarmak zorunda mıyım? –
+0
$ host.ui.rawui.readkey() kullanan diğer kodlarla çakışmaz mı? –
Tam tersini yapmanın bir yolunu arıyorum. Powershell DAİMA sonlandırmayı onaylamamı istedi. –
Bunu yapmak için nasıl aldın? –
Windows 7'yi yüklediğimde nasıldı? beni deli ediyor! –