这里的想法是静默卸载程序。不幸的是,程序的msi是自定义的,并在卸载过程中执行批处理文件。我想要做的是阻止在PowerShell卸载脚本期间显示此窗口。我正在使用wmi卸载方法,因为程序使用的msi不响应相当或卸载标志(/ q,/ x,/ uninstall)。我试图将它作为后台作业运行,但窗口仍然出现。该脚本如下所示:
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)
放纵,我并不为此感到骄傲,但我非常确定如果您尝试使用远程操作来运行您的脚本,用户将无法看到该窗口:
我只是尝试:
$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