2

Powershellコマンドラインで多くのことをしているときに、ある時点でまたはのようなコマンドラインアプリケーションの実行を停止しますが、Powershell関数などを実行し続けるという奇妙な問題がありcmd.exeますmore.com。新しい 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.comPowershellコマンドライン アプリで発生します (公式の Python ディストリビューションの GnuWin32、StrawberryPerlなどless.exe) 。ping.execmd.exepython.exeperl.exe

Powershell 関数、コマンドレット、またはエイリアスを引き続き実行できます。さらに、のような非コマンドライン アプリを実行できますnotepad.exe

(可能性のある) 犯人: 私のスクリプト

この問題が発生し始めたとき、私はここ数日にわたって PS スクリプトを作成しようとしていました。ここに貼り付けるには長すぎます (現時点で 400 行) が、見たい場合は、pastebin にアップロードしました。(現在、うまく機能していません。)

現在、そのスクリプトの WinPE-AddExplorer 関数のいくつかのアクセス許可の問題に対処しているため、多くの場合、その関数の実行中に Ctrl-C を使用しています...何かが問題を引き起こしている可能性があります?

4

2 に答える 2

0

ここにいくつかの考えがあります:

  1. -NoProfile を指定して PowerShell を実行してみてください。PSCX モジュールをインポートしてスクリプトを実行する
  2. PSCX モジュールを使用せずに PowerShell を実行してみて (必要に応じてプロファイル スクリプトをインポートしないように調整してください)、スクリプトを実行してみてください。
  3. 一般的にサードパーティのモジュールを使用しないようにしてください

別のメモとして、私はあなたのスクリプトを調べましたが、PowerShell セッションを永続的に調整するものは何もありません。この問題をデバッグするには、プロファイル (またはスクリプト) が行っている可能性のある永続的な環境の変更について考えてみてください。PSCX の開発者は、PowerShell 環境を永続的に調整するコードを持っている場合と持っていない場合があります。

従来のトラブルシューティング手法を使用して、この問題の原因となっている領域 (スクリプト、PSCX、またはプロファイル) を突き止めます。

于 2012-05-30T22:15:09.870 に答える