输出文件不必要的字符



我有一个脚本,它在下面ping一个机器列表,将结果输出到CSV,并获取机器的lastlogontimestamp。

它工作得很好,除了最后的登录时间戳是这样的:

CCC-APP01172.22.100.15,@{lastLogonDate=2018年7月25日13:24:54}

我如何摆脱多余的字符:@{lastLogonDate=…}

$OutputCSV = "C:TEMPOUPingResults.csv"
$SearchLocation = "OU=AA,OU=Servers,DC=LocA,DC=XYZ,DC=com"
$Computers = Get-ADComputer -Filter * -SearchBase $SearchLocation |
Select Name |
Sort-Object Name
$Computers = $Computers.Name
$Headers = "ComputerName,IP Address,LastLogonTimeStamp"
$Headers | Out-File -FilePath $OutputCSV -Encoding UTF8
foreach ($computer in $Computers) {
Write-host "Pinging $Computer"
$Test = Test-Connection -ComputerName $computer -Count 1 -ErrorAction SilentlyContinue -ErrorVariable Err
if ($test -ne $null) {
$IP = $Test.IPV4Address.IPAddressToString
$LastLogonTimeStamp = Get-ADComputer $Computer -Prop CN,lastLogonTimestamp |
Select @{n="lastLogonDate";e={[datetime]::FromFileTime($_.lastLogonTimestamp)}}
$Output = "$Computer,$IP,$LastLogonTimeStamp"
$Output | Out-File -FilePath $OutputCSV -Encoding UTF8 -Append
} else {
$Output = "$Computer,$Err"
$Output | Out-File -FilePath $OutputCSV -Encoding UTF8 -Append
}
}

表达式... |Select-Object @{N='SomeName';E={"SomeValue"}}将生成一个对象,该对象的属性名为SomeName,值为"SomeValue"

您在输出中看到的是该对象的字符串表示。

如果只需要值,请将$LastLogonTimeStamp赋值更改为:

$LastLogonTimeStamp = [datetime]::FromFiletime((Get-ADComputer $Computer -Prop lastLogonTimestamp).lastLogonTimestamp)

最新更新