【PowerShell】黒い画面(PowerShellウィンドウ)を非表示にしてメッセージボックスだけを表示したい。StreamDeckとの兼ね合いもあって結構苦労しました。

パソコン関係

慣れないPowerShellでメッセージボックスを作ることに成功しました。
画像入り、文字の強調、色々やれて満足。

でも、拡張子.ps1ファイルを実行すると、後ろに黒い画面がつきまといます。

とび
とび

これ、いやだ…

メッセージボックスだけが表示されるようにしたいです。
ここで現れた4つのナゾ
最終的にうまくいったけれど、同じことにはまる人がいるかもしれないので情報として備忘録にします。

スクリプト内に指示するも言うこときかず

こんなコードを入れました。

Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.Visible = $false  # ウィンドウを非表示にする
(本文)
# フォームを表示
$result = $form.ShowDialog()
とび
とび

これで黒い窓消えるんじゃないの~?!

消えません。ナゾ1

ショートカットを作ってリンク先をちょいと加工

次に、拡張子.ps1ファイルのショートカットを作成して、そのプロパティからリンク先をいじるというもの。
ファイル名の前にパラメータ(?)を追記します。
ファイル名前後のダブルクォーテーションを忘れずに。

powershell -WindowStyle hidden "リンク先のファイル名.ps1"

実行時の大きさも「最小化」にしておきます。

拡張子.lnk をダブルクリックすると、見事、PowerShellウィンドウは非表示のまま、メッセージボックスだけ表示することに成功しました\(^o^)/

ところが、次にこの.lnkをStreamdeckの「開く」アクションで指定すると、PowerShellウィンドウは出てきてしまうのです。ナゾ2

.ps1を起動するための.batを作る

次に、拡張子.ps1のファイルを起動するためのバッチファイルを作ることにしました。

@echo off
PowerShell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Users\ファイル名.ps1"

これを、ファイル名.bat で保存して、ダブルクリックして実行してみます。

とび
とび

普通に黒い窓でるんですけど…

ナゾ3

.batをStreamDeckで開いてみる

普通にダブルクリックしたら黒い窓が非表示にならなかったバッチファイルですが、いちかばちか、先例のように逆に作用することもあるようだし、StreamDeckの「開く」アクションに入れてみます。

とび
とび

消えた!黒窓!

なんということでしょう。

バッチファイルを実行しても非表示にならなかったPowerShellウィンドウが、StreamDeckから開いたら非表示になりました(/・ω・)/。ナゾ4

どういう理屈かわかりません。でも出来たから備忘録に残しておきます。

タイトルとURLをコピーしました