используя пакетный файл для запуска файла ps1, но скрывая командную строку после запуска?
-
26-12-2019 - |
Вопрос
Я создаю небольшой инструмент с помощью powershell и открываю его через пакетный файл.Пакетный файл имеет следующее содержимое :
powershell -file "D:\scripts\Powershell\xxx.ps1"
Теперь он открывает мой инструмент, но всегда отображает командную строку в фоновом режиме.Я хочу, чтобы CMD был скрыт после запуска моего файла.
Как этого добиться?Я пытался -hidden
но тогда моя программа скрыта:D
Спасибо
Решение
Попробуйте использовать START
утилита в вашем пакетном файле, она запустит программу в новом окне и разрешит пакетное cmd
окно для выхода в фоновом режиме.
START powershell -file "D:\scripts\Powershell\xxx.ps1"
Знать START
проявляет [потенциально] неожиданное поведение, когда первый параметр содержит двойные кавычки.
Если вы используете элементы графического интерфейса или внешние приложения и хотите скрыть окно Powershell, но не графический интерфейс, попробуйте следующее:
START powershell -WindowStyle Hidden "D:\scripts\Powershell\xxx.ps1"
Вот пример того, как я использовал batch в сочетании с графическим интерфейсом PowerShell:
Содержание C:\call.cmd:
START "" powershell -NoLogo -WindowStyle Hidden "C:\gui.ps1"
Содержание C:\gui.ps1:
# VB Assembly GUI example
Add-Type -AssemblyName Microsoft.VisualBasic
[Microsoft.VisualBasic.Interaction]::MsgBox(
"Do you like VB in PowerShell?",
[Microsoft.VisualBasic.MsgBoxStyle]::YesNo,
"Hello"
)
# Windows Forms GUI example
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show(
"Do you like Windows Forms?",
"Hello",
[System.Windows.Forms.MessageBoxButtons]::YesNo
)
# External app GUI example
& notepad.exe
Запуская call.cmd
пакет будет использовать START
чтобы запустить PowerShell [выход cmd
] и PowerShell скроет свое окно, но в остальном отобразит элементы графического интерфейса, выполненные из файла PS1.