2013-07-17 3 views
0

Я хочу, чтобы экспортировать свой объект в CSV-таблицы Но если я сделать с этим codesample я просто получить Systems.Strings [] Вот мой код:Экспортируйте объекта в таблице CSV

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[] 

Я надеюсь, что это достаточно, что вы можете помочь мне Спасибо

+1

Можете ли вы предоставить код, чтобы показать как вы создаете объект '$ objAusgabe'? – goric

+0

Проблема в том, что $ objAusgabe - это объект, а не другой тип данных. Требуется код для $ objAusgabe. –

+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

+0

Нет, я не пробовал, но я доволен работой с аддонами –

+0

Жаль, что не работает Ли, если я хочу установить аддон, они просто распечатывают ошибки –

+0

вы пробовали следующее в диспетчере пакетов? Install-Package FileHelpers Какие ошибки у вас возникли? –

Смежные вопросы