Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Per Batch Client auslesen

Frage Entwicklung Batch & Shell

Mitglied: 103148

103148 (Level 1)

13.03.2014 um 10:47 Uhr, 3547 Aufrufe, 14 Kommentare, 3 Danke

Hallo,

ich möchte gerne paar Infos von unseren Clients auslesen.

Dazu würde ich folgenden Befehl im Anmelde Script nutzen:

1. ver >> \\server\client\%computername%.txt
2. wmic bios get serialnumber >> >> \\server\client\%computername%.txt


Frage, wie bekomme ich die Augabe in eine Zeile für die TXT Datei, oder kann man die Daten auch in eine Excel Datei schreiben und jede Ausgabe in ein Feld?
Ideal wäre vorab den %computername% + %username% dann die Windows Version und dann die Service Tag, die Liste muss ich dann mit Dell abgleichen bezüglich Garantie Zeit.

Zur Zeit bekomme ich folgende Ausgabe:

Microsoft Windows [Version 6.1.7601]
S e r i a l N u m b e r XYZABCD

Die PC sind von Dell ab Windows XP in einer 2008 Server Umgebung im AD.

XP gibt den Wert ser SerialNumber nicht zurück.

Mitglied: colinardo
13.03.2014, aktualisiert um 12:59 Uhr
Hallo angebissener-apfel,
könntest du so mit Batch machen:
01.
@echo off & setlocal 
02.
 
03.
REM Serial auslesen 
04.
for /f "tokens=2 delims==" %%a in ('wmic bios get SerialNumber /format:list ^| findstr /i "SerialNumber"') DO set serial=%%a 
05.
 
06.
REM Version auslesen 
07.
for /f "delims=" %%a in ('ver') do set version=%%a 
08.
 
09.
echo %computername%;%username%;%version%;%serial% >"\\server\client\%computername%.txt"
oder via VBS so
01.
Dim strComputername, strVersion, strSerial, strUsername 
02.
Set fso = CreateObject("Scripting.Filesystemobject") 
03.
Set objShell = CreateObject("Wscript.Shell") 
04.
strComputername = objShell.ExpandEnvironmentStrings("%computername%") 
05.
strUsername = objShell.ExpandEnvironmentStrings("%username%") 
06.
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
07.
 
08.
Set colSettings = objWMIService.ExecQuery ("Select * from Win32_Bios") 
09.
For Each objBIOS In colSettings  
10.
   strSerial = objBIOS.SerialNumber 
11.
Next 
12.
 
13.
Set colSettings = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem") 
14.
For Each objOS In colSettings  
15.
   strVersion = objOS.Caption & " " & objOS.Version 
