将 CSV 信息导入 PowerShell 脚本



我正在尝试运行一个脚本,该脚本将CSV信息导入PowerShell以卸载远程计算机上的软件。CSV 文件包含主机名、IP 地址和已安装应用程序名称等信息。CSV 文件如下所示(抱歉输入错误):

名称,序列号,IP地址,
MAC地址,已安装的应用程序 computer1,ABC123,1.1.1.1,12:34:45:67:89,Adobe

Air基本上,这个想法是在"名称"(计算机主机名)上卸载"已安装的应用程序"(在本例中为Adobe Air)。

PowerShell 脚本:

$csv = Import-Csv C:pathreport.csv
$DisplayName = $csv."Installed Applications"
$path = Split-Path -Path $MyInvocation.MyCommand.Path
$computers = $csv.Name
foreach ($server in $computers) {
$app = Get-WmiObject -Class Win32_Product -ComputerName $server |
Where-Object {$_.DisplayName -match $csv."Installed Applications"}
$pathobj = New-Object -TypeName PSobject
$pathobj | Add-Member -MemberType NoteProperty -Name Computername -Value $server.ToUpper()
$pathobj | Add-Member -MemberType NoteProperty -Name Software -Value $csv."Installed Applications"
$var = ($app.Uninstall()).ReturnValue
if($var -eq 0) {
$pathobj | Add-Member -MemberType NoteProperty -Name Status -Value "Successfully Uninstalled"
$pathobj | Add-Member -MemberType NoteProperty -Name Date -Value $(Get-Date)
} else {
$pathobj | Add-Member -MemberType NoteProperty -Name Status -Value "Unable to uninstall"
$pathobj | Add-Member -MemberType NoteProperty -Name Date -Value $(Get-Date)
}
#Write-Output $pathobj | Export-Csv "$pathObsoleteStatus.csv" -NoTypeInformation -Append
}

当我执行它时,它总是给我:

不能对 null 值表达式调用方法。 at C:\Users\sbellec\Desktop\test5.ps1:18 char:28 + $var = ($app.卸载<<<<())。返回值 + 类别信息 : 无效操作: (卸载:字符串) [], 运行时异常 + 完全限定错误 ID : 调用方法空

我已经尝试了不同的方式来修复它,但没有结果。关于我做错了什么的任何想法?

$computers = $csv.Name

仅选择一列,因此当您运行 foreach 时,您将在此列中进行迭代;

$_.DisplayName -match $csv."Installed Applications"

以同样的方式检查 DisplayName 是否与"已安装的应用程序"列匹配,因此您在那里没有得到任何合理的结果。

你只需要在整个csv数组上运行你的foreach

foreach ($row in $csv) {

,然后使用$row。名字和$row。已安装的应用程序",以获取对应于同一服务器行的值。

最新更新