29

-noexitPowerShell用の小さなスイッチがあることを私は知っています。

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

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

4

10 に答える 10

28

基本的に、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を探しているようですね。

于 2014-07-07T22:38:05.590 に答える
19

このスクリプトは、引数なしで実行した場合、たとえばダブルクリックして実行した場合は終了しません。

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'
于 2012-02-20T17:04:42.740 に答える
14

やってみました

$host.enternestedprompt()

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

于 2012-02-20T17:15:25.413 に答える
10
"do stuff"
Pause

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

do stuff
Press Enter to continue...:
于 2013-11-29T23:47:52.477 に答える
4

コマンドを使用して呼び出されなかった場合にシェルが終了するのを防ぐスクリプトで実行できるコマンドを認識していません-noexit

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

于 2012-02-20T14:38:49.920 に答える
3

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

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

于 2014-02-19T00:51:22.660 に答える
2

このような?

PowerShell -File  c:\myscript.ps1 -NoExit
于 2012-02-20T14:34:21.223 に答える
1

別の方法は、を使用すること$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")
于 2021-02-07T00:35:26.923 に答える
-1
Powershell -noexit -command {
$a=1
Echo $a
} # End block
# Script ends but PowerShell windows remains.
于 2021-04-27T14:17:08.660 に答える
-7

6年前のスレッドなどを復活させるためではありませんが、スクリプトを終了できることを読んでいる人には注意が必要です。

Stop-Process -processname regedit

レジストリの微調整(グローバル修正)を有効にしていて、実際に自動的に閉じるスクリプトを実行したい場合。

于 2018-04-26T06:47:22.513 に答える