5

PowerShellスクリプトを実行すると、奇妙な動作が発生しました。

  • ISEを使用してスクリプトを実行すると、問題なく動作します。
  • Powershell.exeを開いてスクリプトを実行すると、問題なく動作します。
  • cmdを開き、を使用してスクリプトを開始するとpowershell.exe -noexit ./myscript.ps1、myscriptは正常に機能します。

ただし、myscriptをダブルクリックすると、PowerShellが数ミリ秒開き、エラー(赤いフォント)が表示され、PowerShellウィンドウが閉じます。PowerShellウィンドウが高速に閉じるため、この問題の原因となっているエラーを追跡できません。ホールスクリプトの周りに1つの大きなtry-catchブロックを試し、それをキャッチ[Exception]してログファイルに書き留めました。ただし、ログファイルは生成されません(catchは呼び出されません)。

その問題を追跡するにはどうすればよいですか?何が問題を引き起こしている可能性がありますか?私の実行ポリシーは無制限に設定されていることに注意してください。

4

6 に答える 6

6

提案を試す前に、これを呼び出して現在の設定を確認してください(後で復元する場合)。

cmd /c FType Microsoft.PowerShellScript.1

次に、これを呼び出します(これにより、スクリプトが「エクスプローラーから」呼び出される方法を変更することに注意してください)。

cmd /c @"
FType Microsoft.PowerShellScript.1=$PSHOME\powershell.exe -NoExit . "'%1'" %*
"@

次に、スクリプトをダブルクリックします。終了しないでください-NoExit。トリックが実行されます。エラーメッセージを確認して、問題を解決してください。しかし、「エクスプローラーから」呼び出されたすべてのスクリプトは、コンソールを開いたままにします。その後、上記のコマンドから削除-NoExitして再実行するか、元の設定に戻すことができます。


PSv2でスクリプトを呼び出すためのいくつかの詳細と1つの良い方法はここにあります。残念ながら、PSv3では壊れています-提出された問題

于 2012-12-07T15:18:29.217 に答える
2

デフォルトでは、セキュリティ上の理由から、.ps1ファイルをダブルクリックすると、アクションは次のようになります。ファイルの実行ではなく、ファイルの編集。
スクリプトを実行するには:スクリプトを右クリックして、PowerShellで実行を選択します

于 2012-12-07T11:30:25.940 に答える
1

また、手動で実行しても問題はありませんでしたが、ダブルクリックしてスクリプトを実行することはできませんでした。私は問題が道にあったことを知りました。次のようなスペースを含むパスからスクリプトを実行したとき。

C:\ Users \ john doe \ Documents \ Sample.ps1

sciptの実行に失敗しました。スクリプトを次の場所に移動します。

C:\ Scripts \ Sample.ps1

スペースがないので、問題は解決しました。

于 2020-04-21T05:17:21.130 に答える
0

これは、ローカルの実行ポリシーの問題である可能性があります。

既定では、Powershellは、署名されていないスクリプト(ローカルスクリプトであっても)を実行しないように構成されています。スクリプトに署名していない場合は、Windowsでデフォルトのダブルクリック「アクション」を変更しても効果はありません。Powershellが開き、実行ポリシーを読み取り、スクリプトの署名を確認しますが、何も見つからない場合はエラーで中止されます。

Powershellの場合:

Help about_execution_policies

すべての厄介な詳細と、署名されていないスクリプトの実行を許可する方法を提供します(理由の範囲内で、リモートスクリプトを実行したくない場合があります。システムに保存したスクリプトのみを実行します)。

編集:あなたの質問の最後に、実行ポリシーを「無制限」に設定していることがわかりました。これは、スクリプトの実行を許可する必要があります。ただし、これは、実行ポリシーの問題が発生している他のユーザーにとって役立つ情報になる可能性があります。

于 2013-01-08T16:54:25.873 に答える
0

エラーをキャッチすると、おそらくこれが表示されます

ファイルを読み込めません。ファイルはデジタル署名されていません。スクリプトはシステム上で実行されません。詳細については、「Get-Helpabout_signing」を参照してください。

マウスの右ボタンで[PowerShellで実行]をクリックするのではなく、自分で開始したシェルから実行できるため、x64システムを使用しているに違いありません。手動で実行ポリシーが構成されているPowerShellの一方のバージョンを起動し、右クリックしてもう一方のバージョンのPowerShellを起動します。

バージョンx64とx86の両方のバージョンを起動して、それぞれのセキュリティポリシーを確認してください

Get-ExecutionPolicy
于 2013-11-05T16:58:23.407 に答える
0

質問で説明したのとまったく同じ状況でした。ダブルクリックした場合を除いて、スクリプトはどこでも機能しました。*ダブルクリックすると、PowerShellウィンドウが開きますが、1秒ほどで閉じます。私の実行ポリシーも無制限に設定されています。

選択した回答を試してみましたFType Microsoft.PowerShellScript.1が、何も変わりませんでした。

私が見つけた唯一の解決策は、回避策でした。PowerShellを起動するbatファイルを作成します。

  1. ファイルを作成し、これをコピーしてパスを変更します。 powershell.exe -File "C:\Users\user\script\myscript.ps1"
  2. として保存.bat
  3. バットをダブルクリックします

    • また.ahk、PowerShellをショートカットで開始していましたが、PowerShellを直接ポイントすると機能しませんでした。私は指摘しなければなりませんでした.bat
于 2019-10-27T17:00:31.537 に答える