2009-06-25 86 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

相关问题