karsten70154
Goto Top

PCs über eine Batch Datei nach 2 Tagen Laufzeit automatisch herunterfahren

Hallo,
ich sitze nun seit mehreren Tagen an dem Problem, dass ich mehrere PC's über eine .bat oder .cmd herunterfahren will (Ich bin Auszubildender für Systemintegration und mir wurde das als eine meiner Aufgaben zugeteilt). Ich habe eine PC-Liste über das Active Directory angefordert und muss nun aber noch herausfinden, wie ich einen nach dem anderen auf die Laufzeit (48 Stunden soll dieser an sein) zu überprüfen und wenn der Pc über 48 Stunden läuft, soll dieser automatisch runterfahren. Kann mir jemand helfen? Ich würde das am liebsten "alleine" schaffen.

Vielen Dank im Vorraus

Content-Key: 316615

Url: https://administrator.de/contentid/316615

Printed on: April 16, 2024 at 17:04 o'clock

Member: Knorkator
Knorkator Sep 30, 2016 at 07:30:12 (UTC)
Goto Top
Da Du das alleine schaffen willst.. hier nen paar tipps wie Du das Scripten kannst.

a) Wie lange läuft der PC? http://techibee.com/powershell/get-computer-uptime-using-powershell/659
b) Ausschalten wenn er mehr als 2 Tage läuft? If Anweisung mit -> Stop-Computer -computername xxxx
c) Du könntest das Script auf einem DC in die Aufgabenplanung packen und alle 30min ausführen lassen.

Viel Erfolg
Member: Karsten70154
Karsten70154 Sep 30, 2016 at 07:37:57 (UTC)
Goto Top
Alleine meinte ich damit, dass ich keine lokale Hilfe beantragen will. Werd trotzdem ein bisschen mit deinen Hinweisen herumprobieren face-smile
Member: Radioflyer
Radioflyer Sep 30, 2016 updated at 07:45:42 (UTC)
Goto Top
Zitat von @Karsten70154:
Kann mir jemand helfen? Ich würde das am liebsten "alleine" schaffen.


Hi,

klingt irgendwie widersprüchlich, bedenke bitte auch, dass man im heutigen Internet Zeitalter
nicht mehr alleine da steht, dort findet man meist eine Vielzahl von unterschiedlichsten Lösungsansätzen
und keine Ahnung wieviele Dokumentationen ....

Mein "Alleine" habe ich 1984 mit der Programmierung einer Mailbox unter SALT, nem Akustikkoppler / Katze abgeschafft...

Hinweise hast Du ja direkt zum Thema schon erhalten.

Cheerz, RF
Member: Knorkator
Knorkator Sep 30, 2016 at 07:48:17 (UTC)
Goto Top
Wenn Du überhaupt nicht weiterkommst.. frag halt nochmal nach.

Hinweise:
1. Die benötigten PCs in einer OU auflisten: http://www.powershelladmin.com/wiki/Getting_computer_names_from_AD_usin ...
2. Die Ergenisse in einer Schleife verarbeiten lassen. http://www.computerperformance.co.uk/powershell/powershell_foreach.htm
3. If Schleife - $sysuptime.days > 2 ist - stop-computer...
4. Ggf. eine Mail mit in die Schleife um über den gestarteten Shutdown informiert zu werden - https://www.windowspro.de/script/send-mailmessage-e-mails-versenden-powe ...

Viel Erfolg
face-smile
Member: SeaStorm
SeaStorm Sep 30, 2016 at 07:52:46 (UTC)
Goto Top
Hi

mit Batch wird das ein bisschen eklig, würde aber mit wmic schon gehen. z.B
wmic /Node:"Computername" OS Get LastBootUpTime  



Mit powershell hingegen geht das recht einfach, da man das WMI dann auch ordentlich weiterverarbeiten kann.
Alles Nötige ist in diesem Artikel zu finden https://technet.microsoft.com/en-us/magazine/0cd3610d-62be-45dd-9683-95e ...
Member: Knorkator
Solution Knorkator Sep 30, 2016 at 07:55:57 (UTC)
Goto Top
Zitat von @SeaStorm:
mit Batch wird das ein bisschen eklig, würde aber mit wmic schon gehen. z.B
wmic /Node:"Computername" OS Get LastBootUpTime  

