Top-Themen

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 (BAT,CMD) Shutdown mit Prüfung ob User angemeldet ist

Mitglied: hoffi3d

hoffi3d (Level 1) - Jetzt verbinden

04.04.2014, aktualisiert 16.04.2014, 3827 Aufrufe, 13 Kommentare

Hallo zusammen,

ich habe eine BAT Datei die automatisiert alle PC´s bei mir sichert. Die PC´s werden via WOL hochgefahren, dann auf meinen PC zwischengespeichert eh der Weg dann auf eine USB Festplatte geht.
Soweit so gut, alles funktioniert.

Jetzt stehe ich vor dem Problem, das ich die PC´s nach der Sicherung herunterfahren möchte, sofern KEIN User angemeldet ist.

Bisher bin ich soweit:

::@echo off
Set nutzer=user
Set passwort=pw



psloggedon \\rechnername -l -x > d:\sicherung\loggedin.tmp

net use z: \\rechnername\d /user:%nutzer% %passwort%
shutdown /s /m \\rechnername
net use z: /delete /yes
Ich würde mit shutdown den PC herunterfahren, das klappt.

mit psloggedon will ich auslesen ob jemand angemeldet ist, das klappt auch!

Nur wie lese ich das Ganze jetzt aus und bastel daraus ein Wenn/Dann; If/Else ????
ich komme einfach nicht wirklich weiter!

Vielen Dank im vorraus
Mitglied: SaschaRD
04.04.2014, aktualisiert um 08:54 Uhr
Morgen hoffi3d,
01.
Hier deine psloggedon Abfrage 
02.
IF ERRORLEVEL = 1 ( 
03.
echo niemand ist angemeldet 
04.
Hier dein shutdown Befehl 
05.
) ELSE ( 
06.
echo jemand ist angemeldet 
07.
)
Gruß, Sascha
Bitte warten ..
Mitglied: hoffi3d
04.04.2014 um 09:31 Uhr
Hallo Sascha,

das ist nicht ganz richtig(denke ich!?)

Erstmal korrigiere ich mich es muss heißen:

psloggedon \\rechnername -x > d:\sicherung\loggedin.tmp (ohne -l)

Wenn am fernen Rechner niemand angemeldet ist bekomme ich =>

Connecting to Registry of \\ferner_rechner...

No one is logged on locally.

Users logged on via resource shares:
mein_rechner\mein_user


zurück

Wenn aber jemand angemeldet ist:

Connecting to Registry of \\ferner_rechner...

Users logged on locally:
ferner_rechner\angemeldeter_user

Users logged on via resource shares:
mein_rechner\mein_user


So sieht es dann aus!

Kannst du mir sagen wie ich den Code wie du formatieren kann?
Bitte warten ..
Mitglied: SaschaRD
04.04.2014, aktualisiert um 10:50 Uhr
Hallo hoffi3d,

führe ich die obengenannte IF Bedingung aus, erhalte ich je nach Anmeldung das gewünschte Ergebnis.

Ich erläutere die Bedingung etwas genauer:
01.
psloggedon \\rechnername -x > d:\sicherung\loggedin.tmp 
02.
IF ERRORLEVEL = 1 (  
03.
echo niemand ist angemeldet 
04.
Hier dein shutdown Befehl 
05.
) ELSE ( 
06.
echo jemand ist angemeldet 
07.
)
Deine Abfrage bzw. der Aufruf von psloggedon in Zeile 1, gibt dann einen Wert zurück "1" oder "0".
1 = niemand ist angemeldet
0 = jemand ist angemeldet
Ist gleich zu setzen mit true/false.

