web-dev-qa-db-ja.com

Powershellの終了を停止します

あの小さな_-noexit PowerShellのスイッチ。

そのスイッチを使用せずにシェルにとどまる方法はありますか?

つまり、実行してからシェルを開いたままにするスクリプトコマンドが必要です。

17
rhavin

引数なしで実行すると、このスクリプトは終了しません。それをダブルクリックして:

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'
14
Roman Kuzmin

基本的に、PowerShellコンソールウィンドウが閉じないようにするための3つのオプションがあります。これについては ブログの投稿で詳しく説明します と説明します。

  1. 1回限りの修正:PowerShellコンソールからスクリプトを実行するか、-NoExitスイッチを使用してPowerShellプロセスを起動します。例えばPowerShell -NoExit "C:\SomeFolder\SomeScript.ps1"
  2. スクリプトごとの修正:スクリプトファイルの最後に入力のプロンプトを追加します。例えばRead-Host -Prompt "Press Enter to exit"
  3. グローバル修正:レジストリキーを変更して、スクリプトの実行が終了した後、常にPowerShellコンソールウィンドウを開いたままにします。

変更するレジストリキーの詳細については、私のブログを参照してください。

オプション#1または#3を探しているように聞こえます。

18
deadlydog

やってみました

$Host.enternestedprompt()

実行が停止され、ネストされたプロンプトにドロップされます。ユーザーがそのプロンプトを終了すると、スクリプトが終了し、ウィンドウが閉じます。

10
mjolinor
"do stuff"
Pause

はい、コマンドラインと同じように-出力:

do stuff
Press Enter to continue...:
3
Kris Morness

この簡単なスクリプトの最後にある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 }
}

他の人がいくつかの改良点を共有できると確信していますが、これは始まりです。よろしく。

3
Jim Marek

-noexitコマンドを使用してシェルを起動しなかった場合に、シェルが終了しないようにするスクリプトで実行できるコマンドについては知りません。

シェルを閉じたくない場合は、通常、最後にRead-Host "Press ENTER to continue"を使用します。ただし、-noexitで起動されていなかった場合、Enterキーを押した後、シェルが閉じるのを防ぐことはできません。

2
Andy Arismendi

このような?

PowerShell -File  c:\myscript.ps1 -NoExit
1
CB.