Enteo, Powershell und Wake on Lan (WoL)

boxWie versprochen geht es weiter mit der Automatisierung von Enteo durch Powershell. In diesem Blog Eintrag nehme ich mir die Funktion für das Aufwecken eines PCs vor. Leider funktioniert hier die WoL Funktion von Enteo nicht immer. Das liegt u.a. daran, dass bei einem neuen PC nicht alle Informationen vorliegen. In den meisten Netzen wird ein normales WoL Paket (ein Broadcast Paket) nicht an alle Subnetze verteilt. Der Enteo Server und der zu weckende Client sind im Allgemeinen in unterschiedlichen Subnetzen beheimatet. Daher muss mit einem directed Broadcast gearbeitet werden. Dazu wird das Broadcast Paket direkt an die Broadcast Adresse des Zielsubnetzes geschickt. Dazu ist aber die IP Adresse und die Subnetzmaske zur Ermittlung der Broadcast Adresse notwendig. Diese Information liegt Enteo nicht immer vor und ich habe noch keinen Weg gefunden, diese Info beim Erstellen des Computerkontos mitzugeben.

Continue reading

Posted in Powershell | Tagged , , , , | Leave a comment

SCOM: SCX Source Code

photo-cameraDie System Center Cross Platform Solutions wurde von Microsoft als Open Source Produkt auf Codeplex bereitgestellt. Dies hat den Vorteil, dass man die SCX an andere Linux Systeme anpassen und selber nachschauen kann, wie Microsoft programmiert. Bei einer Recherche ist mir folgender Codeausschnitt aufgefallen:

#elif defined(sun)
// According to the Pegasus Solaris implementation they don't know how
// to determine this number, but they still return 0 for unlimited.
nolu = 0;
return true;
#else
// Thanks to the glory of free software there is no limit on the number of users!
nolu = 0;
return true;
#endif

Gefunden in osinstance.cpp unter http://scx.codeplex.com/SourceControl/changeset/view/32074#

“Thanks to the glory of free software”: Entweder wurde der Kommentar direkt aus der Original Pegasusimplementierung übernommen, oder ein paar Entwickler bei Microsoft haben doch eine gute Meinung über Linux. Oder ist das vielleicht Ironie?

Posted in Deutsch, Operations Manager, System Center | Tagged , , | Leave a comment

Enteo und Automatisierung Teil 4

gearsIn diesem Teil werden die Code Schnippchen zusammengebaut. Als Input benötigt das Script eine CSV Datei mit folgendem Header:

client,OU,User,Mac,OS,Softwareliste

  • Client: Name des neuen Computers
  • OU: Abteilungsname (wird als OrganisationalUnit abgebildet)
  • User: Benutzername (wird in Description hinterlegt)
  • Mac: MAC-Adresse des Computers (wird in InitialMacAddress hinterlegt)
  • OS: Gruppe, in der der Computer für die OS-Installation eingeordnet werden muss
  • Softwareliste: CSV Liste der zuzuordnenden Software (muss in ” stehen)

Somit sieht das Powershell Script so aus:

Continue reading

Posted in Deutsch, Powershell | Tagged , , | Leave a comment

Enteo und Automatisierung Teil 3

basket-fullKommen wir nun zum dritten Teil der Powershell Beispiele. Nach diesem Teil haben wir alle wesentlichen Bausteine für die automatisierte Rechnervorbereitung zusammen.

In diesem Teil wird die Software zu dem neu angelegten Computer zugeordnet. Dabei wird davon ausgegangen, dass die Software über statische Gruppen verteilt wird.

Als Input wird das fertige Programm eine CSV Datei erhalten, in der pro Zeile ein Computer steht. In der letzten Spalte mit dem Namen Softwareliste steht eine Liste der zuzuordnenden Software, die wiederum per Komma getrennt ist.

Continue reading

Posted in Deutsch, Powershell | Tagged , , | Leave a comment

Profilepfad per Batch-Datei auslesen

Bei einigen Automatisierungen ist es notwendig den Profilpfad eines Benutzers auszulesen und einen eventuellen DFS Pfad in einen physikalischen Pfad aufzulösen.

Hierfür habe ich eine kleine Batch-Datei geschrieben:

@echo off
set samaccountname=%~1
for /f "tokens=* usebackq" %%a in (`AdFind.exe -f "samaccountname=%samaccountname%" profilePath /list`) do (
set profilePath=%%a
)

for /f "delims=<> usebackq tokens=1,2,3,4,5" %%a in (`dfsutil diag viewdfspath %profilepath%`) do (
     if NOT %%e.==. set profilePath=%%e
)

echo %profilePath%

Der Profilpfad wird in Zeile 3 mit Hilfe von adfind anhand des Benutzernamens ermittelt, per for ausgewertet und an eine Umgebungsvariable übergeben.
Diese wird in Zeile 7 an dfsutil übergeben, dass mit dem Befehl diag den physikalischen Pfad anzeigt (ermittelt mit dem aktuellen Standort). Die Ausgabe wird erneut mittels for ausgewertet, wobei die Zeilen an den Größer- und Kleinerzeichen getrennt werden. An fünfter Stelle steht dabei der physikalische Pfad. Handelt es sich bei dem Profilpfad um keinen DFS basierten, dann ist die fünfte Stelle leer und wird daher nicht an die Variable übergeben.

Innerhalb einer anderen Batch-Datei kann diese einfach per call getprofilepath.cmd SAMACCOUNTNAME aufgerufen und die Variable profilePath später weiterverwendet werden.

Posted in Deutsch, Tools | Tagged , , | Leave a comment