代码之家  ›  专栏  ›  技术社区  ›  Techknow

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

  •  0
  • Techknow  · 技术社区  · 7 年前

    我想通过管道将输出传输到.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
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   ArcSet    7 年前

    所以基本上你可以添加主机名 $env:计算机名 到脚本的后面部分。下面是一个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
    
    推荐文章