首页 > 解决方案 > 从 CSVFile 从多台计算机获取 ADComputer

问题描述

我有一个完整的计算机信息格式的 csv 文件:

Name    OS  Site Code    AD_Status  Region  Tech
computerone Windows 10 Enterprise   ****    Exists  Chicago T T
computertwo Windows 10 Enterprise   ****    Exists  Chicago T T
computerthree   Windows 10 Enterprise   ****    Exists  Chicago T T

我正在运行一个 Powershell 脚本,该脚本从 csv 文件中获取计算机名称并检查其“modifyTimeStamp”字段。

$csvfile = Import-CSV -Path 'C:\Users\****\testexcel.csv'-Delimiter ","
$numofcompsincsv = $csvfile.psobject.properties.value[0] - 1

for ($i = 0; $i -le $numofcompsincsv; $i++) {
    Get-ADComputer -identity $csvfile[$i].psobject.properties.value[0] -Properties * | FT Name, modifyTimeStamp 
}

这样做的问题是它会一一打印计算机信息,例如:

Name            modifyTimeStamp
----            ---------------
computerone 7/19/2019 11:06:22 AM

Name            modifyTimeStamp
----            ---------------
computertwo 7/24/2019 6:02:14 AM

Name            modifyTimeStamp
----            ---------------
computerthree 7/24/2019 2:02:14 AM

我怎样才能修改它,以便它像这样打印出来:

Name            modifyTimeStamp
----            ---------------
computerone 7/19/2019 11:06:22 AM
computertwo 7/24/2019 6:02:14 AM
computerthree 7/24/2019 2:02:14 AM

标签: powershellcsvformat

解决方案


不要for循环执行此操作;改用管道:

Import-CSV -Path 'C:\Users\****\testexcel.csv' | Select -expand Name | Get-ADComputer -prop modifyTimeStamp | Select Name,ModifyTimeStamp

ETA:我显然没有正确地创建用于测试的 CSV(手动编码),并且最初将 CSV 通过管道传输到| Select Name |而不是扩展属性(在我的测试中有效)。当我使用 Excel 重新执行此操作| Select -expand Name |时,根据@js2010 的评论,我验证了这是必需的。


推荐阅读