0

ここでの考え方は、プログラムをサイレント モードでアンインストールすることです。残念ながら、プログラムの msi はカスタムであり、アンインストール プロセス中にバッチ ファイルを実行します。私がやろうとしているのは、powershell アンインストール スクリプト中にこのウィンドウが表示されないようにすることです。プログラムが使用する msi が完全またはアンインストール フラグ (/q、/x、/uninstall) に応答しないため、wmi アンインストール メソッドを使用しています。バックグラウンド ジョブとして実行しようとしましたが、ウィンドウがまだ表示されます。スクリプトは次のようになります。

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

アンインストール ジョブがバッチ ファイルが実行されるポイントに到達するまで、これはほとんど非表示で実行されます。この時点で、コマンド ウィンドウが表示されて実行されます。余分なウィンドウを表示せずにこのスクリプトを実行する方法のアイデアはありますか?

スクリプトも一緒に実行さ-windowstyle hiddenれます。

4

1 に答える 1

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
于 2012-06-29T03:42:28.427 に答える