PowerShell для удаления нескольких приложений? - PullRequest
1 голос
/ 29 октября 2011

Я новичок в PowerShell и ищу способ удалить несколько приложений.У меня есть список приложений в текстовом файле, который я хочу удалить.Вот код, который у меня пока есть:

# Retrieve names of all softwares to un-install and places in variable $app

$App = Get-Content "C:\temp\un-installApps.txt"

# Cycle through each of the softwares to un-install and store in the WMI variable

Foreach ($AppName in $App)
{
    $AppTmp = Get-WmiObject -query "Select * from win32_product WHERE Name like" + $AppName 
    $AppNames = $AppNames + $AppTmp
}

foreach ($Application in $AppNames )
{
    msiexec /uninstall $Application.IdentifyingNumber
}

Следующие строки вызывают проблемы

$AppTmp = Get-WmiObject -query "Select * from win32_product WHERE Name like" + $AppName 
$AppNames = $AppNames + $AppTmp"

Есть идеи, как мне заставить это работать?

1 Ответ

3 голосов
/ 29 октября 2011

Я думаю, это потому, что между like и именем приложения нет пробела, и вокруг имени приложения должны быть одинарные кавычки. Эта часть должна выглядеть как like '" + $AppName + "'".

Тем не менее, вы можете сделать весь сценарий более простым, как это:

$App = Get-Content "C:\temp\un-installApps.txt"

gwmi win32_product|
    where { $App -contains $_.Name }|
    foreach { $_.Uninstall() } | out-null
...