0

请有人告诉我如何使用

***Get-QADComputer -LdapFilter "(operatingsystem=*server*)"***

在我下面的脚本中。(我可以让它与它在 get-qadcomputer 位上失败的文本文件一起工作)

***function inventory {
PROCESS {
$os = gwmi win32_operatingsystem -comp $_
$cs = gwmi win32_computersystem -comp $_
$obj = new-object psobject
$obj | add-member noteproperty Name $os.csname
$obj | add-member noteproperty RebootDate $os.ConvertToDateTime($os.LastBootUpTime)
$obj | add-member noteproperty Manufacturer $cs.manufacturer
$obj | add-member noteproperty Model $cs.model
$obj | add-member noteproperty Operating_System $os.caption
$obj | add-member noteproperty Architecture $os.OSArchitecture
$obj | add-member noteproperty Service_Pack $os.ServicePackMajorVersion
write-output $obj
}
}
gc C:\scripts\lastreboot\syn_pc.txt -ErrorAction SilentlyContinue | inventory | Export-Csv c:\scripts\lastreboot\inventory2.csv***
4

1 回答 1

0

您面临的这个问题是您编写的清单函数旨在直接使用 $_ ,并且您假设 $_ 变量将只是一个字符串。该命令最初有效,因为您正在从文件中提取名称列表,该文件为您提供类型为[String]的名称列表,并将此字符串集合/列表传递到管道以供库存使用。

但是在使用 Get-QADComputer 时,您将获得[Selected.Quest.ActiveRoles.ArsPowerShellSnapIn.Data.ArsComputerObject]类型的对象,而不仅仅是名称列表。这些对象有一个 name 属性,我假设你真的在追求它,以及其他信息。您只需要提取名称部分并将其传递到管道中

所以你有两个选择:

  • 更改清单函数以解决管道输入类型的差异(包含仅名称的简单字符串,或具有名称属性并仅使用名称部分的对象)

  • 更改调用脚本的方式

这是命令,我想你想要

 Get-QADComputer -LdapFilter "(operatingsystem=*server*)" | Select -ExpandProperty Name | inventory | Export-Csv c:\scripts\lastreboot\inventory2.csv

请注意Select -ExpandProperty Name,它采用 ADObject 并将仅将名称传递到您的库存函数所期望的管道中

于 2013-07-24T03:30:54.957 回答