![주요 질문](https://rvso.com/image/1558694/%EC%A3%BC%EC%9A%94%20%EC%A7%88%EB%AC%B8.png)
분명히 간단해야 하지만 해결하기가 쉽지 않은 문제로 어려움을 겪고 있습니다. 실행할 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을 열어야 합니다. 때로는 스크립트가 실행 중일 때 다른 기능을 실행할 수 없기 때문입니다. 이제 내 목표는 위의 명령 그룹을 다음과 같은 방식으로 실행하는 것입니다.새로운창을 사용하여 동일한 셸 창을 사용하여 여러 작업(자체 창에서 실행됨)을 호출할 수 있습니다. 간단할 것 같아 기능을 다음과 같이 변경했습니다.
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
것은 무엇입니까(Google에 따르면 "특별한" powershell XML로 보임)? 해당 창을 닫으 려고 하면 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