Mrz
02

Übergeben eines Powershell Objektes als String

Filed Under (Consulting, PSAG) by on 02-03-2010 and tagged ,

Liest man in einem Powershell Script Systemobjekte aus WMI aus, z.B. die MAC Adresse eines Netzwerkadapters und versucht man dann, diese Adresse einer SQL Stored Procedure zu übergeben, damit diese in eine Datenbank gespeichert wird, dann erhält man bei der Ausführung des ExecuteNonQuery die Fehlermeldung

No mapping exists from object type System.String[] to a known managed provider native type.

Problem ist dabei die Flexibilität der Powershell, denn eine Zuweisung der Art

$scnMAC = $objItem.MACAddress

weist nicht den String der MAC Adresse der Variablen scnMAC zu, sondern das komplette Objekt. Dieses aber kann man nicht in ein nvarchar Feld einer Stored Procedure übergeben:

$cmd.Parameters.Add(“@scnMAC”,$scnMAC)

das ergibt den genannten Fehler. Lösung ist, das Objekt bei der Zuweisung in einen String zu verwandeln, Powershell typisch mit einer Pipe

$scnMAC = $objItem.MACAddress | Out-String

und schon enthält die Variable scnMAC den String mit der MAC Adresse anstelle des Objektes.




Artikel, die Sie auch interessieren könnten:

coded by nessus


Leave a Reply