Benutzer mit den meisten Antworten
Strings als Parameternamen benutzen

Frage
-
Hallo,
ich programmiere derzeit eine grafische Oberfläche, mit der man Exchange Mailkontos erstellen kann ... die Textfelder werden dynamisch anhand einer csv Datei erstellt. Mit den eingegebenen Daten erstelle ich anschließend mit New-Mailbox ein neues Konto und setze mit Set-User die eingegebenen Attribute. Da nicht immer die selben Textfelder vorhanden sind, möchte ich gerne dynamisch über die vorhandenen drüber iterieren und jeweils Set-User aufrufen ... jetzt die eigentliche Frage:
ist es möglich Strings als Parameternamen zu benutzen ... etwa so:
$attr_name = "-FirstName" $attr_val = "Karl" Set-User $attr_name $attr_val
ich habe schon sehr viel gegooglet, jedoch nichts zu der Problematik gefunden. Invoke-Expression ist keine Lösung, da z.B der Passwort-Parameter vom Typ Secure String sein muss, weshalb ein einfaches zusammenbauen des Befehls nicht funktioniert. Ich freue mich über jede Hilfe.mfg chumbalum
Antworten
-
Stimmt. Du hast recht, der secure-string wird in einen einfachen String umgewandelt. Um das zu vermeiden, kannst du aber die Erstellung des secure-string auch zur Laufzeit des "invoke-expression"-codes durchführen.
Ein Beispiel mit "New-AdUser", das vom Prinzip her genauso funktioniert:
$com = "New-AdUser " $p1 = "-name " $p1val = "test001 " $p2 = "-AccountPassword " $p2val = "(ConvertTo-SecureString 'geheimespasswort' -AsPlainText -Force)" Invoke-Expression ($com+$p1+$p1val+$p2+$p2val)
Das Passwort "geheimespasswort" könntest du in Zeile 5 auch wieder durch einen String ersetzen, falls gewünscht.Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Dienstag, 30. August 2011 13:15
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Mittwoch, 31. August 2011 07:07
Alle Antworten
-
Ich sehe nicht warum Invoke-Expression nicht funktionieren soll. Wenn du einen Securestring brauchst, machst du dir einfach einen:
$secpass = ConvertTo-SecureString "geheimespasswort" -AsPlainText -Force
Und ansonsten baust du dir deinen Befehl nach dem Prinzip $a = "kommando ", $b= "-parametername ", $c = "parameterwert" ---> invoke-expression ($a+$b+$c) zusammen.
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".
-
-
Stimmt. Du hast recht, der secure-string wird in einen einfachen String umgewandelt. Um das zu vermeiden, kannst du aber die Erstellung des secure-string auch zur Laufzeit des "invoke-expression"-codes durchführen.
Ein Beispiel mit "New-AdUser", das vom Prinzip her genauso funktioniert:
$com = "New-AdUser " $p1 = "-name " $p1val = "test001 " $p2 = "-AccountPassword " $p2val = "(ConvertTo-SecureString 'geheimespasswort' -AsPlainText -Force)" Invoke-Expression ($com+$p1+$p1val+$p2+$p2val)
Das Passwort "geheimespasswort" könntest du in Zeile 5 auch wieder durch einen String ersetzen, falls gewünscht.Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Dienstag, 30. August 2011 13:15
- Als Antwort markiert Raul TalmaciuMicrosoft contingent staff Mittwoch, 31. August 2011 07:07