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
Donnerstag, 27. Oktober 2011
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)
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.
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>%
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>%
Mittwoch, 29. Dezember 2010
Delete specific files
This script was developed to delete files with a specific extension inside a given folder. In this case, installation logs from MS Patch / Hotfix Installations will be deleted. This script can easily be adopted to delete other files also.
DIM fso, f, fc, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("c:\winxp")
Set fc = f.Files
For Each file in fc
if strcomp(right(file.name,4),".log",1)=0 then
fso.DeleteFile("c:\winxp\" & file.name)
end if
Next
DIM fso, f, fc, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("c:\winxp")
Set fc = f.Files
For Each file in fc
if strcomp(right(file.name,4),".log",1)=0 then
fso.DeleteFile("c:\winxp\" & file.name)
end if
Next
Delete specific folders
This script is designed to search and delete temporary folders, which are created by MS Patch / Hotfix Installations. The script can be easily adopted to be used for other folders also. This script will find and delete hidden and system folders also, so be careful when using it.
The script uses the Windows Scripting Host functions.
DIM fso, folder, subflds, fld
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("c:\winxp")
Set subflds = folder.SubFolders
For Each fld in subflds
if strcomp(left(fld.name,1),"$",1)=0 then
fso.DeleteFolder("c:\winxp\" & fld.name)
end if
Next
The script uses the Windows Scripting Host functions.
DIM fso, folder, subflds, fld
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("c:\winxp")
Set subflds = folder.SubFolders
For Each fld in subflds
if strcomp(left(fld.name,1),"$",1)=0 then
fso.DeleteFolder("c:\winxp\" & fld.name)
end if
Next
Donnerstag, 2. Dezember 2010
Enable TimeMachine for Unsupported Drives
By Default, TimeMachine only supports Network Drives capable of the "afp" protokoll. The problem is, that these drives often are more expensive then regular one's dedicated for use in Windows Networks. MacOS X Supports "smb" protokoll too, but TimeMachine would not accept those drives by default. Following there is a short guide, how to enable that support. You will need the Terminal Console, so open it an continue:
1. Enable use of unsupported drives
defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
2. Create Sparsebundle File
hdiutil create -size 200G -fs HFS+J -type SPARSEBUNDLE "MACNAME_MAC-adress.sparsebundle"
where:
-size defines Max. space used for Backups
MACNAME is the name of your Mac e.g. iMac
MAC-Adress is the MAC adress of your Ethernet Card
3. Mount Share and copy Sparsebundle File
Now mount the NAS Share to your Mac and copy the sparsebundle file onto.
Take care the share is mounted always and start TimeMachine. Now you're Done.
1. Enable use of unsupported drives
defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
2. Create Sparsebundle File
hdiutil create -size 200G -fs HFS+J -type SPARSEBUNDLE "MACNAME_MAC-adress.sparsebundle"
where:
-size defines Max. space used for Backups
MACNAME is the name of your Mac e.g. iMac
MAC-Adress is the MAC adress of your Ethernet Card
3. Mount Share and copy Sparsebundle File
Now mount the NAS Share to your Mac and copy the sparsebundle file onto.
Take care the share is mounted always and start TimeMachine. Now you're Done.
Abonnieren
Posts (Atom)