derteufelimdetail
Goto Top

Automatische Anmeldung eines Domänenusers an einer Windows 10 VM

Hallo, liebe Gemeinde.

Ich stehe grade mal wieder auf dem Schlauch...

In unserer zusammengeflickten "Low-Budget-Infrastruktur" gibt es zwei Sensoren, die das Serverraumklima überwachen.
Einer am Lüftungsausgang der Klimaanlage, einen in Mitten der Serverschranktür.
Sollte die Klimaanlage ausfallen, steigt die Temperatur an der Klimaanlage als erstes. Überschreitet sie einen Schwellwert, gibt es eine email. Man hat dann rund eine Stunde Zeit, sich drum zu kümmern.
Dann überschreitet auch der Fühler am Serverschrank den eingestellten Grenzwert. Dann gibt es eine SMS, eine Mail und ein Batchfile startet, welches einen "Timeout" von 600 Sekunden hat und dann stumpf alle Systeme herunterfährt, damit sie nicht überhitzen.
Hat bis jetzt alles funktioniert. (wurde halt mal getestet)

Nun zum Fremdschämfaktor...
Das dazugehörige Programm kann nicht als Dienst, sondern muss offen auf dem Frontend laufen. Also es muss immer ein User angemeldet sein. Ferner braucht dieser User in der Domäne entsprechende Rechte zum herunterfahren der Systeme. Jetzt kommts... Bisher hat diese Aufgabe ein User erfüllt, mit Domänenadmin-rechten, der permanent auf dem DC angemeldet war.

jaaaa... geht gar nicht!!

Wir haben einen dicken Hobel , auf dem zig Entwicklungs-VMs laufen. Dort habe ich nun eine Win-10 Enterprise-VM eingebunden. Nicht in der Domäne.
So ist es natürlich kein Problem, einen lokalen User automatisch anzumelden. Klappt auch. User meldet sich an, die Überwachungs-GUI startet und wenn ich an den Fühlern spiele gehen sowohl mail als auch sms raus.

Problem:
Ich muss ja immer noch zu einem bestimmten Zeitpunkt im Notfall die Systeme herunterfahren lassen.
Wie stelle ich das am besten an?

- die VM mit einem DomAd-User starten? Dann bekomm ich die autoanmeldung aber nicht hin
- lokal ein Bachfile starten, welches wiederum ein .ps1 oder .bat auf einem (oder mehreren) Domänensystem(en) startet?
- ein getriggertes Event auf einem anderen System auslösen?
- ein .ps1 starten und dort mit entsprechenden Credetials arbeiten?

Bin für fast alle Anregungen offen. Ich google derweil weiter.

Ich danke Euch schon mal recht herzlich.

Content-ID: 331533

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

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

emeriks
emeriks 08.03.2017 um 09:36:41 Uhr
Goto Top
Hi,
- die VM mit einem DomAd-User starten? Dann bekomm ich die autoanmeldung aber nicht hin
Wieso? Was ist da das Problem?

Du könntest mit CMDKEY Anmeldedaten für die einzelnen Server hinterlegen. Dann kann auch aus der Sitzung des lokalen Benutzers mit diesen Anmeldedaten auf die Server zugegriffen werden.

Aber es sollte nicht gleich ein Domänen-Admin sein! Ein normales Domänenkonto, welchem man per GPO auf allen betreffenden Servern das Privileg zum Herunterfahren des Computers erteilt, reicht dafür vollkommen aus.

E.
em-pie
em-pie 08.03.2017 um 09:41:28 Uhr
Goto Top
Moin,

- die VM mit einem DomAd-User starten? Dann bekomm ich die autoanmeldung aber nicht hin
Warum nicht? Schaue mal hier :Autologon für lokale Anmeldung bei einem Domänenrechner

Ansonsten würde ich das eigentliche Herunterfahren-Script von einer anderen Stelle auslösen lassen und von deinem Win10 Client dieses Script dann per PSEXEC aufrufen...


Vielleicht kannst du aber auch auf dein AutoLogon verzichten.
Schaue dir mal das Tool srvanyan
http://www.serverhowto.de/Applikationen-als-Dienste-einrichten.228.0.ht ...
auf diese Weise lasse ich den PDF-Creator als Dienst laufen, damit ich nicht einen User am Server engemeldet lassen muss...

Teste das einfach mal

Gruß
em-pie
DerTeufelImDetail
DerTeufelImDetail 08.03.2017 um 13:05:07 Uhr
Goto Top
Also. Tatsächlich legt er das Prog mit "srvany" als Dienst an. Das Prog funktioniert aber nicht. Warum auch immer. Geht nur wenn die GUI offen ist.

Teilerfolg:

Über die registry lässt sich der Autologin Für einen beliebigen User automatisieren:

Windowstaste; regedit .... rechtsklick; Als Administrator ausführen.
Navigieren zu: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Folgende Werte ändern oder erstellen: (zum Erstellen Rechtsklick in das Fenster, neu, Zeichenkette oder String)

DefaultUserName [den anzumeldenden User eintragen]
DefaultPassword [das entsprechende PW]
DefaultDomainName [Namen der Domäne (nicht FQDN)]
AutoAdminLogon auf Wert 1
emeriks
emeriks 08.03.2017 um 13:38:09 Uhr
Goto Top
Über die registry lässt sich der Autologin Für einen beliebigen User automatisieren:
Ja, das ist altbekannt.
Dann ist Dein Problem doch geklärt. Oder was fehlt jetzt noch?
DerTeufelImDetail
DerTeufelImDetail 08.03.2017 um 15:18:07 Uhr
Goto Top
Das System sieht jetzt so aus, das ein User angemeldet wird.

Das Prog liegt im Autostart und die GUI wird gestartet.

