我想将我的对象导出到CSV表中 但是如果我使用这个代码示例我只是得到Systems.Strings [] 这是我的代码:
Clear-Host
#$zusammen = Liste von allen UNIDs
$zusammen = New-Object System.Collections.ArrayList($null)
#Pfad zur txt/csv Datei wo die Gruppen enthalten sind
$path = "C:\gruppen.txt"
#Inhalt der Datei laden
$inpt = Get-Content $path
$la = 1
$test = @()
$vartest = $null
#Objekt für die Ausgabe wird definiert
#Für jede Gruppe die ausgegeben werden soll, wird eine Property erstellt
foreach ($temp in $inpt)
{
if($la -eq 1)
{
$objAusgabe = New-Object -TypeName PSObject
$objAusgabe | Add-Member –MemberType NoteProperty –Name $temp -Value $null
$la = 2
# $objname = New-Object -TypeName PSObject | select $temp
}
else
{
# $objname | Add-Member -MemberType NoteProperty -Name $temp -Value $null
$objAusgabe | Add-Member –MemberType NoteProperty –Name $temp -Value $null
}
}
#Funktion zum Suchen der User
function Findusers($objparam)
{
foreach($ent in $objparam)
{
#$objmitte = New-Object -TypeName PSObject | select UNID
#objuser = Gesuchter User mit allen Properties/Eigenschaften
$objuser1 = New-Object System.DirectoryServices.DirectoryEntry("LDAP://"+$ent)
#usrtype gibt durch den samaccounttype an ob es sich um einen User oder eine Gruppe handelt
#Wenn es sich um eine Gruppe handelt wird die If-Schleife durchlaufen sonst die Else-Schleife
$usrtype = $objuser1.sAMAccountType
if($usrtype -eq 268435456 -or $usrtype -eq 268435457)
{
"`t`t" + $objuser1.name + " -- Gruppe "
$objAusgabe.$temp += [string]$objuser1.name+";"
#$mitte.Add($objmitte) |Out-Null
}
else
{
"`t`t"+$objuser1.cn.ToUpper()+" -- "+$objuser1.sn+","+$objuser1.givenname
$unidgroß = [string]$objuser1.cn
[string]$objAusgabe.$temp += $unidgroß.ToUpper()+";"
}
}
#$test = $objAusgabe.$temp.Split(";")
$objAusgabe.$temp = $objAusgabe.$temp.Split(";")
# $objAusgabe.$temp = $vartest
# $objname.$temp = $vartest
# ""
# $zusammen.Add($objAusgabe)|Out-Null
}
foreach ($temp in $inpt)
{
#$usr = Gruppenname
#$mitte = New-Object System.Collections.ArrayList($null)
$usr = $temp
$str = $usr + ":-"
$str
Echo "---------------------------------------------"
$objItem = @()
#Definieren des DirectoryServices für die Gruppe\n
$strFilter = "(&(objectCategory=Group)(name=$usr))"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"
$colResults = $objSearcher.FindAll()
#-------------------------------------#
foreach ($objResult in $colResults)
{
$objItem = $objResult.GetDirectoryEntry()
$objmem = $objItem.member
Findusers($objmem)
}
}
$objAusgabe| Export-Csv C:\test3.csv -NoTypeInformation
我的csv中的输出就像
Group1 Group2 Group3
System.String[] System.String[] System.String[]
我希望这足以让你帮助我 感谢
答案 0 :(得分:0)
您是否尝试过使用Filehelpers来完成CSV操作?
尝试使用Filehelpers,他们为您完成所有艰苦的工作。创建一个类如下: -
[DelimitedRecord(",")]
public class Customer
{
public int CustId;
public string Name;
public decimal Balance;
[FieldConverter(ConverterKind.Date, "dd-MM-yyyy")]
public DateTime AddedDate;
}
...然后只需读写如下:: -
FileHelperEngine engine = new FileHelperEngine(typeof(Customer));
// To Read Use:
Customer[] res = engine.ReadFile("FileIn.txt") as Customer[];
// To Write Use:
engine.WriteFile("FileOut.txt", res);
他们有一些非常好的examples