2012-08-07 4 views
1

원격 컴퓨터에서 프로그램을 제거하고 싶습니다. 설치에 사용 된 MSI의 위치를 ​​알고 있습니다. 원격 서버에 있으며 경로는 아래의 변수 $MSIPathFile에서 볼 수 있습니다.원격 컴퓨터에서 프로그램 제거

나는 다음과 같은 스크립트를 실행하면 :

Invoke-Command -Computer $TargetServer -ScriptBlock {Param($MSIPathFile, $UninstallFlag, $QuietFlag) Start-Process msiexec.exe "/x" $MSIPathFile "/qn"} -ArgumentList "$MSIPathFile", "/x", "/qn" 
A positional parameter cannot be found that accepts argument 'c:\biztalkdeployment\x.Int.MIS-3.0.0.msi'. 
+ CategoryInfo   : InvalidArgument: (:) [Start-Process], ParameterBindingException 
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand 

사람이 내가 잘못하고있어 어떤 조언을 주시겠습니까 : 나는 다음과 같은 오류가

$TargetServer = "d-vasbiz01" 
$MSIPathFile = "c:\biztalkdeployment\x.Int.MIS-3.0.0.msi" 

Invoke-Command -Computer $TargetServer -ScriptBlock {Param($MSIPathFile, $UninstallFlag, $QuietFlag) Start-Process msiexec.exe "/x" $MSIPathFile "/qn"} -ArgumentList "$MSIPathFile", "/x", "/qn" 

를?

답변

6

이것은 실제로 내 질문에 대한 대답은 아니지만 원격으로 MSI를 제거하는 문제를 해결합니다. 나는 이것이 다른 기술을 시도하는 마지막 3 시간을 보냈다 것과 같이 이것이 다른 누군가를 도울다는 것을 희망한다!

한 줄의 코드로이 작업을 수행 할 수 있습니다.

(은 Get-WmiObject를 -Class Win32_Product와 -Filter -ComputerName $에 대상 서버 "이름 = 'BizTalk 2010 3.0.0에 대한 x.Int.MIS'") .Uninstall()

은 다음 TechNet 페이지의 의례 : http://technet.microsoft.com/en-us/library/dd347651.aspx

1

늦은 편집으로 인해 PC에서 충돌이 발생하여 회신 했으므로 반쯤 업데이트되었습니다.

문제는 시작 시작 프로세스가 변수를 확장하여 명령으로 실행하지 않는 것입니다. 그래서 내가 작동하게하려면 실행 파일에 대한 경로를 포함하는 문자열을 만들고 나서 사용하려는 매개 변수에 다른 문자열을 작성해야합니다. 그런 다음 Invoke-expression 명령을 사용하여 실행합니다. 다음은 코드를 편집 할 수 있으면 좋겠지 만 예제와 설명이 마음에 드신다고 생각하면 아래 예가 있습니다.

$MSIPathFile = "c:\biztalkdeployment\x.Int.MIS-3.0.0.msi" 


$msiexec = "C:\Windows\System32\msiexec.exe" 
$arguments = '/x' + $MSIPathFile + " /qn" 
Invoke-Expression -Command "$msiexec $arguments" 
+0

대답 해 주셔서 감사합니다. 그러나 더 넓은 문제에 대한 대체 솔루션을 찾았습니다. –

+0

이것이 작동하지 않는 이유를 설명하고, 동일한 문제가 발생하여이를 수행했습니다. – justinf

관련 문제