Я хочу создать графический интерфейс для моих скриптов Powershell, чтобы другие тоже могли их легко использовать. У меня есть сценарий главного меню, который вызывает некоторые другие сценарии. Для одного из них мне понадобился повышенный процесс Powershell.
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSFilePath`"" -Verb RunAs; exit }
Теперь моя проблема в том, что отображается не только графический интерфейс из $ PSFilePath, но и пустое окно консоли в фоновом режиме.
Я пытался использовать -WindowStyle Hidden
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSFilePath`"" -WindowStyle Hidden -Verb RunAs; exit }
Но это привело к тому, что консоль и графический интерфейс были скрыты.
В любом случае, чтобы скрыть это окно консоли, но не графический интерфейс?
Всего 1 ответ
Некоторое время назад я нашел решение, оно где-то здесь, в StackOverflow, но не может найти ссылку на него сейчас. Откроется и сразу закроется пустое окно консоли.
Просто вставьте его в начало вашего скрипта:
$dllvar = '[DllImport("user32.dll")] public static extern bool ShowWindow(int handle, int state);'
add-type -name win -member $dllvar -namespace native
[native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0)