Главный вопрос

Главный вопрос

Я борюсь с чем-то, что должно быть очевидно простым, но кажется не таким уж простым для решения. У меня есть динамическая последовательность команд powershell для запуска. Это часть некоторого шаблона, который я написал для себя, чтобы облегчить себе рабочий процесс.

Вот простой пример сгенерированных сгруппированных команд:

$commands = {
  Write-Output "Navigating to tools->deploy";
  Set-Location "C:\tools\deploy\";
  Write-Output "OK. Run dd.ps1 [server name] to deploy.";
}

Это можно запустить $commandsс помощью Invoke-Command. Так что в конечном итоге у меня есть эта функция, которая это обрабатывает:

function invokeNow() {
  param([string]$c)
  Invoke-Command $c;
} 

Это работает отлично. Он выполняет команды в объекте в окне. Но со временем я добавил больше функциональности. Для каждой новой инструкции мне приходится каждый раз открывать powershell для этого... Это потому, что иногда, когда скрипт выполняется, я не могу выполнить другую функцию. Итак, моя цель сейчас — запустить указанную выше группу команд вновыйwindow, чтобы я мог использовать одно и то же окно оболочки для вызова нескольких задач (которые выполняются в своих собственных окнах). Я подумал, что это будет просто, поэтому я изменил функцию на

function invokeNow() {
  param([string]$c)
  Invoke-Expression "cmd /c start powershell -Command {$c} -NoProfile -NoExit";
} 

Это приводит к следующему результату:

#< CLIXML
#< CLIXML
PS C:\tools\deploy\>

Навигация работала. Однако моя выходная информация потеряна. Некоторые команды добавили инструкции вроде deploy S1 fooили deploy FS -src "data". Иногда их трудно запомнить. В связи с этим у меня есть два небольших вопроса: (1) Где мои Write-Outputданные? И (2) Что это за странная CLIXMLштука (кажется, «особенный» XML PowerShell, согласно Google)? Когда я закрываю exitэто окно, я вижу кучу XML-вещей, прежде чем окно закрывается.

Главный вопрос

Можно ли открыть новое окно PowerShell,затемправильно выполнять команды в моем $commandsобъекте (включая Write-Outputданные)?

Я уже пытался добавить Invoke-Commandк вышесказанному

Invoke-Expression "cmd /c start powershell -Command {Invoke-Command -ScriptBlock $c} -NoProfile -NoExit";

но новое окно выдает много XML-содержимого...

пс безумие


информация о версии

PS C:\> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.16299.251
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.16299.251
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Связанный контент