Partitionen entfernt auslesen
Guten Morgen zusammen,
ich benötige alle lokalen Partitionen von allen Servern, welche dann am Besten pro Server in eine Variable geschrieben werden soll.
Hier stecke ich leider fest:
Das echo ist übrigens erst einmal nur ein Test.
Problem bis dato: Bei den 2008er Server funktioniert obige Anforderung. Beim 2003er Server hängt psexec einfach. Cursor blinkt fröhlich. Es geht nicht weiter. Gibt es eine bessere Möglichkeit?
Und wie bekomme ich die Partitionen dann in eine Variable rein, dass da nachher "C:,D:,E:" drin steht?
Dank und schöne Grüße
ich benötige alle lokalen Partitionen von allen Servern, welche dann am Besten pro Server in eine Variable geschrieben werden soll.
Hier stecke ich leider fest:
for /F "delims=" %%i in ("!serverlist!") do for %%A in (%%i) do "%tools%\psexec.exe" /accepteula \\%%A -u %domain%\%user% -p %password% -h cmd /c for /F "tokens=2 delims==" %%d in ('wmic logicaldisk where "drivetype=3" get name /format:value') do echo %%d
Das echo ist übrigens erst einmal nur ein Test.
Problem bis dato: Bei den 2008er Server funktioniert obige Anforderung. Beim 2003er Server hängt psexec einfach. Cursor blinkt fröhlich. Es geht nicht weiter. Gibt es eine bessere Möglichkeit?
Und wie bekomme ich die Partitionen dann in eine Variable rein, dass da nachher "C:,D:,E:" drin steht?
Dank und schöne Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 248400
Url: https://administrator.de/contentid/248400
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
9 Kommentare
Neuester Kommentar
Moin,
machs doch mit einem VBS-Script:
Grüße Uwe
machs doch mit einem VBS-Script:
Dim strPathComputers, strPathLog, fso, objLog, arrComputers, objWMI, colDrives,drive, strAllDrives
strPathComputers = "C:\temp\computers.txt"
strPathLog = "C:\temp\ergebnis.txt"
Set fso = CreateObject("Scripting.Filesystemobject")
Set objLog = fso.OpenTextFile(strPathLog,2,True)
arrComputers = Split(fso.OpenTextFile(strPathComputers,1).ReadAll(),vbNewLine)
For i = 0 To UBound(arrComputers)
If arrComputers(i) <> "" Then
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & arrComputers(i) & "\root\cimv2")
Set colDrives = objWMI.ExecQuery("Select * from Win32_LogicalDisk Where Drivetype=3")
If colDrives.Count > 0 Then
strAllDrives = ""
For Each drive In colDrives
strAllDrives = strAllDrives & drive.Name & ","
Next
strAllDrives = Left(strAllDrives, Len(strAllDrives)-1)
objLog.WriteLine arrComputers(i) & "=" & strAllDrives
End If
End If
Next
objLog.Close
Set objLog = Nothing
Set fso = Nothing
gib es einen bestimmten Grund ?
Ich will, dass das Ganze in einem Batch-Skript abgearbeitet wird.
Vielleicht hat jemand noch eine andere/weitere Lösung?
dann machs doch ohne PSEXEC mit dem Node-Parameter von WMIC:Vielleicht hat jemand noch eine andere/weitere Lösung?
for /F "delims=" %%a in ("!serverlist!") do @(
set drives=
for /F "tokens=2 delims==" %%b in ('wmic /node:%%a logicaldisk where drivetype^=3 get name /format:List ^|findstr /ir "^Name"') do @(
if not defined drives (set drives=%%b) else (set drives=!drives!,%%b)
)
echo Auf Server '%%a' sind folgende Laufwerke vorhanden: !drives!
)
den Grund hatte ich schon genannt.
wo ?Geschmäcker sind eben verschieden.
kein Problem Zitat von @zeusplanet:
Danke für deinen Vorschlag, dann müsste ich das Skript aber lokal auf jedem Server ausführen, oder sehe ich das
jetzt falsch?
nein musst du nicht, denn hier wird ja der NODE Parameter von WMIC verwendet der die Server Remote übers Netz abfragt ! Der Useraccount der das Script ausführt muss natürlich entsprechende Rechte auf den Servern besitzen, aber das sollte klar sein.Danke für deinen Vorschlag, dann müsste ich das Skript aber lokal auf jedem Server ausführen, oder sehe ich das
jetzt falsch?
Moin,
Und von wegen 1zu1 kopiert !!! Da stimmt so einiges bei dir nicht was aber in meinem geposteten Script vorhanden ist ! Schau mal bitte ganz genau hin... (z.B. die Laufvariablen nicht mit doppelten Prozentzeichen versehen dann ein fehlendes ^ etc...)
Hast du überhaupt setlocal ENABLEDELAYEDEXPANSION in deinem Script ?
Mein Script läuft hier einwandfrei.
Ansonsten sind die Firewalls der Server nicht für den Remotezugriff konfiguriert.
Zitat von @zeusplanet:
Ich habe dein Skript mal eins zu eins in eine neue Batch abgelegt. Als Ausgabe bekomme ich wohl aber nur das Laufwerk vom ersten
das war ja nicht als vollständiges Script zu sehen, denn deine Variable !serverlist! ist dort ja gar nicht deklariert !Ich habe dein Skript mal eins zu eins in eine neue Batch abgelegt. Als Ausgabe bekomme ich wohl aber nur das Laufwerk vom ersten
Und von wegen 1zu1 kopiert !!! Da stimmt so einiges bei dir nicht was aber in meinem geposteten Script vorhanden ist ! Schau mal bitte ganz genau hin... (z.B. die Laufvariablen nicht mit doppelten Prozentzeichen versehen dann ein fehlendes ^ etc...)
Hast du überhaupt setlocal ENABLEDELAYEDEXPANSION in deinem Script ?
Mein Script läuft hier einwandfrei.
Ansonsten sind die Firewalls der Server nicht für den Remotezugriff konfiguriert.