あの小さな_-noexit
PowerShellのスイッチ。
そのスイッチを使用せずにシェルにとどまる方法はありますか?
つまり、実行してからシェルを開いたままにするスクリプトコマンドが必要です。
引数なしで実行すると、このスクリプトは終了しません。それをダブルクリックして:
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'
基本的に、PowerShellコンソールウィンドウが閉じないようにするための3つのオプションがあります。これについては ブログの投稿で詳しく説明します と説明します。
PowerShell -NoExit "C:\SomeFolder\SomeScript.ps1"
Read-Host -Prompt "Press Enter to exit"
変更するレジストリキーの詳細については、私のブログを参照してください。
オプション#1または#3を探しているように聞こえます。
やってみました
$Host.enternestedprompt()
実行が停止され、ネストされたプロンプトにドロップされます。ユーザーがそのプロンプトを終了すると、スクリプトが終了し、ウィンドウが閉じます。
"do stuff"
Pause
はい、コマンドラインと同じように-出力:
do stuff
Press Enter to continue...:
この簡単なスクリプトの最後にあるwhileループは、コマンドの入力を求めて実行します。スクリプトの環境で実行されるため、変数の値を確認できます。 「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 }
}
他の人がいくつかの改良点を共有できると確信していますが、これは始まりです。よろしく。
-noexit
コマンドを使用してシェルを起動しなかった場合に、シェルが終了しないようにするスクリプトで実行できるコマンドについては知りません。
シェルを閉じたくない場合は、通常、最後にRead-Host "Press ENTER to continue"
を使用します。ただし、-noexit
で起動されていなかった場合、Enterキーを押した後、シェルが閉じるのを防ぐことはできません。
このような?
PowerShell -File c:\myscript.ps1 -NoExit