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, 3727 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 ..
Neuester Wissensbeitrag
Ä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 ...

Netzwerkmanagement
gelöst Sophos UTM220 - Appliance CPU Auslastung LOG-Datei downloaden? (7)

Frage von 1410640014 zum Thema Netzwerkmanagement ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Virenschutz - Meinungen (27)

Frage von honeybee zum Thema Erkennung und -Abwehr ...

Windows 10
Welches OS für Firmengeräte? (18)

Frage von MarkusVH zum Thema Windows 10 ...

Netzwerke
Abisolierwerkzeug (18)

Frage von SarekHL zum Thema Netzwerke ...

Exchange Server
SBS2011: POP3-Connector 10 MB Grenze Email Benachrichtigung (17)

Frage von bogi1102 zum Thema Exchange Server ...