PowerShell は、システム上のすべてのプロセスを制御および管理するための高度なオプションを提供します。そのため、任意のプロセスまたは一連のプロセスを自動化したい場合は、PowerShell が適しています。
コマンド プロンプトとは異なり、PowerShell はコマンドレットを使用します。これらのコマンドレットはスタンドアロンの実行可能ファイルではありませんが、1 つのパイプラインからの入力を処理し、同じオブジェクトの別のパイプラインに出力を提供します。そのため、同じオブジェクトに対して複数のコマンドレットを使用して、それらを 1 つのタスクとして実行できます。このプロパティにより、PowerShell スクリプトの自動化が非常に効果的になります。
PowerShell スクリプトを自動化する方法を知りたい場合は、この記事で必要な情報がすべて提供されます。
PowerShell スクリプトを自動化する方法
システムによっては、コンピューターで PowerShell スクリプトを実行できない場合があります。これは、PowerShell には実行ポリシーと呼ばれる設定が含まれており、そのようなスクリプトに特定のレベルの制限を課してコンピューターを保護するためです。ほとんどのシステムでは、この設定がデフォルトで有効になっています。
したがって、スクリプトを自動化する前に、制限を削除または下げる必要があります。まず、管理者として PowerShell を開き、次のコマンドを入力します:
Set-ExecutionPolicy-Scope CurrentUser-ExecutionPolicy RemoteSigned
インターネットまたは外部ソースから署名されていないスクリプトを実行する必要がある場合は、代わりに次のコマンドを使用する必要があります:
Set-ExecutionPolicy-Scope CurrentUser-ExecutionPolicy Unrestricted
次に、以下のいずれかの方法を使用して、Windows で PowerShell スクリプトを自動化します。
タスク スケジューラの使用
タスク スケジューラのグラフィカル ツールは、PowerShell スクリプトを自動化する簡単な方法を提供します。ダウンロードしたスクリプトや外部ソースから取得したスクリプトをスケジュールしたいが、PowerShell の使用方法がよくわからない場合は、これが最適なオプションです。
Run を開きます。 「taskschd.msc」と入力して Enter キーを押し、タスク スケジューラを開きます。 [タスク スケジューラ ライブラリ] を右クリックし、[タスクの作成] を選択します。
[一般] タブで、スクリプトを自動化するタスクの名前と説明を入力します。必要に応じて、[ユーザーがログオンしているときにのみ実行する] と [ユーザーがログオンしているかどうかにかかわらず実行する] を選択します。
別のユーザー アカウントを使用してタスクを実行する場合は、[ユーザーまたはグループの変更] をクリックします。 >> 高度な > 今すぐ検索。リストからアカウントを選択し、[OK > OK] をクリックします。
管理者権限が必要かどうか、タスクを非表示にするか、別の OS バージョン用に構成するかなど、その他のオプションを設定します。次に、[トリガー] タブに移動し、[新規] をクリックします。
[タスクを開始] の横にあるドロップダウン ボックスから、スクリプトを実行するスケジュールまたはインスタンスを選択します。 [スケジュールどおり] を選択した場合は、頻度と開始日を設定する必要があります。それ以外の場合、ほとんどのオプションでは、ユーザーを指定する必要があります。次に、必要に応じて詳細設定を設定します。その場合は、必ず [有効] をオンにしてください。 [OK] をクリックします。
いつでもできますトリガーをクリックして [編集] を選択し、トリガーを編集します。タスクに別のトリガーを追加することもできます。 [アクション] タブに移動し、[新規] を選択します。 [プログラム/スクリプト] テキスト ボックスに「powershell」または「powershell.exe」と入力します。 [引数の追加] の横に「-File”full path to the script”」と入力します。たとえば、-File”D:\New\script.ps1″
OK をクリックします。 [条件] タブと [設定] タブに移動し、そこでオプションを指定します。 [OK] をクリックしてタスクを作成します。
PowerShell の使用
スクリプト作成に PowerShell を使用することに慣れている場合、スクリプトを自動化する最も簡単な方法は、PowerShell 自体を使用してスケジュールされたタスクを実際に作成することです。
まず、このようなスケジュールを作成するために使用する必要があるコマンドレットについて説明します。それらが何であるかをすでに知っている場合は、スキップして主な手順に進むことができます。
New-ScheduledTaskTrigger
いつ実行するかを指定するトリガー オブジェクトを作成します。タスクをスケジュールします。トリガー オブジェクトを作成するには、このコマンドレットを変数に割り当てる必要があります。
このコマンドレットで次の属性を使用して、一定の間隔でタスクをトリガーできます。
-At:タスクを実行したい-Once: タスクを 1 回開始します 例: $trigger=New-ScheduledTaskTrigger-Once-At 4am
-毎日:タスクを毎日開始します。-DaysInterval #-Daily と一緒に # 日ごとに 1 回タスクを実行することもできます。たとえば、$trigger=New-ScheduledTaskTrigger-Daily-DaysInterval 5-At 4am は、5 日ごとに 1 回タスクを実行するトリガーを作成します。
-毎週: タスクの週を開始します。-WeeksInterval # を-Weekly と共に使用して、 # 週ごとに 1 回タスクを実行することもできます。
起動時にタスクを実行する場合は、-AtStartup 属性を使用する必要があります。同様に、ユーザーのログオン時にタスクを実行するには、-AtLogon を使用する必要があります。-User 属性を使用して、正確なユーザー アカウントを指定できます。
New-ScheduledTaskAction
実行するアプリケーションを指定します。コンピューターにタスクを登録する場合は、別の値に割り当ててタスク アクション オブジェクトを作成する必要もあります。
使用できる主な属性は次のとおりです。
-Execute:自動化する必要がある実行可能ファイル。この場合は、powershell.exe-Argument: 上記の実行可能ファイルで開く while ファイルを指定します。スクリプトの完全なパスを入力することをお勧めします。それ以外の場合、PowerShell は作業ディレクトリでスクリプトを検索します。例: $action=New-ScheduledTaskAction-「powershell.exe」を実行-引数「D:\New\script.ps1」
-WorkingDirectory: システムがタスクを実行する作業ディレクトリを記述します。デフォルトは %WinDir%\System32
Register-ScheduledTask
タスクをローカル コンピュータに登録します。 PowerShell スクリプトを自動化するには、このコマンドレットの引数で上記のコマンドレットを使用して作成したオブジェクトを使用する必要があります。必要な属性は次のとおりです:
-TaskName: タスクに付けたい任意の名前。-Trigger: ここでは、New-ScheduledTaskTrigger を使用して作成したトリガー オブジェクトをアタッチします。-User: タスクが適用されるユーザー アカウントを指定します。ネットワークに接続されたコンピューターのスクリプトを自動化する場合は、コンピューターを指定することもできます。-Action: ここでは、New-ScheduledTaskAction コマンドレットが作成するタスク オブジェクトをアタッチします。
たとえば、Register-ScheduledTask-TaskName”PowerShell Script”-Trigger $Trigger-User $User-Action $Action

この目的で使用できる追加のコマンドレットと、それらで使用できる属性が多数あります。これらはオプションであり、ほとんどの場合は関係ないため、ここには含めていません。 Microsoft のプラットフォームに関するドキュメント
最後に、これらのコマンドレットを使用して PowerShell スクリプトを自動化する方法を次に示します。
Win + R を押して [ファイル名を指定して実行] を開きます。「powershell」と入力して Enter キーを押します。 Windows PowerShell を開きます。 PowerShell コア (6.x、7.x バージョン) を使用する場合は、実行コマンド pwsh を使用する必要があります。
New-ScheduledTaskTrigger コマンドレットを使用してトリガー オブジェクトを作成します。次に、PowerShell スクリプトを実行するタスク オブジェクトを作成します。最後に、スケジュールされたタスクを登録します。たとえば、PowerShell で次のコマンドレットを入力できます。 $Trigger=New-ScheduledTaskTrigger-Once-At 10am $Action=New-ScheduledTaskAction-Execute “powershell.exe”-Argument “D:\New\script.ps1″$User=”DESKTOP\User”Register-ScheduledTask-TaskName”PowerShell Script”-Trigger $Trigger-User $User-Action $Action