1

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"

これを機能させる方法はありますか?

4

1 に答える 1

3

likeとアプリケーション名の間にスペースがなく、アプリケーション名を一重引用符で囲む必要があるためだと思います。その部分は次のようになりますlike '" + $AppName + "'"

ただし、次のようにスクリプト全体をより単純にすることもできます。

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

gwmi win32_product|
    where { $App -contains $_.Name }|
    foreach { $_.Uninstall() } | out-null
于 2011-10-29T11:59:36.863 に答える