次のスクリプト (AppMgmt サービスが停止すると IIS サービスを停止します) は、「PowerGUI スクリプト エディター」で正常に実行されますが、コンソール「powershell -file path_to_script」から実行すると、イベントが発生したときにアクションが実行されません。
function Watch-MyService()
{
$query = "SELECT * FROM __InstanceModificationEvent WITHIN 2 " +
"WHERE TargetInstance Isa 'Win32_Service' " +
"AND TargetINstance.Name = 'AppMgmt'" +
"AND TargetInstance.State = 'Stopped'"
$action =
{
Write-Host "stopping service # 2"
Stop-Service 'W3SVC' -Force
}
Write-Host "registering event"
Register-WMIEvent -query $query -SourceIdentifier "ControllerSvcEvent" -action $action
}
Watch-MyService
コンソールでは、次のみが表示されます。
イベントの登録
ただし、「AppMgmt」サービスを停止しても何も表示されず、コンソールへの出力はなく、IIS サービスは影響を受けません。
コンソールは管理者権限で開始されます。