none
Вывод в CSV из PowerShell RRS feed

  • Вопрос

  • Здравствуйте! Возникла проблема с выводом в CSV-файл

    Есть скрипт, который ищет пользователей AD, которые входили последний раз в систему до 01.01.15 и отключает их. Я бы хотел залогировать сей процесс, но у меня никак не получается. Подскажите как нужно правильно сделать?

    Вот сам скрипт:

    $LastLogonDateTime=get-date -year 2015 -month 1 -day 1
    $LastLogonFileTime=$LastLogonDateTime.ToFileTime()
    $OutputFile="C:\GUP\LastlogonTimeStamp.csv"
    #[Int64]::FromFileTime([DateTime]$LastLogonStaticValue)
    $hqServer="..."
    #$InactiveDays = New-TimeSpan -days 264
    #$LastLogonTimeMark= (get-date) - $InactiveDays
    $testUsers=Get-ADUser -Filter {(sAMAccountName -like 'Sevast*') -and  (lastLogontimeStamp -lt $LastLogonFileTime ) } -Properties DistinguishedName, lastLogonDate, whenCreated, sAMAccountName, useraccountcontrol -Server $hqServer|
    select DistinguishedName, sAMAccountName, lastLogonDate, whenCreated, @{Name="Disabled"; Exp={$_.useraccountcontrol -band 0}}|?{$_.Disabled -eq 0}
    #ft sAMAccountName,lastLogonDate, whenCreated, Disabled -AutoSize
    ForEach($User in $testUsers)
    {
    $User
    Disable-ADAccount -Identity $User.DistinguishedName -Server $hqServer 
    }

    Out-File $OutputFile  -Encoding UTF8

    В результате на выходе получается кракозябра, если без вывода,то скрипт отрабатывает без проблем.

    Заранее спасибо!

    25 сентября 2015 г. 16:07

Ответы

  • $LastLogonDateTime=(get-date -year 2015 -month 1 -day 1).ToFileTime()
    $OutputFile="C:\GUP\LastlogonTimeStamp.csv"
    $hqServer="..."
    
    $users = Get-ADUser -Filter {(sAMAccountName -like 'Sevast*') -and  (lastLogontimeStamp -lt $LastLogonFileTime ) -and (Enabled -eq '$true') }  -Server $hqServer
    $users | Disable-ADAccount -Server $hqServer  -PassThru |
    	Get-ADUser -Properties lastLogonDate, whenCreated -Server $hqServer | 
    		select DistinguishedName, sAMAccountName, lastLogonDate, whenCreated | Export-Csv $OutputFile -NoTypeInformation -Encoding UTF8
    


    • Предложено в качестве ответа Vector BCOModerator 25 сентября 2015 г. 16:47
    • Помечено в качестве ответа prophecy666 25 сентября 2015 г. 17:31
    • Снята пометка об ответе prophecy666 25 сентября 2015 г. 17:32
    • Отменено предложение в качестве ответа prophecy666 25 сентября 2015 г. 17:36
    • Помечено в качестве ответа prophecy666 25 сентября 2015 г. 17:36
    • Изменено KazunEditor 26 сентября 2015 г. 7:27
    25 сентября 2015 г. 16:37
    Отвечающий

Все ответы

  • $LastLogonDateTime=(get-date -year 2015 -month 1 -day 1).ToFileTime()
    $OutputFile="C:\GUP\LastlogonTimeStamp.csv"
    $hqServer="..."
    
    $users = Get-ADUser -Filter {(sAMAccountName -like 'Sevast*') -and  (lastLogontimeStamp -lt $LastLogonFileTime ) -and (Enabled -eq '$true') }  -Server $hqServer
    $users | Disable-ADAccount -Server $hqServer  -PassThru |
    	Get-ADUser -Properties lastLogonDate, whenCreated -Server $hqServer | 
    		select DistinguishedName, sAMAccountName, lastLogonDate, whenCreated | Export-Csv $OutputFile -NoTypeInformation -Encoding UTF8
    


    • Предложено в качестве ответа Vector BCOModerator 25 сентября 2015 г. 16:47
    • Помечено в качестве ответа prophecy666 25 сентября 2015 г. 17:31
    • Снята пометка об ответе prophecy666 25 сентября 2015 г. 17:32
    • Отменено предложение в качестве ответа prophecy666 25 сентября 2015 г. 17:36
    • Помечено в качестве ответа prophecy666 25 сентября 2015 г. 17:36
    • Изменено KazunEditor 26 сентября 2015 г. 7:27
    25 сентября 2015 г. 16:37
    Отвечающий
  • Спасибо,намного упростили, но жалуется:

    Get-ADUser : Variable: 'Enabled' found in expression: $Enabled is not defined.

    25 сентября 2015 г. 17:33
  • В этом выражении убрать $  - $Enabled -eq '$true' ,чтоб получилось:

    Enabled -eq '$true'

    26 сентября 2015 г. 7:26
    Отвечающий
  • Коллеги, теперь 2 новые ошибки-

    Get-ADUser : String was not recognized as a valid Boolean.
    At C:\GUP\Scripts\PS\Get-ADUser\Get.ps1:5 char:10
    + $users = Get-ADUser -Filter {(sAMAccountName -like 'tyrty*') -and  (lastLogontim ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidType: (:) [Get-ADUser], FormatException
        + FullyQualifiedErrorId : String was not recognized as a valid Boolean.,Microsoft.ActiveDirectory.Management.Commands.Get 
       ADUser
     
    Disable-ADAccount : Cannot validate argument on parameter 'Identity'. The argument is null. Provide a valid value for the 
    argument, and then try running the command again.
    At C:\GUP\Scripts\PS\Get-ADUser\Get.ps1:6 char:10
    + $users | Disable-ADAccount -Server $hqServer  -PassThru |
    +          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidData: (:) [Disable-ADAccount], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.DisableADAccount

    28 сентября 2015 г. 10:37
  • $LastLogonDateTime=get-date -year 2015 -month 1 -day 1
    $OutputFile="C:\GUP\LastlogonTimeStamp.csv"
    $hqServer="..."
    
    $users = Get-ADUser -Filter {(sAMAccountName -like 'tyrty*') -and  (lastLogontimeStamp -lt $LastLogonDateTime ) -and (Enabled -eq $true) }  -Server $hqServer
    $users | Disable-ADAccount -Server $hqServer  -PassThru |
    	Get-ADUser -Properties lastLogonDate, whenCreated -Server $hqServer | 
    		select DistinguishedName, sAMAccountName, lastLogonDate, whenCreated | Export-Csv $OutputFile -NoTypeInformation -Encoding UTF8

    28 сентября 2015 г. 10:44
    Отвечающий
  • Спасибо, никак не могу понять, а в чем была проблема?)) Теперь все работает, остался единственный вопрос-

    При выводе в CSV все атрибуты получаются в 1 столбце, не подскажете как можно разделить выводимую информацию?

    Например, SAMAccount name один столбец, lastlogon date, другой и т.д.

    Заранее спасибо!

    28 сентября 2015 г. 11:00
  • Если в Excel,то установить -Delimiter ";" :

    Export-Csv $OutputFile -NoTypeInformation -Encoding UTF8 -Delimiter ";"

    28 сентября 2015 г. 11:02
    Отвечающий
  • Спасибо, а из за чего возникали предыдущие 2 ошибки?
    28 сентября 2015 г. 11:05