6

グループ ポリシー オブジェクトが台無しになっているため、複数のコンピューターにインストールすべきではないときに 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.

ただし、2 番目の wmic 行を昇格したコマンド プロンプトにコピー アンド ペーストし、$pc を [computer] に置き換えると、問題なく動作します。PowerShell ウィンドウが昇格しています。

私のスクリプトがこれに適合する理由を誰か知っていますか? 最初の wmic コマンドが完了するまでにかなりの時間がかかる (>=5 分) ことはわかっていますが、実際に機能する 2 番目のコマンド ウィンドウでも同じように機能します。これについての洞察をいただければ幸いです。

注: ここのコンピューターはリモート PowerShell アクセス用に適切に構成されていないため、wmic を使用しています。それは私のやることリストにあります。

4

2 に答える 2

9

PowerShell の文字列解析に違反しています。代わりにこれを試してください:

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

PowerShell V3 を使用している場合は、次を使用できます。

wmic /node:$pc --% product where name="TightVNC" call uninstall
于 2013-01-03T03:01:53.480 に答える
0

私のために働いたhttp://www.tinyint.com/index.php/2011/04/20/escaping-quotes-in-powershell-exe-command-via-command-prompt/からの回答は次のとおりです。

wmic /node:$pc product where 'name=\"TightVNC\"' call uninstall
于 2016-05-27T04:36:44.333 に答える