2013-01-02 114 views
4

由於組策略對象混亂,多臺計算機都應安裝TightVNC。 GPO不見了,所以從那裏刪除軟件並不是我所知道的選項。因此,我正在編寫腳本以便從計算機列表中刪除PowerShell。錯誤:描述=無效的查詢

這是我的腳本:

if ($args.length -ne 1) { 
    Write-Warning "Must pass computer name, ending script."; 
    break 
} 

$pc = $args[0] 

Write-Output "Scanning $pc for TightVNC...." 
$prod = wmic /node:$pc product get name | where {$_ -match "TightVNC"} 
if ($prod) { 
    Write-Output "Found TightVNC, attempting uninstall...." 
    wmic /node:$pc product where name="TightVNC" call uninstall 
} else { 
    Write-Warning "Could not find TightVNC on $pc." 
} 
Write-Output "Done." 

現在,我的輸出如下:

Scanning [computer] for TightVNC.... 
Found TightVNC, attempting uninstall.... 
ERROR: 
Description = Invalid query 
Done. 

但是,如果我複製和第二WMIC線粘貼到提升的命令提示符並替換$電腦與[電腦],它工作得很好。我的PowerShell窗口被提升。

有誰知道爲什麼我的腳本會適合這個?我知道第一個wmic命令需要很長時間才能完成(> = 5分鐘),但是它在第二個命令窗口中也能正常工作。我非常感謝這方面的任何見解。

注意:我正在使用wmic,因爲這裏的計算機沒有正確配置用於遠程PowerShell訪問。這是我要做的事情清單。

回答

6

你正在運行PowerShell的字符串解析。試試這個:

wmic /node:$pc product where name=`"TightVNC`" call uninstall 

注意,對於那些對PowerShell的V3,你可以使用:

wmic /node:$pc --% product where name="TightVNC" call uninstall 
+0

這工作!現在我又遇到了另一個問題,但與腳本無關(現在工作得很好)。謝謝您的幫助。 – Skyline969