michasurma 10 Geschrieben 30. Januar 2008 Melden Teilen Geschrieben 30. Januar 2008 Hallo Gemeinde, folgender Teil meines scripts funktioniert wunderbar solange User/Pass des Host UND Zielrechners gleich sind. :status for /F %%I IN (listen\server.txt) DO ( echo *********************************** echo Server %%I apps\sc.exe \\%%I query AgentServer | apps\qgrep.exe STATE ) echo *********************************** goto ende Leider unterstützt sc keine Authentifizierung in der Form -user oder -password Was für Alternativen gäbe es hier? PERL wäre eine mit Win32 API, nur leider sind meine PERL Kenntnisse eher beschränkt. Vielen Dank für einen kleinen Tipp oder gar Script das eben diese AUTH vornimmt. Micha Zitieren Link zu diesem Kommentar
Zearom 10 Geschrieben 30. Januar 2008 Melden Teilen Geschrieben 30. Januar 2008 naja du könntest die SC.exe in eine getrennte bat schieben und mit dem Runas befehl die Identität des Batch-Aufrufs ändern. die Infos für SC übergibst du dann halt auch über Parameter. Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 30. Januar 2008 Melden Teilen Geschrieben 30. Januar 2008 Hallo, eine andere Möglichkeit wäre auch, zu dem zu überwachenden System mittels "net use" eine IPC$ Connection aufzubauen. Voraussetzung dafür ist jedoch, daß zu dem System noch eine anderen Verbindungen existieren - diese müßten sonst vorher gelöst werden. :status for /F %%I IN (listen\server.txt) DO ( echo *********************************** echo Server %%I net use \\%%I\IPC$ /USER:<User> <Kennwort> apps\sc.exe \\%%I query AgentServer | apps\qgrep.exe STATE net use \\%%I\IPC$ /DELETE ) echo *********************************** goto ende Ansonsten kannst Du beispielsweise auch über die PowerShell (oder direkt über WMI) die Abfrage mit anderen Credentials starten, siehe http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.windows.powershell&tid=002c1640-46c1-490e-854d-0a0ee06abc22&cat=&lang=&cr=&sloc=&p=1 Das WMI-Statement müßte dann irgendwie so aussehen: Get-WmiObject -Query "select * from Win32_Service where ServiceName='AgentServer' and State='stopped'" -ComputerName $Computer -Credential $Credentials --> geklaut bei http://www.windowsitpro.com/Files/50/97539/listing_01.txt Mit ein wenig Arbeit sollte es möglich sein, die beiden Statements anzupassen und zusammenzubringen. Gruß olc Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 30. Januar 2008 Melden Teilen Geschrieben 30. Januar 2008 Eine weitere Alternative ist die PSEXEC.EXE von MS. Account und PW mitgeben und gut ist. ;) Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 31. Januar 2008 Melden Teilen Geschrieben 31. Januar 2008 Hallo, die Sache hat mir irgendwie keine Ruhe gelassen - wäre doch gelacht, wenn das nicht einfacher ginge. Mittels WMI / WMIC kannst Du das tatsächlich recht schnell so lösen: wmic /NODE:@"C:\computerliste.txt" /USER:"DOMAIN\user" /PASSWORD:"kennwort" SERVICE WHERE Name="AgentServer" GET SystemName, State In der Computerliste stehen Deine zu überwachenden Systeme mit NetBIOS oder DNS Namen. Die Abfrage kannst Du problemlos auch in Deine bestehende Batch-Datei übernehmen. Die oben - in meinem ersten Beitrag genannte - PowerShell Variante würde in einem Script nicht laufen, da die Credentials während des Funktionsaufrufs (-Credential) interaktiv abgefragt werden. Viele Grüße olc Zitieren Link zu diesem Kommentar
michasurma 10 Geschrieben 6. Februar 2008 Autor Melden Teilen Geschrieben 6. Februar 2008 Danke, olc's Lösung gefällt mir am besten und hat sehr gut funktioniert. Danke auch an die anderen Schreiber, alles notiert, man weiss ja nie :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.