如何更好地格式化此输出?

问题描述 投票:0回答:1

我想将输出管道输出到.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

我已将其修改为针对列表运行,但是,原始代码并不表示主机名...我很想知道如何执行此操作。这是修改后的代码:

$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
}
powershell export-to-csv
1个回答
2
投票

因此,基本上您可以将$ 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的顺序重新排序customobject

%{ 
    $_ | 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
© www.soinside.com 2019 - 2024. All rights reserved.