如何将标头放入Powershell脚本生成的csv文件中

时间:2009-06-25 20:43:40

标签: powershell

我收到了这个Powershell脚本,用于查询24小时内未更改密码的用户。查询将输出重定向到csv文件。以下是Powershell脚本和批处理脚本:

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输出文件中?

标题可能很简单,“用户名”不一定是名字和姓氏。

2 个答案:

答案 0 :(得分: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

可能会奏效。 (提示:管道比循环更有趣:))

答案 1 :(得分:1)

不确定(永远不会有用户PS),但我认为坚持

Write-Host "Username"
在foreach之前,可能会做到这一点