nun habe ich die eingeschänkte Möglichkeit, bei einer Schwellwertüberschreitung ein Batchfile ausführen zu lassen.

Mein Vorhaben (erster Gedankengang)

- Auf den Windowshosts (3 St.) werden Ordner angelegt und freigegeben. (exclusiv für den User der Überwachungsmaschine)
- Darin enthalten .ps1-script, welches die laufenden VMs identifiziert, diese herunterfährt, den HV-Dienst beendet und dann den Host selber herunterfährt
emeriks
emeriks 08.03.2017 um 15:29:54 Uhr
Goto Top
Du brauchst gar nicht zu prüfen, ob die VMs laufen. Einfach ein Shutdown an alle möglichen Kandidaten senden. Wenn einer davon nicht läuft, dann verpufft das Kommando.
Schau Dir mal PsShutdown von den Sysinternals an. Da kann man in der Kommandozeile eine Textdatei angeben, in welcher die Computernamen stehen. Einfacher kannst du es nicht bekommen.
DerTeufelImDetail
DerTeufelImDetail 08.03.2017 um 16:50:03 Uhr
Goto Top
Wir haben mehrere Hobel, auf denen bis zu 35 VMs laufen...

Dann muss ich ja für den Shutdown sämtliche Namen oder IPs eingeben. Und wenn sich eine Maschine ändert, muss ich das Scritp wieder anfassen?
em-pie
em-pie 08.03.2017 um 16:59:46 Uhr
Goto Top
Naja, irgendwoher muss PsShutdown ja wissen, welche Rechner heruntergefahren werden sollen...

ein PsShutdown * gibt es nicht. wäre ja auch Mist, wenn dann urplötzlich eine Shutdownanfrage an alle PCs auf der Welt rausgehauen wird (überspitzt gesagt)

Mit ein bisschen überlegen deinerseits kannst du natürlich zuvor dein AD abfragen, das Ergebnis in die Textfile schreiben und anschließend die PsShutdown loslaufen lassen...

Hilfe gibt es hier:
https://www.windowspro.de/script/get-adcomputer-computer-ou-ad-gruppe-an ...

und wenn es die Powershell sein soll:
https://technet.microsoft.com/de-de/library/ee617192.aspx
emeriks
emeriks 08.03.2017 um 17:10:27 Uhr
Goto Top
Ja, oder einfaches DSquery mit nem bisschen Batch drumherum.

z.B.
dsquery computer ou=VM-OU,dc=domain,dc=local /o rdn
Jetzt noch die "" entfernt und fertig ist die Liste.
DerTeufelImDetail
DerTeufelImDetail 08.03.2017 um 18:00:29 Uhr
Goto Top
Es geht hier nicht um das herunterfahren der VMs. Das ist simpel in PS: "Get-VM | where { $_.State -eq 'Running' } | Stop-VM"

Es geht um das Starten der .bat und .ps1 Scripte

Die "Master Maschine" gibt ein Signal an jeden Host, der danach autark weiter machen soll

Die Maschinen im Serverraum. 5 an der Zahl.

einmal ESXi (U1), einen CentOS-Hobel (U2) und drei Windows-Maschinen (H1, H2 und H3). Auf zwei der Windows-Hosts (H1 und H2) laufen X VMs auf Hyper-V -Basis, der dritte (H3) dient als Replikatserver für Hyper-V

Eine VM ("Master Maschine", liegt auf H1) bekommt ein Signal aus einer Messbox (messPC von betternetworks). Das dazugehörige Programm kann einmalig ein einzelnes Batchfile (nennen wir es "NotfallbatchMaster") ausführen.

Ziel:
Step 1: "NotfallbatchMaster" übermittelt shutdownsignal via SSH (Putty) an die Unix-Kisten (U1 und U2), die fahren runter (Ist realisiert und geht einwandfrei)

Step 1,5: timeout im Batch von 10 Sekunden (geht)

Step 2: "NotfallbatchMaster" übermittelt Startsignal für .bat-Datei an Replikationsserver (H3), der schaltet den Hyper-V-Dienst ab und fährt sich runter (net stop.... und shutdown...) (batch geht, der Aufruf nicht) (ggf mit einem lokal gemountetem Laufwerk und über Laufwerksbuchstaben ansprechen?)

Step 2,5: timeout im Batch von 10 Sekunden (geht)

Step 3: "NotfallbatchMaster" übermittelt startsignal für .bat-File an H2. im bat wird zuerst ein ps1 angesprochen. Im ps1 wird der Befehl (Get-VM | where { $_.State -eq 'Running' } | Stop-VM) ausgeführt (der Befehl funktioniert) ... nach einem timeout von 60 Sekunden kommt dann der shutdown vom .bat und der host fährt runter

Step 3,5: timeout im Batch von 10 Sekunden (geht)

Step 4: "NotfallbatchMaster" übermittelt startsignal für .bat an (H1). selbes system wie (H2)

ENDE

Grundsätzlich geht das alles. Das einzige, was noch nicht geht, ist der Aufruf der batchdateien bzw. der Aufruf der .ps1 dateien von den lokalen batchdateien
DerTeufelImDetail
DerTeufelImDetail 08.03.2017 um 18:05:49 Uhr
Goto Top
hab jetzt auf der "Master Maschine" PStools installiert.
Der Aufruf : "C:\Program Files (x86)\PSTools\psexec64.exe" \\Servername -u unsre-domain\User -p geheim "C:\Emergency\emergencyshutdown.ps1"
geht zwar durch, aber nun sagt er mir, dass das .ps1 keine zulässige win32-Anwendung sein....
emeriks
emeriks 08.03.2017 um 19:26:30 Uhr
Goto Top
Du musst explizit die Powershell.exe starten und das Script als Parameter übergeben.