New-Object: System.Collections.Hashtable kann nicht in System.Collections.IDictonary konvertiert werden
Moin,
wahrscheinlich liegt es an der Hitze. Aber ich komme hier nicht weiter. Ich möchte gerne aus einem ldapsearch-Ergebnis ein CSV machen. Das Ergebnis sieht so aus:
Das Skript:
Leider gibt es bei der Ausführung die Fehlermeldung:
wenn ich explizit den Typ [hashtable] für $outputline angebe.
bzw.
ohne die Angabe des Datentyps.
Ich habe schon alle möglichen Seiten gelesen. Überall steht, dass es so, wie ich es geschrieben habe, geht. Aber es geht nicht. Warum?
Liebe Grüße
Erik
wahrscheinlich liegt es an der Hitze. Aber ich komme hier nicht weiter. Ich möchte gerne aus einem ldapsearch-Ergebnis ein CSV machen. Das Ergebnis sieht so aus:
# vname, people, domain.de
dn: uid=userid,ou=people,dc=domain,dc=de
zarafaAccount: 1
cn: Vorname Nachname
mail: Vorname.Nachname@domain.de
zarafaAliases: Vorname.Nachname@groupware.rz.domain.de
zarafaAliases: irgendwas@domain.de
zarafaAliases: nochrigendwas@asb-hamburg.de
Das Skript:
param (
$inputfile,
$outputfile = $(get-date -format "yyMMdd") + "userinfo.csv"
)
set-psdebug -strict
out-file $outputfile -encoding utf8 -inputobject "username;cn;dn;zarafaAccount;mail;zarafaAliases" -append
$arr_file = $(get-content $inputfile -encoding utf8)
$countline = 0
$outputline = @{}
$newrow = ""
foreach($line in $arr_file) {
$arr_linecontent = ""
if($line -match "# *") {
if($outputline) {
$newrow = New-Object PSObject -Property $outputline
# Hier scheint das Problem zu liegen.
$newrow | Export-Csv $outputfile -Delimiter ";" -encoding UTF8 -NoTypeInformation
$outputline = @{}
}
#write-host "IF # filter"
$arr_linecontent = $line.split(",")
$outputline["username"] = $arr_linecontent.substring(2)
}
else {
$arr_linecontent = $line.Split(":")
$content = $arr_linecontent[1]
if($content) {
$content.Trim()
}
$key = $arr_linecontent
if($key -eq "zarafaAliases") {
$outputline[$key] = $outputline[$key] + $content
}
else {
$outputline[$key] = $content
}
}
}
Leider gibt es bei der Ausführung die Fehlermeldung:
New-Object : Der Parameter "Property" kann nicht gebunden werden. Der Wert "System.Collections.Hashtable" vom Typ
"System.String" kann nicht in den Typ "System.Collections.IDictionary" konvertiert werden.
wenn ich explizit den Typ [hashtable] für $outputline angebe.
bzw.
New-Object : Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "name" ungültig ist. Ändern Sie den
Wert des Arguments "name", und führen Sie den Vorgang erneut aus.
ohne die Angabe des Datentyps.
Ich habe schon alle möglichen Seiten gelesen. Überall steht, dass es so, wie ich es geschrieben habe, geht. Aber es geht nicht. Warum?
Liebe Grüße
Erik
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 381807
Url: https://administrator.de/forum/new-object-system-collections-hashtable-kann-nicht-in-system-collections-idictonary-konvertiert-werden-381807.html
Ausgedruckt am: 26.03.2025 um 11:03 Uhr
1 Kommentar