Active Directoryでログイン時にPowershell経由でexeを実行
TL;DR Active Directoryでログイン時にexeファイルを実行する場合はStart-Processでの実行が必要 経緯 Emotetが流行っているので、EmocheckをActive Directory のログインスクリプトに仕込んでみていた。 単体では実行できるので問題ないと考えていたが、どうもActive Directory のグループポリシーでログイン時に起動する設定をすると何故か実行されない。イベントログを見ると一応対象として認識されているのだが… Powershell から外部ファイルを実行するにはいくつか方法があるが、以下のように実行するとダメなようだった。 $proc = New-Object "System.Diagnostics.Process" $psi = New-Object "System.Diagnostics.ProcessStartInfo" $psi.FileName = $emocheck_Exe $psi.Arguments = "-output $reportDir -quiet -json" $psi.CreateNoWindow = $true; $psi.UseShellExecute = $false $psi.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden $proc.StartInfo = $psi $proc.Start() 以下のように設定することでログイン時に実行されるようになった。 Start-Process -WindowStyle Hidden -FilePath $emocheck_Exe -ArgumentList "-output $reportDir -quiet -json" -WorkingDirectory $currentDir