2009-06-25 2 views
0

У меня есть сценарий Powershell, который запрашивает пользователей, которые не изменяли свой пароль в течение 24 часов. Запрос перенаправляет вывод в файл csv. Ниже приведены Powershell скрипт и пакетный скрипт:Как поместить заголовок в файл 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?

Заголовок может быть простым: «Username» не обязательно Firstname и Lastname.

+0

Ваши пользователи должны изменить свой пароль каждые 24 часа? Вы средний sysadmin> :) –

ответ

1

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

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

+0

На самом деле я просто набрал это, не пытаясь. Возможно, это не сработает, но вы можете подумать, как собрать его вместе. Единственное место, где есть индекс, - это (($ user.properties.pwdlastset) [0]. По-видимому, это вызывает ошибку, но затем должно сделать это в вашем исходном скрипте. – Joey

+0

В качестве альтернативы вы также можете просто добавить Export- Csv для ваших циклов. Я использовал Add-Member, чтобы добавить свойство, которое можно использовать в качестве заголовка в CSV. – Joey

Смежные вопросы