FSRM Beschränkungen aufheben 24. Januar 2010

Seit der Einführung von Windows Server 2003 R2 ist es möglich, sich diverse Berichte über die Auslastung eines Fileservers erstellen zu lassen. Leider wird die Freude über das schicke Feature sehr schnell getrübt, denn alle Berichte sind in ihrem Informationsgehalt recht begrenzt. Wenn man sich z.B. alle Dateien von einem bestimmten Besitzer anzeigen lassen will, dann wird mit folgendem Bericht konfrontiert:

Ressourcen-Manager für Dateiserver

Man kann sich also nur die ersten 1000 Dateien für jeden Besitzer anzeigen lassen. Wenn man sich aber für einen einzelnen Benutzer alle Dateien anzeigen lassen will, die er momentan im Besitz hat, dann ist dieses Feature eher  nutzlos. Um trotzdem an diese Informationen zu kommen, war bis jetzt der Einsatz von Skripten oder auch Drittanbietertools notwendig.

Seit Windows Server 2008 ist es möglich, diese Beschränkungen aufzuheben. Allerdings geht das nicht über die grafische Benutzeroberfläche des “Ressourcen-Managers für Dateiserver”, sondern muss aufwendig über Skripting realisiert werden. Um die Sache etwas zu vereinfachen, habe ich das Powershell Skript “set-fsrmstoragereportlimit.ps1” erstellt. Damit können die einzelnen Beschränkungen relativ einfach angepasst werden.

##########################################
# Skript konfiguriert die Beschränkungen der FSRM Reports um.
#
# Einsetzbar ab Windows Server 2008
#
# Von Frank Röder 2010
# http://blog.iteach-online.de
#
##########################################
$values = @{"-maxfiles"=1;"-maxfilegroups"=2;"-maxowners"=3;
"-maxfilesperfilegroup"=4;"-maxfilesperowner"=5;"-maxfilesperduplgroup"=6;
"-maxduplicategroups"=7;"-maxquotas"=8;"-maxfilescreenevents"=9;
"-maxpropertyvalues"=10;"-maxfilesperpropertyvalue"=11}
 
$int64 = New-Object System.Int64
$fsrm = New-Object -comObject "fsrm.fsrmReportManager"
#prüfe ob Parameter übergeben wurden
if($Args.count%2 -eq 0 -and $Args.count -gt 0)
{
for($a=0;$a -lt $Args.Count;$a+=2)
{
if($values.containskey($Args[$a]) -and [System.Int64]::TryParse($Args[$a+1],[ref] $int64)){
"Setze neuen Wert für:" + [char]9 + $Args[$a]
"Alter Wert:" + [char]9 + $fsrm.GetReportSizeLimit($values.Item($Args[$a]))
"Neuer Wert:" + [char]9 + $Args[$a+1]
$fsrm.SetReportSizeLimit($values.Item($Args[$a]),$Args[$a+1])
}else{
parameters_alert
break
}
}
} else{
parameters_alert
}
function parameters_alert(){
 
Write-host "Falsche Anzahl an Parametern oder ungültiger Parameter! Gültige Parameter sind:" -foregroundcolor red
$values.Keys | ForEach-Object {$_ + [char]9 + "(Erlaubter Wert: 0 bis 9223372036854775807)"}
 
"Beispiel: set-fsrmstoragelimit.ps1 -maxfiles 50000"
}

Die Standardwerte für die einzelnen Werte sind:

Parameter Standardwert
MaxDuplicateGroups 100
MaxFiles 1000
MaxFileGroups 10
MaxFileScreenEvents 1000
MaxFilesPerDuplGroup 10
MaxFilesPerFileGroup 100
MaxFilesPerOwner 100
MaxFilesPerPropertyValue 100
MaxOwners 10
MaxPropertyValues 10
MaxQuotas 1000

Hinweis: Das Skript funktioniert nur unter Windows Server 2008 und kann nicht unter Windows Server 2003 R2 eingesetzt werden. Bei Windows Server 2003 R2 sind die Werte der Speicherberichte statisch hinterlegt!

Hier kann das Skript heruntergeladen werden: set-fsrmstoragereportlimit.ps1 Size: 906 bytes , 1507 Hits

Zusätzliche Quellen:
MSDN

Comments are closed.