いくつかの理由で、主にセキュリティ関連で、PowerShellスクリプトは、バッチスクリプトほど簡単には移植できず使用できません。ただし、これらの問題を回避するために、バッチスクリプトとPowerShellスクリプトをバンドルすることができます。ここでは、それらの問題領域のいくつかと、それらを回避するためのバッチスクリプトの作成方法を紹介します。. 自分の.PS1ファイルを別のコンピュータにコピーして実行できないのはなぜですか? ターゲットシステムが、必要な特権を持ち、正しい設定を使用して、任意のスクリプトを実行できるように事前設定されていない限り、これを実行しようとすると問題が発生する可能性があります。. PowerShellは、デフォルトでは.PS1ファイル拡張子に関連付けられていません.私達は最初に私達のPowerShellオタク学校シリーズでこれを育てました。 Windowsは、デフォルトで.PS1ファイルをPowerShellコマンドインタープリタに送信するのではなく、メモ帳に関連付けます。これはダブルクリックするだけで悪意のあるスクリプトが誤って実行されるのを防ぐためです。この動作を変更する方法はいくつかありますが、スクリプトを持ち歩いているすべてのコンピュータでやりたいことはおそらくないでしょう。特にそれらのコンピュータの一部が自分のコンピュータではない場合はそうです。. PowerShellはデフォルトで外部スクリプトの実行を許可しません.PowerShellのExecutionPolicy設定は、Windowsのすべてのバージョンで、デフォルトで外部スクリプトの実行を禁止します。一部のWindowsバージョンでは、デフォルトではスクリプトの実行がまったく許可されていません。 Windows 7でPowerShellスクリプトの実行を許可する方法で、この設定を変更する方法を説明しました。ただし、これはどのコンピュータでも実行したくないものです。. 一部のPowerShellスクリプトは管理者権限がないと機能しません.管理者レベルのアカウントで実行している場合でも、特定の操作を実行するにはユーザーアカウント制御(UAC)を使用する必要があります。これを無効にしたくはありませんが、対処しやすくすることができればそれでもいいでしょう。. 一部のユーザーはカスタマイズされたPowerShell環境を持っているかもしれません.あなたはおそらくこれに遭遇することはあまりないでしょうが、実行するとスクリプトの実行とトラブルシューティングが少しイライラすることになりかねません。幸い、恒久的な変更を加えなくてもこれを回避できます。. ステップ1:ダブルクリックして実行. .PS1ファイルの関連付け - 最初の問題に取り組むことから始めましょう。ダブルクリックして.PS1ファイルを実行することはできませんが、その方法で.BATファイルを実行することはできます。そのため、コマンドラインからPowerShellスクリプトを呼び出すためのバッチファイルを作成します。. したがって、スクリプトごとにバッチファイルを書き直す必要はありません。スクリプトを移動するたびに、PowerShellスクリプトのファイルパスを作成するために自己参照変数を使用することになります。これを機能させるには、バッチファイルをPowerShellスクリプトと同じフォルダーに配置し、同じファイル名を付ける必要があります。そのため、PowerShellスクリプトの名前が“ MyScript.ps1”の場合は、バッチファイルの名前を“ MyScript.bat”にして、それが同じフォルダにあることを確認します。次に、これらの行をバッチスクリプトに追加します。 @ECHO OFF PowerShell.exe - コマンド "& '%〜dpn0.ps1'" 他のセキュリティ制限が適用されていなければ、バッチファイルからPowerShellスクリプトを実行するのに必要なことはそれだけです。実際、最初と最後の行は主に好みの問題です - 実際に仕事をしているのは2行目です。内訳は次のとおりです。 @ECHO OFF コマンドエコーを無効にします。これは、バッチファイルの実行時に他のコマンドが画面に表示されないようにするだけです。この行は、その前にアットマーク(@)を使用することで隠されています。....