Powershell: Registry von Clients nach CAS-Array durchsuchen und berichten

Hier hatte ich schon ein Tool gezeigt mit dem der Servername im Outlook Profil geändert werden kann. Etwa von einem Single Server zu einem CAS-Array. Das Tool lässt sich zum Beispiel einfach per Login Script ausführen. Allerdings stellt sich dann die Frage, ob man auch alle Clients “erwischt” hat und auch der Servername korrekt getauscht wurde. Für diesen Zweck habe ich mir ein kleinen Powershell Script gebaut, welches die Registry der Clients nach dem neuen Servernamen durchsucht, das Script muss nur mit einer CSV-Datei gefüttert werden, die Benutzernamen und Computernamen enthält. Also etwa so:

CAS-Array

Voraussetzung für das Script ist ein User der Zugriff auf die Registry der PCs hat, also etwas ein Domain Admin und dieses Powershell Modul:

http://archive.msdn.microsoft.com/PSRemoteRegistry

Hier nun das Script:

$logfilepath = „D:\user.csv“
$casarray = „cas.frankysweb.local“
$domain = „frankysweb.local“

#————————————————————————————-

$logfile = import-csv $logfilepath -Delimiter „;“
foreach ($line in $logfile)
{

$user = $line.Username
$computername = $line.Hostname

#Check if Host alive

if (test-connection -computername $computername -count 1 -quiet)
{

#Username to SID
$objUser = New-Object System.Security.Principal.NTAccount(„$domain“, „$user“)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$SID = $strSID.Value

#search remote registry

$regkey = „$SID\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles“

if (get-regkey -ComputerName $computername -hive „Users“ -key $sid -name Software -ErrorAction SilentlyContinue)
{

if (get-regkey -ComputerName $computername -hive „Users“ -key „$sid\Software\Microsoft\Windows NT\CurrentVersion“ -name „Windows Messaging Subsystem“ -ErrorAction SilentlyContinue)
{
$outlookprofile = get-regkey -ComputerName $computername -hive „Users“ -key $regkey -name * -ErrorAction SilentlyContinue | get-regvalue -type String -recurse
if ($outlookprofile -match „$casarray“)
{
write-host „Benutzer:`t$user`tComputer:`t$computername`tStatus:`tCAS Array gefunden“ -foregroundcolor „green“
}
else
{
write-host „Benutzer:`t$user`tComputer:`t$computername`tStatus:`tCAS Array nicht gefunden“ -foregroundcolor „red“
}
}
else
{
write-host „Benutzer:`t$user`tComputer:`t$computername`tStatus:`tOutlook nicht gefunden“ -foregroundcolor „yellow“
}
}
else
{
write-host „Benutzer:`t$user`tComputer:`t$computername`tStatus:`tSID nicht gefunden“ -foregroundcolor „yellow“
}
}
else
{
write-host „Benutzer:`t$user`tComputer:`t$computername`tStatus:`tPC aus“ -foregroundcolor „gray“
}
}

Viel Erfolg.

Leave a Comment