Jump to content

Powershell Exception


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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

Geschrieben

$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 :)

Geschrieben

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.

Geschrieben

@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.

Geschrieben

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()
}

Geschrieben

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.

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...