Powershellコマンドラインで多くのことをしているときに、ある時点でまたはのようなコマンドラインアプリケーションの実行を停止しますが、Powershell関数などを実行し続けるという奇妙な問題がありcmd.exe
ますmore.com
。新しい Powershell ウィンドウを開くことができます
状況
- Powershell コミュニティ拡張機能を使用しています
- Powershell プロファイルを持っています
- 私が書いているスクリプトをデバッグしようとすると、これに遭遇するようです(詳細は後述)。
例による問題
通常、ping を実行すると、次のような通常の出力が表示されるはずです。
PS> ping google.com
Pinging google.com [74.125.227.78] with 32 bytes of data:
Reply from 74.125.227.78: bytes=32 time=30ms TTL=49
Reply from 74.125.227.78: bytes=32 time=38ms TTL=49
Reply from 74.125.227.78: bytes=32 time=31ms TTL=49
Reply from 74.125.227.78: bytes=32 time=32ms TTL=49
Ping statistics for 74.125.227.78:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 30ms, Maximum = 38ms, Average = 32ms
PS>
ただし、この問題が発生すると、PS プロンプトがすぐに返されます。
PS> ping google.com
PS>
この間、ping が実行されていないことをタスク マネージャーで確認できます。さらに、ファイルシステム上のファイルを変更する必要があるプログラム (takeown.exe
または GnuWin32 のなどwget.exe
) の場合、変更は行われません。私が知る限り、コマンドはまったく実行されません。
これは、私が考えることができるすべての非more.com
Powershellコマンドライン アプリで発生します (公式の Python ディストリビューションの GnuWin32、StrawberryPerlなどless.exe
) 。ping.exe
cmd.exe
python.exe
perl.exe
Powershell 関数、コマンドレット、またはエイリアスを引き続き実行できます。さらに、のような非コマンドライン アプリを実行できますnotepad.exe
。
(可能性のある) 犯人: 私のスクリプト
この問題が発生し始めたとき、私はここ数日にわたって PS スクリプトを作成しようとしていました。ここに貼り付けるには長すぎます (現時点で 400 行) が、見たい場合は、pastebin にアップロードしました。(現在、うまく機能していません。)
現在、そのスクリプトの WinPE-AddExplorer 関数のいくつかのアクセス許可の問題に対処しているため、多くの場合、その関数の実行中に Ctrl-C を使用しています...何かが問題を引き起こしている可能性があります?