Ups.. Batch habe ich überlesen.. aber wenn man die PS zur Verfügung hat..
face-smile
Member: Karsten70154
Karsten70154 Sep 30, 2016 updated at 09:09:22 (UTC)
Goto Top
Wenn ich das probiere, kommt in der cmd dass der RPC-Server nicht verfügbar ist... Die üblichen Lösungen habe ich schon alle ausprobiert (Firewall gibt es gar nicht bei uns in der Firma). Ich war erst an der Powershell dran um das Script dort zu machen (Dienstag), aber auch da kam letzten Endes der Hinweis dass der RPC Server nicht kontaktiert werden kann. Den restlichen Code hätte ich tatsächlich schon fertig, wenn das Problem mit dem RPC-Server nicht wäre.


@echo on
for /f "delims=" %%a in ('wmic /Node:%LISTE% OS Get LastBootUpTime ^| find "."') do set up=%%a
for /f "delims=" %%a in ('wmic /Node:%LISTE% OS Get localdatetime ^| find "."') do set dt=%%a

set beg=%up:~0,4%-%up:~4,2%-%up:~6,2%T%up:~8,2%-%up:~10,2%-%up:~12,2%-%up:~15,3%
set end=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%T%dt:~8,2%-%dt:~10,2%-%dt:~12,2%-%dt:~15,3%


call :TimeDifference uptime %end% %beg%

if %uptime% gtr 0 shutdown /m \\%LIST% /s /f
goto :eof

SetLocal EnableExtensions EnableDelayedExpansion
For /F "tokens=1-14 delims=T/:-., " %%a in ("%~2 %~3") Do (
Set "h2=0%%d" & Set "h3=0%%k" & Set "n2=%%g00" & Set "n3=%%n00"
Set /A "y2=%%a, m2=1%%b-100, d2=1%%c-100, h2=1!h2:~-2!-100, i2=1%%e-100, s2=1%%f-100, n2=1!n2:~0,3!-1000"
Set /A "y3=%%h, m3=1%%i-100, d3=1%%j-100, h3=1!h3:~-2!-100, i3=1%%l-100, s3=1%%m-100, n3=1!n3:~0,3!-1000"
)
Set /A "t2=((h2*60+i2)*60+s2)*1000+n2, t3=((h3*60+i3)*60+s3)*1000+n3"
Set /A "a=(14-m2)/12, b=y2-a, j2=(153*(12*a+m2-3)+2)/5+d2+365*b+b/4-b/100+b/400"
Set /A "a=(14-m3)/12, b=y3-a, j3=(153*(12*a+m3-3)+2)/5+d3+365*b+b/4-b/100+b/400"
Set /A "d=j3-j2, t=t3-t2"
If %d% LEQ 0 (If %d% LSS 0 (Set /A "d=j2-j3, t=t2-t3") Else If %t% LSS 0 (Set /A "t=t2-t3"))
If %t% LSS 0 (Set /A "t+=(1000*60*60*24), d-=1")
Set /A "n=t %% 1000, t/=1000, s=t %% 60, t/=60, m=t %% 60, t/=60"
EndLocal & Set "%~1=%d% "
Goto :EOF
Member: Knorkator
Solution Knorkator Sep 30, 2016 at 09:30:25 (UTC)
Goto Top
Member: Karsten70154
Karsten70154 Sep 30, 2016 at 10:18:52 (UTC)
Goto Top
Das hat geklappt, vielen Dank face-smile endlich Ruhe und das auch noch kurz vor Feierabend.
Member: Knorkator
Knorkator Sep 30, 2016 at 10:51:31 (UTC)
Goto Top
Wie jetzt? 12:18 ist kurz vor Feierabend?
Du hast nen Leben... ich will auch 1x in ner Bude arbeiten die Freitags früh Feierabend macht.

Wie hast Du es denn jetzt gelöst?
Mit Deiner unlesbaren Batchdatei?
;)
Member: Karsten70154
Karsten70154 Sep 30, 2016 at 11:04:31 (UTC)
Goto Top
Ja bei mir ist Feierabend um spätestens 1 Uhr face-smile


Ich hab es jetzt mit Powershell gelöst, da das Problem in der Batch und gleichzeitig in Powershell beseitigt wurde. Montag kommt dann noch die Verbreitung auf mehr Computer, da ich es bis jetzt nur auf 3 Test PCs getestet hab
Member: Knorkator
Knorkator Sep 30, 2016 at 11:26:08 (UTC)
Goto Top
Dann poste doch noch das Script.
Dann haben alle was davon.
face-smile

Ansonsten.. schönes Wochenende!