我有一个脚本,可以根据是否安装,卸载或未知软件(无法ping,RPC服务器不可用等)查询AD计算机是否在输出到不同.csv文件的软件中安装
现在,我在安装了软件的计算机上安装了csv,我正在尝试使用Get-WmiObject
来卸载软件,但是我无法正确引用CSV。我究竟做错了什么? .csv的布局如下:
Name comp1 comp2 comp3
这是我基本上要为CSV中的每一行运行的脚本:
$computers = Import-Csv C:\Users\AaronGDL\Desktop\CompInstalled.csv
foreach ($Name in $computers) {
Write-Host $_.Name
$Remove = Get-WmiObject -Class Win32_Product -ComputerName $Name -Filter "Name >like '%Software%'"
$Remove.Uninstall()
}
答案 0 :(得分:2)
您的$computers
变量是从具有Name
列的CSV填充的,因此最终得到了一组PowerShell对象,每个对象都有一个Name
属性。因此,您需要引用此属性来获取ForEach
循环中的每台计算机名称,因此-ComputerName $Name
必须成为-ComputerName $Name.name
:
$computers = Import-Csv C:\Users\AaronGDL\Desktop\CompInstalled.csv
foreach ($Name in $computers) {
Write-Host $Name.name
$Remove = Get-WmiObject -Class Win32_Product -ComputerName $Name.name -Filter "Name >like '%Software%'"
$Remove.Uninstall()
}
或者,您可以执行以下操作:
foreach ($Name in $computers.name) { .. }
然后继续在循环中引用$Name
。