Ist niemand an diesem PC angemeldet, soll er herruntergefahren werden.
Dann wird unter dem "echo" das shutdown eingefügt (die echo's können später natürlich entfernt werden, sind zum Testen aber sehr praktisch)
01.
psloggedon \\rechnername -x > d:\sicherung\loggedin.tmp 
02.
IF ERRORLEVEL = 1 (  
03.
echo niemand ist angemeldet 
04.
shutdown /s /m \\rechnername 
05.
Hier dein shutdown Befehl 
06.
) ELSE ( 
07.
echo jemand ist angemeldet 
08.
)
Frage: Wofür ist der net use?
Speicherst Du auf den PC(d:\sicherung\) die log?

Gruß, Sascha
Bitte warten ..
Mitglied: hoffi3d
04.04.2014 um 12:11 Uhr
hallo Sascha,

in beiden Fällen, also mit angemeldeten User als auch ohne erhalte ich immer das Echo jemand ist angemeldet.
Für mich auch einleuchtend, da es ja kein Error ist wenn niemand angemeldet ist!

Ich bekomme den shutdown befehl nur ausgeführt wenn ich mich vorher via net use mit dem PC verbinde, sonst bin ich nicht berechtigt! Das Ganze funktioniert auch!

Die Log war dafür gedacht mir anzuzeigen was psloggedon ermittelt hat!
Bitte warten ..
Mitglied: Xaero1982
05.04.2014, aktualisiert um 13:05 Uhr
Das geht so nicht, weil psloggedon offenbar keinen ERRORLEVEL kennt.

Was du mit der Sicherung meinst keine Ahnung... aber versuchs mit Powershell Ungetestet an Remote-PCs

01.
$temppath = $env:temp 
02.
$strFileName=$temppath+"\log.txt" 
03.
$strSecureFileName=$temppath+"\securestring.txt" 
04.
$strComputerName="Computername" 
05.
$username = "domänenname\Benutzername"  
06.
 
07.
Write-Host "Bitte geben Sie das Administratorpasswort vom Remote-PC ein!" 
08.
 
09.
read-host -assecurestring | convertfrom-securestring | out-file $strSecureFileName ` 
10.
 
11.
$password = cat $strSecureFileName | convertto-securestring 
12.
$cred = new-object -typename System.Management.Automation.PSCredential ` 
13.
         -argumentlist $username, $password 
14.
 
15.
Write-host "Passwort wurde verschlüsselt und in der Datei $strSecureFileName gespeichert" 
16.
 
17.
 
18.
If (Test-Path $strFileName){ 
19.
	Remove-Item $strFileName 
20.
} Else { 
21.
Get-WmiObject -Class win32_process -ComputerName $strComputerName -Credential $cred |  
22.
    Where-Object{ $_.Name -eq "explorer.exe" } |  
23.
    ForEach-Object{ ($_.GetOwner()).Domain + "\\" + ($_.GetOwner()).User | Out-file $strFileName -Encoding ASCII; } 
24.
25.
 
26.
If (Test-Path $strFileName){ 
27.
    Write-Host "Es ist noch ein Benutzer angemeldet!" 
28.
} Else { 
29.
    write-host "Es ist kein Benutzer mehr angemeldet. Der PC wird jetzt herunter gefahren!" 
30.
   #stop-computer -Computername $strComputerName -Authentication default -Credential $cred 
31.
32.
 
33.
 
34.
If (Test-Path $strFileName){ 
35.
   Remove-Item $strFileName 
36.
37.
Remove-Item $strSecureFileName 
38.
 
39.
    Write-Host "Dateien gelöscht!" 
40.
 
Das speicherst du in einer Datei mit der Dateiendung .ps1.

Wenn nicht bereits getan musst du in der Powershell vorher: (Powershell muss als Administrator ausgeführt werden)

01.
Set-ExecutionPolicy unrestricted
eingeben und mit "J" bestätigen.

Zum Ausführen der Powershelldatei kannst du einen Rechtklick darauf machen und "mit Powershell ausführen" klicken.

Im Script musst du:

01.
#stop-computer -Computername $strComputerName -Authentication default -Credential $cred
das # Zeichen entfernen (# steht für Kommentierungen) - Diese Zeile ist aber ungetestet.

Wenn es um einen lokalen PC handelt auf dem du das Script ausführst musst du in der Zeile
01.
Get-WmiObject -Class win32_process -ComputerName $strComputerName -Credential $cred | 
Das -Credential $cred
entfernen - sonst gibt es eine Fehlermeldung.

Zur Erläuterung:
Zeilen 1-5 werden Variablen definiert.
:1 Der Tempordner wird in $temppath geschrieben
:2 Der Pfad einer Temporären Datei wird aus dem Temppfad und dem Dateinamen "log.txt" "zusammen gebaut
:3 Siehe 2 für die Passwortdatei
:4 Hier den Remote-PC Namen eintragen - kann man auch über Read-Host direkt in der powershell abfragen
:5 Username der auf dem Remote-PC Adminrechte hat
:7 Simple Ausgabe
:9 Das Passwort wird eingelesen und die Anzeige so umgestellt, dass nur *** erscheinen und in die Passwortdatei geschrieben
:11 Das Passwort wird in der Variable $password gesichert aus der Passwortdatei
:12 Die Variable $cred wird mit dem Passwort und dem Usernamen "gefüllt"
:15 Simple Ausgabe
:18 Es wird geprüft ob die Temporäre Datei vorhanden ist und wenn ja
:19 diese gelöscht
:20 Wenn nicht wird abgefragt ob auf dem Remote-PC der Prozess "Explorer.exe" läuft, welcher nur läuft wenn ein Benutzer angemeldet ist. Wenn ja wird der Computername in die Temporäredatei geschrieben die zeitgleich erstellt wird. Wenn niemand angemeldet ist wird auch keine Datei erstellt - noch nicht mal eine leere.
:26 Wenn die Tempdatei vorhanden ist, ist jemand angemeldet und es gibt eine simple Ausgabe
:28 Wenn nicht
:29 Simple Ausgabe
:30 PC wird herunter gefahren
:34 Wenn die tempdatei vorhanden ist wird diese gelöscht
:37 Passwortdatei wird gelöscht

Gruß
Bitte warten ..
Mitglied: hoffi3d
07.04.2014 um 08:47 Uhr
Hallo,

nur leider würde ich dann von neuem anfangen, ich habe ja bereits eine bat Datei die funktioniert.
Mit dieser würde ich gerne weiterarbeiten...! Von Powershell habe ich keine Ahnung -_-

Eine Lösung in BAT wäre toll!!
Bitte warten ..
Mitglied: Xaero1982
07.04.2014, aktualisiert um 09:15 Uhr
Dann rufst du es eben auf aus der Batch oder die batch aus der powershell...

Du kannst das auch mit VBS + WMI machen... aber offenbar nicht mit Batch, außer du versuchst die Ausgabe von ps loggedon zu zerlegen und auszulesen wenn niemand angemeldet ist, aber das bekommen hier andere sicher besser hin mit Strings zerlegen etc.

Noch dazu sehe ich jetzt nicht groß was da noch fehlt ... WOL kannst du auch aus der Powershell aufrufen und eine "Sicherung" was auch immer du sicherst auch... Was das Script noch machen soll keine Ahnung

Gruß
Bitte warten ..
Mitglied: hoffi3d
07.04.2014 um 10:11 Uhr
Hallo Xaero,

ok das ist eine Variante.

Naja ich habe diverse Logs und auch eine automatisierte eMail Erstellung und alles soweit fertig das es 1A läuft.
In Powershell müsste ich erst einarbeiten.
Wenn ich nichts finden sollte, werde ich deine Lösung kopieren.
Vielen Dank erstmal!
Bitte warten ..
Mitglied: Xaero1982
07.04.2014 um 10:52 Uhr
Was du noch machen kannst ist die Ausgabe von psloggedon in eine txt-datei zu schreiben, diese einzulesen und nach dem entsprechenden String zu suchen der besagt, dass niemand mehr angemeldet ist. Wenn das so ist soll er den pc herunter fahren...
Bitte warten ..
Mitglied: hoffi3d
07.04.2014 um 10:57 Uhr
jep, nur leider weiß ich nur wie ich etwas in eine Datei schreibe, wie ich diese wieder auslese, daran hapert es!
Bitte warten ..
Mitglied: Xaero1982
LÖSUNG 07.04.2014, aktualisiert 16.04.2014
01.
@echo off 
02.
set logdatei=d:\sicherung\loggedin.txt 
03.
set pstools=c:\pstools\ 
04.
set rechnername=bitteändern 
05.
 
06.
%pstools%psloggedon \\%rechnername% -l -x > %logdatei% 
07.
 
08.
find /i "DEIN Text der Aussagt, dass niemand eingeloggt ist" %logdatei% 
09.
if errorlevel 1 goto angemeldet 
10.
%pstools%psshutdown -u %nutzer% -p %passwort% \\%rechnername%  
11.
goto EOF 
12.
 
13.
:angemeldet 
14.
Echo Es ist noch ein Benutzer angemeldet! 
15.
goto EOF 
16.
 
17.
:EOF 
18.
del %logdatei% 
19.
 
Weiß nicht wie der String ist wenn niemand angemeldet ist. Den musst du dann oben einsetzen.
Allerdings bin ich mir nicht sicher wie das bei psloggedon mit den Berechtigungen ist. Also ob du die überhaupt auslesen kannst ohne pw und username.

Gruß
Edit: Ungetestet - schreibe vor das shutdown (beachte PSSHUTDOWN aus den pstools - da kannst du username und pw übergeben) ein Echo zum testen.
Bitte warten ..
Mitglied: hoffi3d
16.04.2014 um 09:09 Uhr
Danke das klappt!
Sorry für die späte Antwort!

VIELEN DANK
Bitte warten ..
Mitglied: Xaero1982
16.04.2014 um 09:13 Uhr
Zitat von hoffi3d:

Danke das klappt!
Sorry für die späte Antwort!

VIELEN DANK

Super!
Besser spät als nie wie manch anderer ;P

Gerne!

Gruß
Bitte warten ..
Ähnliche Inhalte
Windows 7

bat Datei über Cmd in einem Netzwerk auf ein anderen User Desktop kopieren

Frage von IWantCmdWindows 72 Kommentare

Hallo! Ich würde gern wissen wie man eine .bat über die Cmd - Aufforderung in einem Netzwerk auf den ...

Windows Tools

CMD PROBLEME BEIM SHUTDOWN

Frage von killerlikeWindows Tools2 Kommentare

HIHO Ich habe ein paar fragen ich kann mit \\pcname\ipc$ zum pc verbinden also muss kein bennutzername oder Passwort ...

Batch & Shell

Batch: Remote shutdown wenn niemand angemeldet ist

gelöst Frage von pablovicBatch & Shell2 Kommentare

Hallo Ich habe ein Problem mit einem Batch, wo ich im Moment nicht weiterkomme und hoffe, dass mir jemand ...

Windows Userverwaltung

Abfrage welche User sich auf welchen Geräten angemeldet haben

Frage von oerdoerdWindows Userverwaltung3 Kommentare

Moin, gibt es eine Möglichkeit, im Idealfall per Powershell, abzufragen welcher User sich auf welchem Gerät angemeldet hat? Ich ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs9 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Debian
Wie finde ich den betroffenen user
Frage von ProtectedDebian8 Kommentare

Hallo, Wie kann ich den User finden der dies verursacht hat? Betriebsystem ist Debian 7 your Server/Customer with the ...

Voice over IP
Vodafone IP Anlagenanschluss - TK-Anlage einrichten
Frage von BytedreherVoice over IP8 Kommentare

Moin Zusammen, wir hatten gestern bei uns die Umstellung auf den neuen IP Anschluss bei Vodafone. Vodafone IP Anlagenanschluss ...