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

Powershell 如何更好地格式化此输出?,powershell,export-to-csv,Powershell,Export To Csv,我想通过管道将输出传输到.csv,但当我这样做时,我无法添加主机名,因此我决定将其传输到.txt,但是,我没有太多的空间来操作结果 最初的一艘班轮是: $([ADSI]"WinNT://$env:COMPUTERNAME").Children | where {$_.SchemaClassName -eq 'user'} | select @{l='name';e={$_.name}},@{l='LastLogin';e={$_.lastlogin}} | export-csv C:\csv.c

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

因此,基本上可以将$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添加新特性。它存储主机名。然后按照主机名、名称、最后登录名的顺序对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

因此,基本上可以将$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添加新特性。它存储主机名。然后按照主机名、名称、最后登录名的顺序对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

不需要检查AD,但可能很简单:
select name,LastLogin,@{l='hostname';e={$computer}
不需要检查AD,但可能很简单:
select name,LastLogin,@{l='hostname';e={$computer}
。。。我唯一更改的是$env:computername以匹配foreach循环中的变量。。。非常感谢你的兄弟$computers=Get Content C:\Inf_IT\InputLists\input.txt ForEach($computers中的Computer){$([ADSI]“WinNT://$Computer”).Children{${$.SchemaClassName-eq'user'}其中{$}选择{l='name';e={${l='LastLogin';e={$.LastLogin}}ForEach对象{$$$$\u124;添加成员-成员类型属性-name“主机名”-值“$Computer”;$|选择对象“HostName”、“Name”、“LastLogin”}|导出Csv“C:\inf\u It\Output\Output.Csv”-NoTypeInformation-Append}未完成。。。我唯一更改的是$env:computername以匹配foreach循环中的变量。。。非常感谢你的兄弟$computers=Get Content C:\Inf_IT\InputLists\input.txt ForEach($computers中的Computer){$([ADSI]“WinNT://$Computer”).Children{${$.SchemaClassName-eq'user'}其中{$}选择{l='name';e={${l='LastLogin';e={$.LastLogin}}ForEach对象{$$$$\u124;添加成员-成员类型属性-name“主机名”-值“$Computer”;$|选择对象“主机名”、“名称”、“上次登录”}|导出Csv“C:\inf\U It\Output\Output.Csv”-NoTypeInformation-Append}