WinForms GUI を使用して非常に単純な Powershell スクリプトを作成しました。すべてが意図したとおりに機能しますが、PowerShell で .ps1 スクリプトを実行すると、最初に黒い空のコンソール ウィンドウが表示され、次に GUI が表示されます。
とにかく、コンソール ウィンドウを非表示にするには?
よろしくお願いします
WinForms GUI を使用して非常に単純な Powershell スクリプトを作成しました。すべてが意図したとおりに機能しますが、PowerShell で .ps1 スクリプトを実行すると、最初に黒い空のコンソール ウィンドウが表示され、次に GUI が表示されます。
とにかく、コンソール ウィンドウを非表示にするには?
よろしくお願いします
私は一年前にこの件について小さな記事を書きました (フランス語で申し訳ありません)。
これは、小さな VBS スクリプトを使用して PowerShell を開始し、ウィンドウを非表示にする一般的なソリューションです (トリックは最後の,0 にあります)。
Set Args = Wscript.Arguments
'MsgBox "Chemin LDAP: " & Args(0)
'MsgBox "Classe: " & Args(1)
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nologo -Noninteractive -file c:\SlxRH\RhModif.ps1 " & chr(34) & Args(0) & chr(34) , 0
また、 slxPShell2.EXEというコンソールのない実行可能ファイルに PowerShell を埋め込みました。
このソリューションは、起動後に Powershell ウィンドウを最小化します。Powershell ウィンドウが開き、外部コードを使用せずに消えます。スクリプトの先頭に置きます。
$t = '[DllImport("user32.dll")] public static extern bool ShowWindow(int handle, int state);'
add-type -name win -member $t -namespace native
[native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0)
上記の方法ではうまくいかないことがわかりました。私はこれを使用しました:
Set objShell = CreateObject("WScript.Shell")
objShell.Run "CMD /C START /B " & objShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\WindowsPowerShell\v1.0\powershell.exe -file " & "YourScript.ps1", 0, False
Set objShell = Nothing
それが役立つことを願っています。