PowerShell 2.0에서 '일시 중지'를 수행하는 방법은 무엇입니까?
좋아요, 잃어가고 있어요.PowerShell은 저를 짜증나게 합니다.일시 중지 대화 상자가 표시되면 표시되지 않습니다.
PS W:\>>> $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Exception calling "ReadKey" with "1" argument(s): "The method or operation is not implemented."
At line:1 char:23
+ $host.UI.RawUI.ReadKey <<<< ("NoEcho")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
명확한 설명을 위해 여기서 선택 사항을 요약/요약할 가치가 있다고 생각합니다.그리고 최고의 유용성을 제공하는 새로운 버전을 제공합니다.
읽기 키(시스템).콘솔)
write-host "Press any key to continue..."
[void][System.Console]::ReadKey($true)
- 장점:모든 키를 사용할 수 있지만 Shift, Alt, Ctrl 수정자 키는 제대로 제외합니다.
- 단점:PS-ISE에서는 작동하지 않습니다.
읽기 키(원시)UI)
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
- 단점:PS-ISE에서는 작동하지 않습니다.
- 단점:한정자 키를 제외하지 않습니다.
cmd
cmd /c Pause | Out-Null
- 단점:PS-ISE에서는 작동하지 않습니다.
- 단점:처음 사용할 때 눈에 띄게 새 셸/창을 시작합니다. 이후 사용할 때는 눈에 띄지 않지만 오버헤드가 있습니다.
읽기-호스트
Read-Host -Prompt "Press Enter to continue"
- 장점:PS-ISE에서 작동합니다.
- 단점:Enter 키만 사용할 수 있습니다.
읽기 키 컴포지트
Adam's Tech Blog의 제안서에서 추출한 ISE 해결 방법/Kully와 위의 <1>을 합성한 것입니다(이 페이지의 이전 의견에서 Nick에게 감사드립니다).후자에 대해 두 가지 약간의 개선을 했습니다. 엄격한 설정 모드(사용자가 사용하는 경우)를 사용하는 경우 오류를 방지하기 위해 테스트 경로를 추가한 것과 키 입력 후 새 줄을 추가하여 프롬프트를 올바른 위치에 배치하는 최종 쓰기 호스트를 추가한 것입니다.
Function Pause ($Message = "Press any key to continue . . . ") {
if ((Test-Path variable:psISE) -and $psISE) {
$Shell = New-Object -ComObject "WScript.Shell"
$Button = $Shell.Popup("Click OK to continue.", 0, "Script Paused", 0)
}
else {
Write-Host -NoNewline $Message
[void][System.Console]::ReadKey($true)
Write-Host
}
}
- 장점:모든 키를 사용할 수 있지만 Shift, Alt, Ctrl 수정자 키는 제대로 제외합니다.
- 장점:PS-ISE에서 작동(Enter 또는 마우스 클릭만으로 작동)
- 단점:원라이너가 아닙니다!
cmd /c pause | out-null
(PowerShell 방식은 아니지만 훨씬 더 우아합니다.)
나무를 구합니다.한 줄기를 사용합니다.
콘솔에서 입력을 읽으려고 하는 것 같습니다.사용할 경우 를 사용합니다.
다음과 같은 솔루션cmd /c pause
새 명령 인터프리터가 백그라운드에서 시작 및 실행되도록 합니다.어떤 경우에는 허용되지만, 이것은 정말 이상적이지 않습니다.
사용하는 솔루션Read-Host
를 눌러야 하며 실제로는 "아무 키"가 아닙니다.
이 솔루션은 진정한 "계속하려면 아무 키나 누르기" 인터페이스를 제공하며 기본적으로 원본과 유사한 새 인터프리터를 시작하지 않습니다.pause
지휘권
Write-Host "Press any key to continue..."
[void][System.Console]::ReadKey($true)
새 프로세스에서 키 읽기
Start-Process PowerShell {[void][System.Console]::ReadKey($true)} -Wait -NoNewWindow
- 장점:모든 키를 사용할 수 있지만 Shift, Alt, Ctrl 수정자 키는 제대로 제외합니다.
- 장점:PS-ISE에서 작동합니다.
10년 후에 나는 여기에 왔습니다.언제부터인지는 모르지만, "일시 중지"는 DOS 명령줄에서와 마찬가지로 PowerShell에서 작동합니다.
사할수있다니습을 사용하는 입니다.FlushInputBuffer
특히 의 경우 사하기용문삭입다제를 사용하기 합니다. 특히 장시간 실행되는 작업의 경우ReadKey
:
Write-Host -NoNewLine 'Press any key to continue...'
$Host.UI.RawUI.FlushInputBuffer()
$Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown') | Out-Null
키에 타이머를 추가하려면 PS 5.1에서 작동합니다.
$i=1
while (
!([Console]::KeyAvailable) -and
($i -le 10)
) {
sleep 1
Write-Host “$i..” -NoNewLine
$i++
}
c# $Host에 대한 KeyAvailable 메서드에 유의하십시오.UI.RawUI는 현재 수많은 PS 버전에서 PS 2 또는 3 이후에 버그가 발생하고 있습니다.
옵션 <5>의 PS-ISE용 원라이너는 Michael Sorens의 답변에 있습니다.
[Void][Windows.Forms.MessageBox]::Show("Click OK to continue.", "Script Paused")
언급URL : https://stackoverflow.com/questions/3963100/how-do-you-do-a-pause-with-powershell-2-0
'programing' 카테고리의 다른 글
VBA에서 텍스트 파일을 한 줄씩 읽고 구문 분석 (0) | 2023.04.28 |
---|---|
비동기 셸 명령 (0) | 2023.04.28 |
ASP에서 파일(FileContentResult)을 반환하는 방법.NET 웹 API (0) | 2023.04.28 |
.NET 문자열.형식() - 숫자에 대해 수천 개의 위치에 쉼표를 추가합니다. (0) | 2023.04.28 |
카르마/재스민 테스트에서 "[object ErrorEvent] sloted" 오류를 디버깅하려면 어떻게 해야 합니까? (0) | 2023.04.28 |