Ho questo codice che esegue uno script PowerShell se il servizio è in corso o interrotto.Lo stato di ServiceController non riflette correttamente lo stato attuale del servizio
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();
}
Sta funzionando bene quando ho ucciso mio servizio da cmd prompt dei Ma anche se il mio servizio è attivo e funzionante, lo script PowerShell continua l'esecuzione in sé (si aggiunge un file sul computer) Qualsiasi idea del perché?
Sarebbe corretto dire che PowerShell è ortogonale a questa domanda e la domanda * real * è: perché il mio controllo 'StartPending' /' Stopped' non funziona correttamente? –
Hai provato a inserire dei punti di interruzione per vedere cosa sta succedendo esattamente? –