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

Per Batch PC Namen in Log datei mitaufnehmen

Frage Entwicklung Batch & Shell

Mitglied: 14634

14634 (Level 1)

02.12.2011, aktualisiert 16:17 Uhr, 3739 Aufrufe, 3 Kommentare

Hallo zusammen,

ich habe folgendes Script


echo on
for /F %%a IN (Rechner.txt) do call :befehl1 %%a
goto :eof

:befehl1
echo on
REM %%a wird zu %1
call psexec.exe \\%1 systeminfo |find "Systembetriebszeit" >> log.txt

goto :eof


in der Rechner.txt stehen alle PC`s drin die ich überprüfen will die lange sie läuft.
Dieses soll dann in einer log.txt wiedergegeben werden, das passt soweit, es wird wie folgt ausgegeben:

Systembetriebszeit: 9 Tage, 4 Stunden, 16 Minuten, 42 Sekunden

ich hätte aber gerne das davor der PC Name steht, da ich ansonsten dies nicht zuordnen kann.

ich glaube man muss nur %Computer% hinzufügen oder? leider weiß ich auch nicht genau wo.

Kann hier jemand helfen?

Danke für die hilfe

edit:

habe auch diesen Powershell befehl gesehen:

<#
.SYNOPSIS
Demonstrates uptime using WMI
.DESCRIPTION
This script used Win32_ComputerSystem to determine how long your system
has been running. This is a rewrite/improvement of sample 3 at
http://msdn.microsoft.com/en-us/library/aa394591(VS.85).aspx.
.NOTES
File Name : Get-UpTime.ps1
Author : Thomas Lee - tfl@psp.co.uk
Requires : PowerShell V2 CTP3
.LINK
Script Posted to:
http://www.pshscripts.blogspot.com
Original sample posted at:
http://msdn.microsoft.com/en-us/library/aa394591(VS.85).aspx
.EXAMPLE
PS c:\foo> .\Get-UpTime.Ps1
System Up for: 1 days, 8 hours, 40.781 minutes

#>

##
  1. Start of script
##

  1. Helper Function - convert WMI date to TimeDate object
function WMIDateStringToDate($Bootup) {
[System.Management.ManagementDateTimeconverter]::ToDateTime($Bootup)
}

  1. Main script
$Computer = "." # adjust as needed
$computers = Get-WMIObject -class Win32_OperatingSystem -computer $computer

foreach ($system in $computers) {
$Bootup = $system.LastBootUpTime
$LastBootUpTime = WMIDateStringToDate($Bootup)
$now = Get-Date
$Uptime = $now - $lastBootUpTime
$d = $Uptime.Days
$h = $Uptime.Hours
$m = $uptime.Minutes
$ms= $uptime.Milliseconds
"System Up for: {0} days, {1} hours, {2}.{3} minutes" -f $d,$h,$m,$ms
}
  1. End script


hier weiß ich leider nicht wo ich meine Rechner.txt einfügen soll, sodass es das Script erkennt
Mitglied: bastla
02.12.2011 um 16:55 Uhr
Hallo Gl05e!

Du hast doch den Computernamen ohenhin in %1 - daher einfach:
01.
02.
echo %1 
03.
psexec.exe \\%1 systeminfo |find "Systembetriebszeit" 
04.
)>> log.txt
Abgesehen davon ließe sich das auch ganz ohne Unterprogramm erledigen:
01.
@echo off & setlocal 
02.
03.
    for /F %%a IN (Rechner.txt) do ( 
04.
        echo %%a 
05.
        psexec.exe \\%%a systeminfo |find "Systembetriebszeit" 
06.
07.
)>log.txt
oder kürzer:
01.
@echo off & setlocal 
02.
(for /F %%a IN (Rechner.txt) do (echo %%a & psexec.exe \\%%a systeminfo |find "Systembetriebszeit"))>log.txt
Grüße
bastla
Bitte warten ..
Mitglied: 14634
05.12.2011 um 09:31 Uhr
Danke, da schaut ja super aus,

eine Frage noch, wenn ich das Script ausführe kommt es wie folgt im Log raus:

PCname
Systembetriebszeit: 11 Tage, 21 Stunden, 41 Minuten, 6 Sekunden

kann man es so umändern, das alles in einer Zeile raus kommt?
Bitte warten ..
Mitglied: bastla
05.12.2011 um 16:11 Uhr
Hallo GlO5e!

Aufgrund der Art, wie "systeminfo.exe" die Daten ausgibt, würde ich als Workaround eine Temp-Datei verwenden:
01.
@echo off & setlocal 
02.
set "UT=%temp%\UpTime.txt" 
03.
(for /F %%a IN (Rechner.txt) do ( 
04.
    psexec \\%%a systeminfo|find "Systembetriebszeit">%UT% 
05.
    <nul set /p=%%a; 
06.
    type %UT% 
07.
))>log.txt
Als (ungetestete) Alternative könntest Du auch WMIC verwenden (dann bräuchtest Du kein "psexec"; auf die Idee gebracht haben mich - natürlich - die Scripting Guys):
01.
@echo off & setlocal enabledelayedexpansion 
02.
(for /F %%a IN (Rechner.txt) do ( 
03.
    for /f "tokens=2 delims==" %%i in ('wmic /node:%%a path Win32_PerfFormattedData_PerfOS_System get systemuptime /value') do set "UpTime=%%i" 
04.
    set /a UpDays=!UpTime!/86400 
05.
    set /a UpTime=!UpTime!%%86400 
06.
    set /a UpHours=!UpTime!/3600 
07.
    set /a UpTime=!UpTime!%%3600 
08.
    set /a UpMinutes=!UpTime!/60 
09.
    set /a UpSeconds=!UpTime!%%60 
10.
    echo %%a;!UpDays! Tage !UpHours! Stunden !UpMinutes! Minuten !UpSeconds! Sekunden 
11.
))>log.txt
... und passend zum Thema:" Geheimnisse von Windows Management Instrumentation" bzw "wie lange läuft der PC"

[Edit] Noch etwas vereinfacht:
01.
@echo off & setlocal enabledelayedexpansion 
02.
(for /F %%a IN (Rechner.txt) do ( 
03.
    for /f "tokens=2 delims==" %%i in ('wmic /node:%%a path Win32_PerfFormattedData_PerfOS_System get systemuptime /value') do set "UpTime=%%i" 
04.
    set /a UpDays=!UpTime!/86400 
05.
    set /a UpHours=!UpTime!/3600%%24 
06.
    set /a UpMinutes=!UpTime!/60%%60 
07.
    set /a UpSeconds=!UpTime!%%86400%%60 
08.
    echo %%a;!UpDays! Tage !UpHours! Stunden !UpMinutes! Minuten !UpSeconds! Sekunden 
09.
))>log.txt
[/Edit]

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst In Batch auf Erstelldatum einer Datei prüfen (5)

Frage von AS-N00 zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

LAN, WAN, Wireless
Rogue Access Point (20)

Frage von Axel90 zum Thema LAN, WAN, Wireless ...

Webbrowser
Windows 7 unbeliebte Internetseite sperren (13)

Frage von Daoudi1973 zum Thema Webbrowser ...

E-Mail
Fake E-Mail in Outlook für Demonstartionszwecke (12)

Frage von sascha382 zum Thema E-Mail ...