2012-06-29 38 views
0

這裏的想法是靜默卸載程序。不幸的是,該程序的msi是自定義的,並在卸載過程中執行批處理文件。我想要做的是防止在PowerShell卸載腳本中顯示此窗口。我正在使用wmi卸載方法,因爲程序使用的msi沒有響應完全或卸載標誌(/ q,/ x,/ 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運行使用遠程處理窗口腳本不會被用戶看到:

$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服務未啓用我們的已批准配置。 –

相關問題