Powershell 如何更好地格式化此输出?
我想通过管道将输出传输到.csv,但当我这样做时,我无法添加主机名,因此我决定将其传输到.txt,但是,我没有太多的空间来操作结果 最初的一艘班轮是: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
$([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}