サービスが開始または停止している場合は、このコードでpowershellスクリプトを実行しています。ServiceControllerステータスが実際のサービスステータスを正しく反映していない
Timer timer1 = new Timer();
ServiceController sc = new ServiceController("MyService");
protected override void OnStart(string[] args)
{
timer1.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer1.Interval = 10000;
timer1.Enabled = true;
}
private void OnElapsedTime(object source, ElapsedEventArgs e)
{
if ((sc.Status == ServiceControllerStatus.StartPending) || (sc.Status == ServiceControllerStatus.Stopped))
{
StartPs();
}
}
private void StartPs()
{
PSCommand cmd = new PSCommand();
cmd.AddScript(@"C:\windows\security\dard\StSvc.ps1");
PowerShell posh = PowerShell.Create();
posh.Commands = cmd;
posh.Invoke();
}
私はCMDプロンプト から私のサービスを殺すとき、それは正常に動作しています。しかし、私のサービスが稼働している場合でも、PowerShellスクリプト自体を実行し続けて(それは、コンピュータ上のファイルを追加) 任意のアイデアなぜですか?
powershellはこの質問とは正反対であり、*本物の*質問は、なぜ私の 'StartPending' /' Stopped'チェックが正しく動作しないのでしょうか? –
正確に何が起こっているかを見るためにブレークポイントを入れてみましたか? –