2012-04-23 139 views
0

我有一個小腳本,它爲AD中特定OU中的所有用戶檢索LastLogonTimestamp和SAMAccount,並將時間戳轉換爲日期,並從字符串中提取日期。這部分工作正常。然後我想輸出到一個CSV,所以它可能會在Excel中打開,並完全合成爲列,並看起來很漂亮。將powershell腳本導出爲CSV

我試過ConvertTo-Csv和Export-Csv,但一直不成功。問題是我是Powershell的新手。這是我的第一個腳本,我不完全理解這是如何工作的。我的腳本可能非常雜亂,不合邏輯,但它迄今爲止完成了這項工作。

請幫忙。謝謝。

$userlist = Get-ADUser -SearchBase "OU=IT,DC=whatever,DC=com,DC=au" -Filter * -Properties * | Select-Object -Property Name,LastLogonTimestamp,SAMAccountName | Sort-Object -Property Name 

$userlist | ForEach-Object { 
    $last = $_.LastLogonTimestamp; 
    $ADName = $_.SAMAccountName; 

    $tstamp = w32tm /ntte $last; 
    if($tstamp.Length -lt "40"){}else 
    { 
     $ADDate = [DateTime]::Parse($tstamp.Split('-')[1]).ToString("dd/MM/yyyy") 
     write-host $ADDate; 
     write-host $ADName; 
    } 
} 

回答

3

你必須爲每個用戶創建和管那些給Export-CSV命令對象:

$usersList | %{ 

# current logic 

$user = new-object psobject 
$user | add-member -membertype noteproperty -name LastLogon -value $last 
$user | add-member -membertype noteproperty -name ADName -value $ADName 
$user | add-member -membertype noteproperty -name ADDate -value $ADDate 
$user 
} | export-csv test.csv -notype 

用於填充物替代語法:

$properties = @{"LastLogon" = $last; "ADName" = $ADName; "ADDate" = $ADDate} 
$user = new-object psobject -property $properties 
+0

我unvolontary downvoted你回答...可能是因爲我正在用智能手機閱讀並觸摸它。你可以編輯它,所以我可以重新投票嗎? – 2012-04-23 08:51:39

+0

@Christian - 啊,我已經這樣做:)無論如何,添加了創建對象的替代語法。 – manojlds 2012-04-23 09:01:42

+0

好的manojlds,現在感覺好多了:-) – 2012-04-23 10:07:40