【发布时间】:2020-07-27 00:10:18
【问题描述】:
我正在尝试用更好的代码扩展我现有的脚本。所以我想让脚本证明软件是否真的被卸载了。我试图用 foreach 做到这一点。这是我的代码:
function deletesoftware2 () {
$ErrorActionPreference = 'SilentlyContinue'
$appname = @(
#"*HP Support Assistant*",
#"*HP Support Solutions Framework*",
#"*Dell SupportAssist*",
#"*Dell Command | Update*",
"*NuGet*"
)
ForEach($app in $appname){
Write-Host "Removing $app from System"
Get-Package -Name $app | Uninstall-Package -ErrorAction SilentlyContinue | Out-Null
Start-Sleep -Seconds 20
Get-Package | Where-Object{$_.Name -like $app} | Format-Table name | Out-String -OutVariable software | Out-Null
if ($software -match $app) {
Write-Host "$app wasnt found or could not removed"
}
else {
Write-Host "$app was removed"
}
}
Start-Sleep -Seconds 10
}
编辑: 如果我运行显示的脚本,它会直接跳转到 else,即使软件没有被删除。我试图将 if 中的“$app”直接替换为 NuGet 并且它有效。但是,如果我写主机 $app 变量,它会准确地说 Nuget,这就是我想要的。问题是,它仍然无法正常工作。
好吧,这不符合我的要求,如果有人可以帮助我,我会很高兴! 提前致谢!
【问题讨论】:
-
请编辑问题并解释实际结果。没有包被删除?删除了错误的软件包?还有什么?
-
@vonPryz 我编辑了它,对不起我的英语,我希望你能明白我的意思。
标签: windows powershell cmd scripting ps