PowerShellでタスクスケジューラのウィンドウがまだ開いていない場合のみタスクスケジューラを起動する

概要

PowerShellでタスクスケジューラのウィンドウがまだ開いていない場合のみタスクスケジューラを起動するようなPS1スクリプトを作成したところ、期待通り動いた。

詳細

やりたいこと

PowerShellのスクリプトで、「タスク スケジューラ」のウィンドウがまだ開いていない場合のみ「タスク スケジューラ」を起動したい。

環境

PSVersion 5.1.22000.653
PSEdition Desktop

留意点

タスクスケジューラは「Microsoft 管理コンソール」(mmc.exe)の中の一機能であるため、プロセス名や実行ファイルとしてはそのようにしか表示されない。このため、開かれているウィンドウのウィンドウ名によって「タスク スケジューラ」が起動しているか否かを判断することにする。

やったこと/結果

以下の内容のPowerShell スクリプトを作成、実行したところ、そのようにできた。

#ウィンドウタイトルの一覧を表示
$MainWindowsTitleArray = Get-Process | Where-Object {$_.MainWindowTitle -ne “”} | Select-Object MainWindowTitle

#「タスク スケジューラ」ウィンドウ有無チェック用のフラグを初期化
$WindowCheckFlag = 0

#もし「タスク スケジューラ」ウィンドウが開かれていれば、上記フラグを1にする。
foreach($i in $MainWindowsTitleArray){
if ($i.MainWindowTitle -eq “タスク スケジューラ” ){
$WindowCheckFlag = 1}
}

#もし上記フラグが0なら、「タスク スケジューラ」を起動する。
if ($WindowCheckFlag -eq 0){
Start-Process -FilePath Taskschd.msc
}

タイトルとURLをコピーしました