Использовать командный файл для запуска файла ps1, но скрыть командную строку после запуска?

Я создаю небольшой инструмент с PowerShell и открываю его через командный файл. Пакетный файл имеет следующий контент:

powershell -file "D:\scripts\Powershell\xxx.ps1"

Теперь он открывает мой инструмент, но всегда отображает командную строку в фоновом режиме. Я хочу, чтобы CMD был скрыт после запуска моего файла.

Как этого добиться? Я старался -hidden но чем вся моя программа скрыта:D

Спасибо

1 ответ

Решение

Попробуйте использовать START Утилита в вашем командном файле, она запустит программу в новом окне и позволит cmd окно для выхода в фоновом режиме.

START powershell -file "D:\scripts\Powershell\xxx.ps1"

Знать START демонстрирует [потенциально] неожиданное поведение, когда первый параметр содержит двойные кавычки.

Если вы используете элементы графического интерфейса или внешние приложения и хотите скрыть окно Powershell, но не графический интерфейс, попробуйте следующее:

START powershell -WindowStyle Hidden "D:\scripts\Powershell\xxx.ps1"

Вот пример того, как я использовал пакетную обработку в паре с графическим интерфейсом 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.

Другие вопросы по тегам