백그라운드 작업은 $PSScriptRoot에서 실행되지 않습니다.

얼마 전에 이것에 걸려 넘어졌습니다. 여러 백그라운드 작업을 시작하는 스크립트를 개발하는 동안 작업이 "마더 스크립트"가 있는 동일한 디렉터리에서 실행될 것이라고 가정했습니다. 그러나 다음에서 볼 수 있듯이 이는 사실이 아닙니다. 예시.

테스트.ps1:

Start-Job -name test1 -ScriptBlock {(Get-Location).Path}
Wait-Job -Name test1 -Timeout 120
Receive-Job -Name test1




스크립트 위치로 작업하려는 경우 인수 목록을 통해 스크립트 블록에 전달할 수 있습니다.

test2.ps1:

Start-Job -name test2 -ScriptBlock {Set-Location $args[0]; (Get-Location).Path} -ArgumentList $PSScriptRoot
Wait-Job -Name test2 -Timeout 120
Receive-Job -Name test2


그리고 최종 출력:

좋은 웹페이지 즐겨찾기