2012-06-29 2 views
0

여기서 아이디어는 자동으로 프로그램을 제거하는 것입니다. 불행히도 프로그램의 msi는 사용자 정의이며 제거 프로세스 중에 배치 파일을 실행합니다. 내가 뭘 하려는지 PowerShell을 제거하는 스크립트 중에이 창을 표시하지 않도록하는 것입니다. 프로그램에서 사용하는 msi가 상당히 응답하지 않거나 플래그 (/ q,/x,/uninstall)를 제거하지 않기 때문에 wmi uninstall 메소드를 사용하고 있습니다. 배경 작업으로 실행하려고 시도했지만 창은 계속 표시됩니다. 다음과 같이 스크립트 같습니다추가 창이 powershell 스크립트에 표시되지 않도록하십시오.

start-job -scriptblock ` 
    {(Get-WmiObject -class Win32_Product |? {$_Name -eq "Annoying1"}).uninstall()} ` 
    -Name Uninstall1 
$job = get-job -name Uninstall1 
wait-job $job 
receive-job $job 

이 주로 제거 작업이 배치 파일을 실행하는 cmd를 윈도우가 표시되고 실행됩니다 포인트가되는 지점에 도달 할 때까지 숨겨 실행됩니다. 추가 창을 표시하지 않고이 스크립트를 실행하는 방법에 대한 아이디어가 있습니까?

스크립트는 -windowstyle hidden으로 실행됩니다.

난 그냥 시도 :

+0

당신이 필요한 권한이 제공, 더러운 해결책이 될 만 할 수 있음, 당신은 "제거"사용자를 작성하고 해당 자격 증명을 사용하여 작업을 시작할 수 있습니다. 명령 프롬프트는 현재 로그인 한 사용자에게만 표시됩니다. –

답변

1

은 관대, 당신이 시도하는 경우 및 localY 창을 리모팅 사용하여 스크립트를 실행하는 것이 I'am이 자랑하지만, I'am 확실히 확인은 사용자가 볼 수 없습니다 될 : 귀하의 경우에 시도에서

$sess = New-PSSession -ComputerName localhost 
Invoke-Command -Session $sess -ScriptBlock {calc.exe} 
get-process "calc" 

:

$sess = New-PSSession -ComputerName localhost 
$job = Invoke-Command -Session $sess -ScriptBlock {(Get-WmiObject -class Win32_Product |? {$_Name -eq "Annoying1"}).uninstall()} -asjob -Name Uninstall1 
wait-job $job 
receive-job $job 
+0

예, 이것은 훌륭한 아이디어이며 트릭을 수행 할 예정이지만 안타깝게도 'New-PSSession'에서 필요로하는 WinRM 서비스는 승인 된 구성에서 사용할 수 없습니다. –

관련 문제