Как мне лучше отформатировать этот вывод? - PullRequest
0 голосов
/ 18 сентября 2018

Я хотел бы передать вывод в .csv, но когда я это сделал, я не могу добавить имя хоста, поэтому я остановился на его съемке в .txt, однако у меня не так много возможностей для манипуляциирезультаты.

Первоначальная однострочная строка была:

$([ADSI]"WinNT://$env:COMPUTERNAME").Children | where {$_.SchemaClassName -eq 'user'} | select @{l='name';e={$_.name}},@{l='LastLogin';e={$_.lastlogin}} | export-csv C:\csv.csv

Я изменил ее для запуска со списком, однако оригинальный код не обозначает имя хоста ... Iхотел бы знать, как это сделать.Вот модифицированный код:

$computers = Get-Content C:\LocalLogin.txt
ForEach ($Computer in $Computers)
{
    $COMPUTER | Out-File C:\StaleLocalLogins.txt -Append
    $([ADSI]"WinNT://$COMPUTER").Children |
        where {$_.SchemaClassName -eq 'user'} |
        select @{l='name';e={$_.name}},@{l='LastLogin';e={$_.lastlogin}} |
        Out-File C:\StaleLocalLogins.txt -Append
}

1 Ответ

0 голосов
/ 18 сентября 2018

Таким образом, вы можете добавить имя хоста из $ env: COMPUTERNAME в более позднюю часть скрипта.Ниже приведен 1 вкладыш, который расположен для удобства чтения

$([ADSI]"WinNT://$env:COMPUTERNAME").Children |
    where {$_.SchemaClassName -eq 'user'} |
    select @{l='name';e={$_.name}},@{l='LastLogin';e={$_.lastlogin}} |
    %{
        $_ |
        Add-Member -MemberType NoteProperty -Name "HostName" -Value "$env:COMPUTERNAME"
        $_ | Select-Object "HostName", "Name", "LastLogin"
     } | Export-Csv "C:\Test\test.csv"

. Эта часть добавляет новое свойство к созданному объекту PSCustomObject.Он хранит имя хоста.Затем он переупорядочивает пользовательский объект в следующем порядке: HostName, Name, LastLogin

%{ 
    $_ | Add-Member -MemberType NoteProperty -Name "HostName" -Value "$env:COMPUTERNAME"
    $_ | Select-Object "HostName", "Name", "LastLogin"
}

, здесь он в виде однострочного

$([ADSI]"WinNT://$env:COMPUTERNAME").Children | where {$_.SchemaClassName -eq 'user'} | select @{l='name';e={$_.name}},@{l='LastLogin';e={$_.lastlogin}} | foreach-object {$_ | Add-Member -MemberType NoteProperty -Name "HostName" -Value "$env:COMPUTERNAME"; $_ | Select-Object "HostName", "Name", "LastLogin"} | Export-Csv "C:\scripts\test.csv" -NoTypeInformation
...