Как поместить заголовок в CSV-файл, сгенерированный скриптом Powershell - PullRequest
0 голосов
/ 26 июня 2009

Я получил этот скрипт 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 ]

3 голосов
/ 26 июня 2009

Любая причина, почему вы не используете 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 голос
/ 26 июня 2009

Не уверен (никогда не иметь пользователя PS), но я думаю, что придерживаться

Write-Host "Username"

перед foreach, возможно, добьется цели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...