다른 .ps1 파일에서 .ps1을 실행하는 방법은 무엇입니까?


14

PowerShell 파일이 두 개 있습니다. a.ps1 및 b.ps1.

a.ps1의 중심점에서 b.ps1에서 코드 실행을 시작하고 a.ps1 스크립트를 종료하고 싶습니다.

두 파일이 모두 같은 폴더에 있다고 생각하면 어떻게해야합니까?


현재 PS '경로 파일'을 사용하지 않고 성공했습니다
GibboK

답변:


4

새로운 Power Shell 프로세스에서 b.ps1을 실행해도 괜찮습니까? 그렇다면 다음 내용을 설명해야합니다.

Invoke-Item (start powershell ((Split-Path $MyInvocation.InvocationName) + "\b.ps1"))

"Invoke-Expression"은 동일한 프로세스에서 실행되지만 b.ps1의 종료를 기다립니다.



2

나는 이것을 다른 기사에서 얻었지만 여기에 적용 할 수 있습니다 : thanks ( /programming//users/3905079/briantist )

먼저, 단일 세션에서 원격 컴퓨터로 여러 번 전화를 걸려면 먼저 PSSession을 만드십시오.

$session = New-PSSession -ComputerName $ComputerName

그런 다음 모든 후속 호출에서 해당 세션을 사용하십시오.

Invoke-Command -Session $session -File $filename
Invoke-Command -Session $session -ScriptBlock {
# Some code

} 완료되면 세션을 닫습니다.

Remove-PSSession -Session $session

또한 해당 스크립트를 정확히 알지 못하지만 스크립트가 시작되는지 알아야 할 경우 다음을 수행하십시오.

$strInst = Get-ChildItem -Path $PSScriptRoot -Filter Import-Carbon.ps1 -recurse -ErrorAction SilentlyContinue -Force | Select Directory
Invoke-Experssion (start Powershell ($strinst\Import-Carbon.ps1)

(그건 내꺼 다)


0

매직 변수 $ PSScriptRoot를 사용하여 현재 디렉토리를 참조하십시오. 그런 다음 앰퍼샌드 ( "콜 연산자")를 사용하여 스크립트 B를 호출하십시오.

$script = $PSScriptRoot+"\b.ps1"
& $script

A 범위에서 B의 변수를 유지하려면 Dot sourcing 연산자를 사용하여 스크립트를 실행할 수 있습니다.

$script = $PSScriptRoot+"\b.ps1"
. $script
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.