파워셸에서 우아하게 멈춘다.
PowerShell 스크립트에서 +를 캡처하고 C처리하는 방법은 무엇입니까?v2의 cmdlet에서 v2에 대한 재정의를 포함하여 이 작업을 수행할 수 있습니다.Powershell.Stop()
메서드입니다. 스크립트에 사용할 아날로그를 찾을 수 없습니다.
현재 블록을 통해 정리를 수행하고 있지만 스크립트가 취소될 때(완료까지 실행하는 것이 아니라) 추가 작업을 수행해야 합니다.
Try-catch-finally에 대한 설명서는 다음과 같습니다.
Ctrl+C를 사용하여 스크립트를 중지하더라도 Finally 블록이 실행됩니다.종료 키워드가 캐치 블록 내에서 스크립트를 중지하는 경우에도 Finally 블록이 실행됩니다.
다음 예를 참조하십시오.실행하고 를 눌러 취소합니다.ctrl-c
.
try
{
while($true)
{
"Working.."
Start-Sleep -Seconds 1
}
}
finally
{
write-host "Ended work."
}
여기에 설명된 방법을 PoshCode에서 사용할 수 있습니다.
요약:.
세트
[console]::TreatControlCAsInput = $true
그런 다음 사용자 입력을 위해 폴링합니다.
if($Host.UI.RawUI.KeyAvailable -and (3 -eq
[int]$Host.UI.RawUI.ReadKey("AllowCtrlC,IncludeKeyUp,NoEcho").Character))
또한 다음이 있습니다.Stopping
에 대한 재산.$PSCmdlet
여기에 사용할 수 있습니다.
여기 최근에 작동하는 해결책이 있습니다.실행 중단(파일 핸들 닫기)을 제어해야 하는 루프에서 if 부분을 사용합니다.
[Console]::TreatControlCAsInput = $true # at beginning of script
if ([Console]::KeyAvailable){
$readkey = [Console]::ReadKey($true)
if ($readkey.Modifiers -eq "Control" -and $readkey.Key -eq "C"){
# tasks before exit here...
return
}
}
또한 스크립트를 시작할 때 KeyAvailable이 참이 되도록 하는 버그가 있습니다.시작할 때 ReadKey를 한 번 불러옴으로써 완화할 수 있습니다.이 접근 방식에는 필요하지 않으며, 이러한 맥락에서 알 가치가 있습니다.
언급URL : https://stackoverflow.com/questions/1710698/gracefully-stopping-in-powershell
'programing' 카테고리의 다른 글
단일 Git 커밋에 대해 구성된 사용자 재정의 (0) | 2023.08.12 |
---|---|
"신호 15 수신"이란 무엇입니까? (0) | 2023.08.12 |
Android에서 EditText의 문자를 제한하려면 InputFilter를 어떻게 사용합니까? (0) | 2023.08.12 |
Node.JS 폴더의 파일 루프 (0) | 2023.08.12 |
Python에서 하위 프로세스, 멀티프로세싱 및 스레드 중에서 결정하시겠습니까? (0) | 2023.08.12 |