Ich habe ein Batch-Skript, das über einen AT-Befehl ausgeführt wird und möglicherweise mehrmals ausgeführt wird. Wenn es startet, muss es erkennen, ob es bereits ausgeführt wird, und wenn ja, sofort beenden (das zweite).
- Es muss robust sein und funktionieren, wenn die Skripte unerwartet beendet werden (dh ich kann beim Eintritt kein Flag setzen und beim Beenden löschen).
- Es muss in einer Remotedesktopsitzung ausgeführt werden
- Ich bin mit Powershell v2 auf XP festgefahren, aber es macht mir nichts aus, eine kleine Exe zu schreiben, wenn ich es nicht in Batch / Powershell oder VBS machen kann
- Das Skript muss minimiert ausgeführt werden, daher starte ich es mit Start "NAME" / MIN% COMSPEC% / C "MyScript.bat".
- Andere cmd-Fenster sind möglicherweise geöffnet, daher muss ich das laufende Skript überprüfen
- Das Batch-Skript wird als SYSTEM-Benutzer ausgeführt, ich kann jedoch keine WMI verwenden
Ich habe PowerShell Get-Process verwendet, um MainWindowTitle anzuzeigen, aber dies funktionierte nicht, wenn eine Remoteverbindung zum Computer hergestellt wurde, da das Skript möglicherweise ausgeführt wird, aber in dieser Remoteverbindungsinstanz nicht angezeigt wird. In diesem Fall wird der cmd-Prozess von Get-Process angezeigt, aber der MainWindowTitle ist leer.
Ich habe Get-Process ausprobiert und mir die erweiterte Eigenschaft StartInfo.EnvironmentVariables angesehen, kann jedoch nicht sehen, wie eine env-Variable erstellt wird, damit sie in der Eigenschaft angezeigt wird.
Ich habe überlegt, / WAIT im Startbefehl zu verwenden, dann bleibt das AT geöffnet, bis es beendet ist, aber das Skript, das das AT enthält, wird nicht minimiert
Irgendwelche Ideen?