16.
Next 
17.
info = strComputername & ";" & strUsername & ";" & strVersion & ";" & strSerial 
18.
fso.OpenTextFile("\\server\client\" & strComputername & ".txt",2,True).WriteLine(info)
Alles in ein Excel-File schreiben ginge auch, das setzt aber auf den Clients jeweils voraus das dort Excel installiert ist und du hättest dann Zugriffs-Probleme wenn gleichzeitige Logins stattfinden.

XP gibt den Wert ser SerialNumber nicht zurück.
kann ich hier nicht bestätigen, hier geht das Auslesen der Seriennummer mit WMI auch auf einem XP SP3

Alternativ lassen sich die Informationen auch mit einem Inventory-Script Remote für ein ganzes Netzwerk abfragen und direkt in einem Excel-File zusammenfassen:

Grüße Uwe
Bitte warten ..
Mitglied: 103148
17.03.2014 um 11:42 Uhr
hi...

das mit der Batch sieht gut aus.... teste weiter.

Wenn ich dazu eine Abfrage machen möchte die da heißt:

if %computername% = "PC*" then call datei \\server\temp\x.bat

die PC sind nummeriret von PC001 bis PC800 es soll aber nur abgefragt werden ist es ein PC die Nummer wäre egal, wie geht das?

Somit kann ich server ausschliessen zb. das die Datei aufgerufen wird am SERVER01 oder SERVER07

Gruß
Bitte warten ..
Mitglied: colinardo
17.03.2014, aktualisiert um 11:46 Uhr
Zitat von 103148:
die PC sind nummeriret von PC001 bis PC800 es soll aber nur abgefragt werden ist es ein PC die Nummer wäre egal, wie geht
das?
if "%computername:~0,2%" == "PC" call \\server\temp\x.bat
Grüße Uwe
Bitte warten ..
Mitglied: 103148
17.03.2014 um 13:19 Uhr
cool, bedeutet das ~0,2, das er nur die ersten zwei stellen abfragt?
Bitte warten ..
Mitglied: colinardo
17.03.2014, aktualisiert um 13:29 Uhr
Zitat von 103148:
cool, bedeutet das ~0,2, das er nur die ersten zwei stellen abfragt?
ja, => DOS String Manipulation

Grüße Uwe
Bitte warten ..
Mitglied: 103148
17.03.2014, aktualisiert um 13:39 Uhr
okay, somit kann ich alle andere nicht Clients ausschliessen....

ich hätte noch eine Liste ( clients.txt ) die nicht abgefragt werden dürfen, kann du das mit einbinden?

in der Liste steht....

PC007
PC200
PC241

usw

wäre sehr dankbar...

sehr cooler Link....

Gruß
Bitte warten ..
Mitglied: colinardo
17.03.2014, aktualisiert um 13:52 Uhr
eine Frage: Warum machst du das nicht mit einer GPO die du auf eine Gruppe von Computern verlinkst?? dann brauchst du die ganzen Abfragen nicht.
Bitte warten ..
Mitglied: 103148
17.03.2014 um 14:04 Uhr
berechtigt, die Frage...

ich benötige zur Zeit zwei Abfragen, einmal welcher user sitzt nach Anmeldung an welchen PC und welche BS Version läuft dort.

Die OU Struktur wird neu aufgesetzt und ist einen kleine Baustell, die Daten brauche ich diese Woche.
Ausserdem ziehen die GPO nicht überall... warum weiß ich nicht, die wollte ich mit einem gpupdate /force im Anmeldescript mitgeben, aber halt nicht am TS Server.
Dann muss ich um 21:00 Uhr alle Rechner runter fahren die noch an sind... ausser die clients.txt, die müssen anbleiben....
Bitte warten ..
Mitglied: colinardo
17.03.2014, aktualisiert um 14:20 Uhr
OK ziemliches Durcheinander , das Überspringen der Clients in deiner Liste kannst du so machen:
01.
findstr /i "%COMPUTERNAME%" "\\Server\clients.txt" && exit
wenn der Rechnername in der Liste gefunden wird, wird das Script beendet.

Grüße Uwe
Bitte warten ..
Mitglied: 103148
17.03.2014 um 14:30 Uhr
super, vielen Dank...

ähm, einen hab ich noch... ;>)

ich muss prüfen welche PC´s noch ab 22:00 Uhr an sind, evtl per ping.... über pc001 bis pc600... ne Idee
Bitte warten ..
Mitglied: colinardo
17.03.2014 um 14:32 Uhr
Zitat von 103148:
ich muss prüfen welche PC´s noch ab 22:00 Uhr an sind, evtl per ping.... über pc001 bis pc600... ne Idee
Suchfunktion hier im Forum, gibt's haufenweise Einträge....
Bitte warten ..
Mitglied: 103148
17.03.2014 um 15:23 Uhr
okay, wie ich pürfe weiß ich , kenne aber nicht die Funktion damit von PC001 bis PC600 geprüft wird...

ping PC001 -n 1 | findstr "TTL" && goto rechner_on.txt
.
.
.
.
ping PC600 -n 1 | findstr "TTL" && goto rechner_on.txt
Bitte warten ..
Mitglied: colinardo
17.03.2014, aktualisiert um 15:44 Uhr
OK dann ist aber deine Suchmaschine kaputt, z.B. so:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set startpc=1 
03.
set endpc=600 
04.
for /L %%i IN (%startpc%,1,%endpc%) DO @( 
05.
	if %%i LSS 10 set prefix=00 
06.
	if %%i GEQ 10 set prefix=0 
07.
	if %%i GEQ 100 set prefix= 
08.
	echo Pinge PC!prefix!%%i 
09.
	ping -n 1 -w 100 PC!prefix!%%i | find "Bytes=32" >nul && echo Host PC!prefix!%%i ist online! 
10.
)
denke Beitrag ist hier jetzt gelöst ...
Bitte warten ..
Mitglied: 103148
17.03.2014 um 15:44 Uhr
vielen Dank....
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Batch & Shell
Per Batch aktuell angemeldete User auslesen (1)

Frage von Peter32 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...