Donnerstag, 27. Oktober 2011

Zufallspasswort generieren und zuweisen

Das nachfolgende Script wurde aufgrund der Anforderung geschrieben, dass das Passwort des lokalen Administrators automatisiert auf allen Konzernclients auf ein Zufallspasswort geändert werden muss. Desweiteren muss dieses Passwort zurück übergeben werden, damit es automatisiert in der DSM 7 weiterverarbeitet werden kann.
Es wurde hier der Umweg über die Registry gewählt, weil die Basis ein W7 x64 Host ist, auf welchem die PowerShell Integration der DSM 7 derzeit leider nicht funktioniert.

#Script created by: Markus Zierer
#Script created at: 27.10.2011
#
#PowerShell Script to change the Password of the local User "Administrator"
#to a Random Value. Also write the Password back to Registry for further
#Processing.
#
#Prepare Variables
$computer
$user
= $env:COMPUTERNAME = "administrator"#generate Random Password$rand = New-Object System.Random1..15 | ForEach { $NewPassword = $NewPassword + [char]$rand.next(33,127) }#Set local Admin Password$de = [adsi]"WinNT://$computer/$user,user"$de.SetPassword($NewPassword)$de.SetInfo()#Hand Over Password to NetInstall as VariableSet-ItemProperty -Path "HKLM:\Software\Wow6432Node\Kunde\Software" -Name "LocalAdminPassword" -Value $NewPassword

Mittwoch, 26. Oktober 2011

DSM 7 Cmdlets und Syntax

Seit der DSM 7 ist es nun ebenfalls möglich, per "CallScript" Befehl, auch Powershell Scripts (.ps1) auszuführen. Durch das ausführen per CallScript besteht ausserdem die Möglichkeit, auf bestimmte Cmdlets zuzugreifen. Diese Methode ist sehr ähnlich zu der bisherigen Variante, auf Variablen aus VBScript heraus zugreifen zu können, ist aber gleichzeitig viel einfacher, da die Syntax von PowerShell wesentlich einfacher lesbar ist. Hier nun die einzelnen Cmdlets sowie eine kurze Beschreibung zu Ihrer Verwendung:

Get-NIVar
Syntax: Get-NIVar "NIVariable"

Set-NIVar
Syntax: Set-NIVar "NIVariable" "VariablenInhalt"

Write-NIReport
Syntax: Write-NIReport "Text"
Hier wird eine Infozeile ins aktuelle NI Logfile geschrieben

Set-NIError
Syntax: Set-NIError "Text"
Hier wird ein Fehlereintrag ("E") im Logfile erzeugt.

Get-NiInstParam
Dieses Cmdlet wird direkt so benutzt. Es liest ALLE definierten Installationsparameter für das aktuelle Projekt aus und schreibt diese in ein Array (welches dann per PowerShell weiter bearbeitet werden kann)

Freitag, 14. Oktober 2011

Disable Machine Password Change

Bei der Nutzung von Virtuellen Maschinen und Snapshots zur Entwicklung im SW Deployment Umfeld, gibt es ein wichtiges Detail zu beachten. Die Passwortänderung des Computerkontos in der Domäne.
Standardmässig ist jede Windows Maschine so konfiguriert, dass das Passwort des Computerkontos in der Domäne automatisch nach einer bestimmten Zeit geändert wird. Bei der regulären Nutzung von Rechnern und VDIs stellt das kein Problem dar. Bei der Nutzung von Snapshots jedoch, läuft man irgendwann in das Problem hinein, dass der Client das Passwort geändert hat, während im Snapshot noch der alte Hashwert enthalten ist. Die Folge ist, dass der Client aus der Domäne fliegt.

Dieses Problem kann man jedoch dadurch umgehen, dass man die Änderung des Passwortes in der Registry deaktiviert, BEVOR man den Snapshot erstellt. Der entsprechende Key ist wie folgt:

HKLM\System\CurrentControlSet\Services\NetLogOn\Parameters

Hier nun den Value "DisablePasswordChange" von 0 auf 1 abändern, und schon wird das Computerpasswort nicht mehr geändert.

Nutzung von Variablen in DSM 7

Neu in der DSM 7 ist die Möglichkeit, Systemweit Variablen verwalten zu können. Um auf diese Variablen wiederum zugreifen zu können, müssen diese Variablen aber auch anders referenziert werden. Die Varianten, wie Sie aus enteo 5.x und v6.x bekannt waren, funktionieren jetzt nur noch für sog. Script Interne Variablen, sprich Variablen, welche innerhalb eines NetInstall Scriptes gesetzt werden. Möchte man nun auf die restlichen Variablen Zugreifen, muss man diese über ein spezielles Namensscheck ansprechen.
Die Gute Nachricht ist, man muss das ganze Schema nicht permanent im Kopf behalten. Wenn man Anfängt eine Variable zu schreiben, also ein "%" Zeichen schreibt, erscheint wie bisher auch, eine Vorschlagsliste mit den aktuell Angezeigten Variablen. Wählt man hier nun eine Gruppe aus (z.B. CurrentComputer) und bestätigt die Auswahl mit der Eingabetaste, wird automatisch eine Auswahl aus der nächsten Gruppe angezeigt. Das ganze funktioniert so lange, bis die Variable komplett ist. Selbstverständlich kann man die ganzen Werte auch von Hand eintragen, sofern man die Werte im Kopf hat.
Hierüber lassen sich nicht nur selbstdefinierte Variablen nutzen, sondern man kann auch andere Werte Abfragen. Als Beispiel lassen sich hier Werte aus dem Basic Inventory nennen.

Möchte man nun auf dem aktuellen Computer eigene Variablen nutzen, sieht die Syntax wie folgt aus:

%CurrentComputer.Var.<GroupTag>.<VariableName>%