スクリプトを別のスクリプトから自動的に実行 (例: バッチ ファイル)
Matt Hamilton が提案したように、単純に PowerShell .ps1 スクリプトを作成し、次を使用して呼び出します。
PowerShell C:\Path\To\YourPowerShellScript.ps1
または、バッチ ファイルの作業ディレクトリが PowerShell スクリプトと同じディレクトリである場合は、相対パスを使用できます。
PowerShell .\YourPowerShellScript.ps1
これが機能する前に、PC の実行ポリシーを設定する必要があります。その方法を以下に示します。
スクリプトを手動で実行する方法 1
詳細については、私のブログ投稿を参照してください。ただし、基本的には、PowerShell .ps1 スクリプト ファイルを作成して目的の処理を実行し、同じディレクトリに .cmd バッチ ファイルを作成して、ファイルの内容に次を使用します。
@ECHO OFF
SET ThisScriptsDirectory=%~dp0
SET PowerShellScriptPath=%ThisScriptsDirectory%MyPowerShellScript.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%PowerShellScriptPath%'"
3 行目のMyPowerShellScript.ps1を PowerShell スクリプトのファイル名に置き換えます。
これにより、バッチ ファイルをダブルクリックするだけで PowerShell スクリプトを実行できるようになり、PowerShell 実行ポリシーを変更する必要がなくなります。
私のブログ投稿では、PowerShell スクリプトを管理者として実行する必要がある場合に、それを実行する方法も示しています。
スクリプトを手動で実行する方法 2
または、PowerShell スクリプトごとにバッチ ファイルを作成したくない場合は、PowerShell スクリプトの既定の動作を [編集] から [実行] に変更して、.ps1 ファイルをダブルクリックして実行することができます。
ファイル パスにスペースが含まれるスクリプトを実行できるように、追加のレジストリ設定を変更する必要があります。このブログ投稿で、これらの両方を行う方法を示します。
ただし、この方法では、最初にスクリプトの実行を許可する実行ポリシーを設定する必要があります。これを行う必要があるのは PC ごとに 1 回だけで、PowerShell コマンド プロンプトでこの行を実行することで実行できます。
Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy RemoteSigned -Force' -Verb RunAs
Set-ExecutionPolicy RemoteSigned -Forceは、実行ポリシーを実際に変更するコマンドです。これによりRemoteSignedに設定されるため、必要に応じて別のものに変更できます。また、この行は PowerShell を管理者として自動的に実行します。これは、実行ポリシーを変更するために必要です。