💭
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
Discussion