Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 3993 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Laufwerkgröße der Clients auslesen (6)

Frage von michi-ffm zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

Batch & Shell
gelöst Fenstertitel von anderen Tasks per batch auslesen (3)

Frage von NetMare zum Thema Batch & Shell ...

Batch & Shell
gelöst Mittels Batch eine Uhrzeit aus einer .txt auslesen und verabeiten (4)

Frage von Beatzler zum Thema Batch & Shell ...

Neue Wissensbeiträge
Mac OS X

Apple hat macOS High Sierra veröffentlicht

(4)

Information von Frank zum Thema Mac OS X ...

Viren und Trojaner

Ransomware or Wiper? RedBoot Encrypts Files but also Modifies Partition Table

(4)

Information von BassFishFox zum Thema Viren und Trojaner ...

Notebook & Zubehör

WOL bei HP Notebooks

(8)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

Heiß diskutierte Inhalte
Windows Server
Seit IP Umstellung DC DNS Fehler (29)

Frage von Yaimael zum Thema Windows Server ...

Windows 10
gelöst Netzwerkkarte schaltet sich erst nach dem Logon ein (24)

Frage von DerWoWusste zum Thema Windows 10 ...

Grafik
gelöst CAD Arbeitsplätze (17)

Frage von Diddi93 zum Thema Grafik ...

Weiterbildung
gelöst Fest angestellter Admin oder Systemhaus Admin mit Kundenbetreuung? (16)

Frage von Voiper zum Thema Weiterbildung ...