h0scHberT 10 Geschrieben 14. Juli 2011 Melden Teilen Geschrieben 14. Juli 2011 Hallo zusammen, ich versuch ein Script für den Ressourcen-Manager zu schreiben, leider hängt das an einer kleinen Stelle. Hier mein Script: $fqtm = New-Object -com Fsrm.FsrmQuotaManager $User_Grenzen = get-content("C:\cd4 TMP\Größer2GB.txt") $User_Grenzen | foreach-object{ $tmp = $_.split(";") $quota = $fqtm.GetQuota($tmp[0]) $quota.QuotaLimit = $tmp[1] $quota.Commit() } Und hier die Fehlermeldung: Ausnahme beim Festlegen von "QuotaLimit": "Typkonflikt. (Ausnahme von HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))" Bei Zeile:5 Zeichen:8 + $quota. <<<< QuotaLimit = $limit + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyAssignmentException Wichtig ist auch noch der Inhalt der ausgelesenen Datei: D:\Freigaben\user.homedir\m.musternamm;2.65GB D:\Freigaben\user.homedir\f.musterfrau;2.6GB D:\Freigaben\user.homedir\g.muster;3GB usw..... Der Fehler ist die Angabe vom QuotaLimit, das lese ich ja aus der Datei aus. Aber leider "frisst" das Script das nicht :/ Als test habe ich mal [string]$tmp[1] leider ohne Erfolg versucht. Wenn ich aber per Hand 2GB angebe klappt es. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 14. Juli 2011 Melden Teilen Geschrieben 14. Juli 2011 Was sagt: $fqtm = New-Object -com Fsrm.FsrmQuotaManager $quota = $fqtm.GetQuota("D:\Freigaben\user.homedir\m.musternamm") ? Zitieren Link zu diesem Kommentar
h0scHberT 10 Geschrieben 14. Juli 2011 Autor Melden Teilen Geschrieben 14. Juli 2011 keine Fehlermeldung...klappt also Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 14. Juli 2011 Melden Teilen Geschrieben 14. Juli 2011 Muss es evtl. statt "2.6GB" "2,6GB" heißen? Zitieren Link zu diesem Kommentar
h0scHberT 10 Geschrieben 14. Juli 2011 Autor Melden Teilen Geschrieben 14. Juli 2011 hab ich auch schon versucht :( Zitieren Link zu diesem Kommentar
Sigma 10 Geschrieben 14. Juli 2011 Melden Teilen Geschrieben 14. Juli 2011 Hallo, bin nicht gerade der PS-Experte, aber was mir auffällt: Welchen Typ ist $tmp[1]? $tmp[1].GetType().FullName Vermutlich ist es ein String. Du brauchst für .QuotaLimit bestimmt einen Zahlenwert (wahrscheinlich double). Grüße, Sigma Zitieren Link zu diesem Kommentar
h0scHberT 10 Geschrieben 14. Juli 2011 Autor Melden Teilen Geschrieben 14. Juli 2011 $quota.quotaLimi.Gettype().fullname gibt mir das hier zurück: System.Decimal Das würde das Problem erklären. Was mich aber wundert ist wenn ich $test = "2GB" festlege und das dann anstatt $tmp[1] verwende klappt es ja auch. Und das ist ja kein decimal :) Zitieren Link zu diesem Kommentar
h0scHberT 10 Geschrieben 14. Juli 2011 Autor Melden Teilen Geschrieben 14. Juli 2011 ich hab das Problem wie folgt gelöst: Einfach als Limit in der Datei eine Zahl angeben. Die Zahl ist dann das Limit in Bytes!!!! z.B: bei einem Limit von 4,1 GB muss dann in der Datei 4402341478 stehen. Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 14. Juli 2011 Melden Teilen Geschrieben 14. Juli 2011 Mal was anderes. Mit Import-Csv kannst du diese Datei wesentlich einfacher einlesen und die Spalten stehen dir dann als Objekte zur Verfügung. Das andere Problem geht auch einfacher zu lösen, muss jetzt leider weg und hb Mittwoch erst wieder Zeit. Vllt guck ich dann nochmal rein. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 14. Juli 2011 Melden Teilen Geschrieben 14. Juli 2011 Oder dynamisch umrechnen. Zitieren Link zu diesem Kommentar
h0scHberT 10 Geschrieben 14. Juli 2011 Autor Melden Teilen Geschrieben 14. Juli 2011 @Dukel Dynamisch umrechnen ist kein Problem. Da ich den Output in die Datei "kontrollieren" kann ist das egal, es würde dann nur lesbarer sein. @mamamia Welchen Vorteil habe ich denn wenn ich zwei Objekte habe? Mit dem einlesen hab ich ja kein Problem, nur das weiterverarbeiten machte Probleme. Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 20. Juli 2011 Melden Teilen Geschrieben 20. Juli 2011 Ich hab es mir jetzt nochmal angeschaut. Das Problem ist, dass $quota.QuotaLimit nur ganze Zahlen entgegen nimmt. Mann könnte jetzt also die GB Werte in ganzheitliche Zahlen umwandeln, sowie Dukel das schon angesprochen hat. Das sieht dann so aus: $quota.QuotaLimit = "{0:0}" -f ($tmp[1]/1024) Ich hatte ja Import-CSV angesprochen, daher hier mal das ganze Script, so wie ich das schreiben würde: Import-Csv -Path "C:\tmp\Größer2GB.TXT" -header "Name","Wert" -Delimiter ";" | % { $quota = $fqtm.GetQuota($_.Name) $quota.QuotaLimit = "{0:0}" -f ($_.Wert/1024) $quota.Commit() } Zitieren Link zu diesem Kommentar
h0scHberT 10 Geschrieben 21. Juli 2011 Autor Melden Teilen Geschrieben 21. Juli 2011 Danke für deine Rückmeldung. Vom logischen her hab ich das auch so gelöst nur eben ohne Objekte und das umrechnen hab ich "manuel" gemacht...das dynamisch zu machen ist auch kein Problem. Falls ich das nochmal machen muss würde ich das ändern. Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 21. Juli 2011 Melden Teilen Geschrieben 21. Juli 2011 Kein Thema, dafür sind wir da ;) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.