programing

파워셸 퇴장 중지

newsource 2023. 10. 17. 20:18

파워셸 퇴장 중지

그 정도로 적은 것은 알고 있습니다.-noexitPowerShell로 전환합니다.

그 스위치를 사용하지 않고 껍데기 안에 머물 수 있는 방법이 있습니까?

다시 말해, 실행한 다음 셸을 열어두는 스크립트 명령을 원합니다.

기본적으로 PowerShell Console 창이 닫히지 않도록 하는 3가지 옵션이 있습니다. 블로그 게시물에 자세히 설명해 드립니다.

  1. 일회성 수정: PowerShell Console에서 스크립트를 실행하거나 -NoExit 스위치를 사용하여 PowerShell 프로세스를 시작합니다.PowerShell -NoExit "C:\SomeFolder\SomeScript.ps1"
  2. 스크립트별 수정(Per-script Fix): 스크립트 파일 끝에 입력 프롬프트를 추가합니다.Read-Host -Prompt "Press Enter to exit"
  3. Global Fix: 스크립트 실행이 끝나면 항상 PowerShell Console 창이 열려 있도록 레지스트리 키를 변경합니다.

수정할 레지스트리 키에 대한 자세한 내용은 내 블로그를 참조하십시오.

1번이나 3번 옵션을 찾으시는 것 같습니다.

이 스크립트는 인수 없이 실행하는 경우(예: 두 번 클릭) 종료되지 않습니다.

param($Work)

# restart PowerShell with -noexit, the same script, and 1
if (!$Work) {
    powershell -noexit -file $MyInvocation.MyCommand.Path 1
    return
}

# now the script does something
# this script just outputs this:
'I am not exiting'

해보셨습니까?

$host.enternestedprompt()

그러면 실행이 중지되고 중첩 프롬프트로 드롭됩니다.해당 프롬프트를 종료하면 스크립트가 종료되고 창이 닫힙니다.

"do stuff"
Pause

예, 명령줄 -- 출력과 마찬가지로:

do stuff
Press Enter to continue...:

나는 당신이 스크립트에서 실행할 수 있는 명령을 알지 못합니다. 만약 셸이 실행되지 않았다면 셸이 빠져나가지 못하게 할 것입니다.-noexit지휘.

제가 주로 사용하는 것은Read-Host "Press ENTER to continue"포탄이 닫히지 않으려면요그러나 셸을 시작하지 않은 경우 Enter 키를 누른 후 셸이 닫히지 않습니다.-noexit.

이 사소한 스크립트 끝에 있는 while loop이 명령을 요구하고 실행합니다.스크립트의 환경과 함께 실행되므로 변수 값 확인이 가능합니다."exit"을 입력하면 루프가 실행되면 루프가 종료됩니다.

# Do something.

cd D:\temp
$current_directory = $(pwd)
dir

write-host  # Just add a little space after the dir

# Stay in the shell and execute commands.

while ($TRUE) {
  $cmd = Read-Host "PS $(pwd)"
  if ($cmd[0] -eq '"') { iex "& $cmd" } 
    else { iex $cmd }
}

다른 사람들도 몇 가지 개선점을 공유할 수 있을 것이라고 확신하지만, 이것은 시작입니다.안부 전해요.

이렇게요?

PowerShell -File  c:\myscript.ps1 -NoExit

다른 방법은 사용하는 것입니다.$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown").

다른 답변과 결합하면 다음과 같은 몇 가지 옵션은 다음과 같습니다.

    1. 명령 프롬프트 실행에서:PowerShell -NoExit "Path\to\Script\script.ps1"
    1. 스크립트 끝에 추가:pause
    1. 스크립트 끝에 추가:read-Host -Prompt "Press Enter to exit"
    1. 스크립트 끝에 추가:$host.enternestedprompt()
    1. 스크립트 끝에 추가:$null = host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Powershell -noexit -command {
$a=1
Echo $a
} # End block
# Script ends but PowerShell windows remains.

6살짜리 실타래 같은 것을 되살리는 것이 아니라, 대본을 끝맺을 수 있다는 것을 읽는 누구에게나 주목해야 합니다.

Stop-Process -processname regedit

레지스트리 조정(글로벌 수정)을 실행하고 실제로 자동으로 closing 스크립트를 실행하려는 경우.

언급URL : https://stackoverflow.com/questions/9362722/stop-powershell-from-exiting