2015-09-29 46 views
0

我不明白爲什麼我從export-csv失敗的地方out-file成功?

$users=gc C:\0NIX\03SCRIPTS\TMP\OCH\old_users.txt 
foreach ($user in $users) 
{ 
get-aduser -identity $user -pr * | Select-Object name, samaccountname, telephonenumber |export-csv C:\0NIX\03SCRIPTS\TMP\1.csv -notype 
} 

沒有得到數據上的CSV當我毀了下方,出檔-append,它確實有數據

$users=gc C:\0NIX\03SCRIPTS\TMP\OCH\old_users.txt 
foreach ($user in $users) 
{ 
get-aduser -identity $user -pr * | Select-Object name, samaccountname, telephonenumber |out-file -append C:\0NIX\03SCRIPTS\TMP\1.txt 
} 
+0

對於初學者在'export-csv'示例中,您不是'-append'ing。當你只需要'telephonenumber'時不要使用'-Properties *'。 ' - 屬性telephonenumber'。你可能會寫錯誤的數據來覆蓋好的結果。 – Matt

+0

我剛剛運行了以下結果......這是一個奇怪的現象,數據中有很多錯誤,因爲無法找到該帳戶,但數據中有一些有效的帳戶, out-file,但不是export-csv $ users = gc C:\ 0NIX \ 03SCRIPTS \ TMP \ OCH \ old_users.txt foreach($ users in $ users) { get-aduser -identity $ user -pr telephonenumber | export-csv -append C:\ 0NIX \ 03SCRIPTS \ TMP \ 1.csv -NoTypeInformation } – 200mg

回答

1

你是不是在您的export-csv示例中使用-Append。我猜你會用不好的數據覆蓋它(這就是說我會在你的輸出文件中預期一個結果)。考慮下面的例子,它簡化了整個過程,並與管道一起工作,因此不需要-Append

Get-Content "C:\0NIX\03SCRIPTS\TMP\OCH\old_users.txt" | ForEach-Object{ 
    get-aduser -identity $_ -Properties telephonenumber | Select-Object name, samaccountname, telephonenumber 
} | Export-Csv C:\0NIX\03SCRIPTS\TMP\1.csv -NoTypeInformation 

我也想知道你是否在抑制錯誤?檢查$ErrorActionPreference的結果,通常是繼續

Get-Aduser如果找不到匹配的用戶,則不返回對象。我認爲,如果沒有的話,你會期待空白輸出。你需要在你的邏輯中有一些錯誤檢測來解釋這些錯誤。不是唯一的方法,但我們讓用戶進入變量$result。如果數據存在,則沿管道傳遞。如果沒有,我們也創建一個空的條目以便隨之移動。

Get-Content "C:\0NIX\03SCRIPTS\TMP\OCH\old_users.txt" | ForEach-Object{ 
    $result = get-aduser -identity $_ -Properties telephonenumber -ErrorAction SilentlyContinue 
    If($result){ 
     $result | Select-Object name, samaccountname, telephonenumber 
    } Else { 
     New-Object -TypeName Psobject -Property @{ 
      Name = $_ 
      samaccountname = "" 
      telephonenumber = "" 
     } 
    } 

} | Export-Csv C:\0NIX\03SCRIPTS\TMP\1.csv -NoTypeInformation 
+0

我剛纔運行以下結果相同......這是一個奇怪的,數據中有很多錯誤,因爲帳戶無法找到,但在數據中有一些有效的帳戶,這些帳戶顯示爲out-file,但不是export-csv $ users = gc C:\ 0NIX \ 03SCRIPTS \ TMP \ OCH \ old_users.txt foreach $用戶在$用戶){get-aduser -identity $ user -pr電話number | export-csv -append C:\ 0NIX \ 03SCRIPTS \ TMP \ 1.csv -NoTypeInformation} – 200mg

+0

我剛剛按原樣運行了鏈接的腳本,它也沒有返回任何數據。我想知道如果export-csv很難,因爲用戶txt文件中90%的帳戶被刪除。 – 200mg

+0

而且$ erroractionpreference設置爲「continue」 – 200mg