2009-06-25 29 views
0

我得到了這個Powershell腳本,它查詢了24小時未更改密碼的用戶。查詢將輸出重定向到csv文件。下面是PowerShell腳本和批處理腳本:如何將頭文件放到由Powershell腳本生成的csv文件中

PowerShell腳本:

$root = [ADSI]'' 
$searcher = new-object System.DirectoryServices.DirectorySearcher($root) 
$searcher.filter = "(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))" 
$searcher.sizelimit = 5000 

[Void]$searcher.PropertiesToLoad.Add("cn") 
[Void]$searcher.PropertiesToLoad.Add("samAccountName") 
[Void]$searcher.PropertiesToLoad.Add("pwdLastSet") 

$users = $searcher.findall() 

$UserOU = "OU=Mountain,DC=Atlanta,DC=ga" 
$PWDays = (Get-Date).AddDays(-1) 

$UserCount = 0 
$UserPW = 0 

foreach($user in $users) 
    { 

    if ($user.path -like "*$UserOU") 
     { 
     $usercount = $UserCount 

     if ([datetime]::FromFileTime(($user.properties.pwdlastset)[0]) -le $PWDays) 
      { 
      $UserPW = $UserPW + 1 

      Write-Host $user.Properties.cn 
      } 
     } 

    } 

批處理腳本:

powershell.exe d:\temp\query.ps1 > D:\temp\query.csv 

我的問題是:如何把改劇本把報頭的用戶名中csv輸出文件?

標題可能很簡單是'用戶名'不一定是名和姓。

+0

您的用戶必須每24小時更換一次密碼?你是一個意思系統管理員> :) – 2009-06-25 20:58:23

回答

1

不知道(永遠不會有用戶PS),但我想這在foreach之前堅持

Write-Host "Username" 

,可能做的伎倆

3

你爲什麼不使用Export-Csv的原因嗎?你可以將你的對象插入它,它將包含標題。東西沿線

$users | 
? { $_.Path -like "*$UserOU" } | 
? { [datetime]::FromFileTime(($user.properties.pwdlastset)[0]) -le $PWDays } | 
% { $_ | Add-Member -PassThru NoteProperty Username $_.Properties.cn } | 
select Username | 
Export-Csv D:\temp\query.csv 

可能工作。 (提示:管道比循環更有趣:))

+0

感謝您有關Export-csv的建議。我嘗試用你的代碼替換foreach,但我得到了「不能索引到一個空數組」。 – titanium 2009-06-25 22:35:44

相關問題