Лучший отвечающий
Вывод в CSV из PowerShell

Вопрос
-
Здравствуйте! Возникла проблема с выводом в 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.DisableADAccount28 сентября 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