💭

Active Directoryでログイン時にPowershell経由でexeを実行

2022/03/23に公開

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
GitHubで編集を提案

Discussion