将Get-ADComputer导出为CSV

时间:2017-08-28 14:12:18

标签: powershell csv

我正在开发一个脚本,它从CSV中获取主机名,将它们存档到Get-ADComputer,然后将某些对象保存在原始CSV的某些列中。

虽然解决方案看起来像是一个基本任务(下面的代码),我的问题是,Get-ADComputer的输出总是(你可以看到我玩Out-String但也试过其他格式化选项)包含很多NewLine字符或其他格式问题导致CSV混乱。

Clear-Host
Import-Module ActiveDirectory
$import = Import-Csv 'XXX' -Delimiter ';'


Foreach ($row in $import){
    $hostname = $row.HOSTNAME
    if($hostname.length -gt 3){
        $computer = Get-ADComputer -Filter {Name -like $hostname} -Properties LastLogonDate, LastLogonTimeStamp
        $row.AD_LastLogon.ToString() = $computer | Select-Object LastLogonDate | Select-Object -first 1 | FT -HideTableHeaders | Out-String
        $row.AD_LLTimestamp = $computer | Select LastLogonTimestamp |Select-Object -first 1 | FT -HideTableHeaders | Out-String
    }


}
$import | Export-Csv 'XXX' -Delimiter ';' -NoType

我现在的问题是,如果有人可以帮助获取一个方法来获取例如Get-ADComputer's LastLogonDate的裸字符串结果,而不包含任何格式或标题。

提前致谢!

1 个答案:

答案 0 :(得分:2)

使用-ExpandProperty的{​​{1}}参数仅提取所需的参数。您一次只能指定一个参数来启动。

Select-Object

我不相信$row.AD_LastLogon = $computer | Select-Object -ExpandProperty LastLogonDate -First 1 | Out-String $row.AD_LLTimestamp = $computer | Select-Object -ExpandProperty LastLogonTimestamp -First 1 应该是必要的。 Get-ADComputer不应该找到多台同名的计算机。

此外,您不需要检索LastLogonDate和LastLogonTimestamp。 The former is the same value as the latter,刚刚从LastLogonTimestamp使用的恼人的NT Time Epoch转换为DateTime。你有一个需要两者的系统吗?

最后,只是一个注释,但是:

-First 1

没有意义。您无法为方法分配值。如果没有错误或者什么都不做,我会感到惊讶。