2013-01-02 1 views
4

엉망진 된 그룹 정책 개체 때문에 여러 컴퓨터에 TightVNC가 설치되어 있지 않아야합니다. GPO가 없어 졌으므로 거기에서 소프트웨어를 제거하는 것은 내가 알고있는 옵션이 아닙니다. 따라서 필자는 컴퓨터 목록에서 PowerShell을 제거하기 위해 스크립팅을하고 있습니다.오류 : 설명 = 잘못된 쿼리

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

을 그러나 내가 복사하고 상승 된 명령 프롬프트에 두 번째 WMIC 라인을 붙여 $를 대체 할 경우, 다음과 같이 내 출력은 지금

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." 

:

내 스크립트입니다 [컴퓨터]와 PC, 그것은 잘 작동합니다. 내 PowerShell 창이 열립니다.

내 스크립트가이 문제를 해결하는 이유를 아는 사람이 있습니까? 첫 번째 wmic 명령을 완료하는 데 꽤 오랜 시간이 걸리지 만 (> = 5 분), 실제로 작동하는 두 번째 명령 창에서도 마찬가지입니다. 나는 이것에 대해 어떤 통찰력을 주셔서 감사합니다.

참고 : 여기의 컴퓨터가 원격 PowerShell 액세스를 위해 제대로 구성되지 않았기 때문에 wmic를 사용하고 있습니다. 할일 목록에 있습니다.

답변

6

PowerShell의 문자열 파싱에 익숙하지 않습니다. 대신이 시도 :

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

참고, PowerShell을 V3에 사람들을 위해, 당신은 사용할 수 있습니다

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

을! 이제 다른 문제가 있지만 스크립트와 관련이 없습니다 (현재 잘 작동 함). 도와 주셔서 감사합니다. – Skyline969