$My Invocation.나의 사령부.경로 반환 NULL
더 긴 스크립트의 시작으로 다음 코드가 있습니다.
$ScriptPath = Split-Path $MyInvocation.MyCommand.Path
& $ScriptPath\build_functions.ps1
& $ScriptPath\build_builddefs.ps1
이 아이디어는 실행 중인 스크립트의 경로를 가져와 이 경로를 사용하여 지원 스크립트를 호출하는 것입니다.그러나 블록을 강조 표시하고 해당 코드만 실행하여 작동하는지 확인하기 위해 이 코드를 분리하여 테스트하려고 하면 다음과 같은 오류가 발생했습니다.
Split-Path: Cannot bind argument to parameter 'Path' because it is null.
흥미롭게도 전체 스크립트를 실행하면 이 파일들이 따로 실행되는 것 같습니다.ISE가 전체 스크립트가 아닌 선택 항목 실행을 처리하는 방식에 대해 누락된 점이 있습니까?선택 항목을 실행할 때 파일 시스템 컨텍스트를 설정하지 않습니까?
$MyInvocation
스크립트 실행 시간에 채워지는 자동 변수입니다. 실행할 경우$MyInvocation.MyCommand.Path
일순간에powershell console
아니면ISE
인구가 없는 상태입니다.
그래서 당신의 시험에서$ScriptPath
값이 없습니다($null
)
내게 일어난 일이 왜 $My Invocation에서 무효를 구했는지는 모르겠지만요.나의 사령부.길, 하지만 제가 어떻게 해결책을 찾았는지 설명하겠습니다.
프로덕션에서 작동하는 스크립트가 있었는데 .ps1 파일을 로드하고 $MyInvocation을 받으려 했을 때입니다.나의 사령부.경로가 null입니다.제 Powershell 버전은 4.0이었지만 ISE의 경우 1.0(%windir%\system32)이었습니다.Windows PowerShell\v1.0\PowerShell_ISE.exe).
그러나 처음에는 $MyInvocation을 수동으로 검사했을 때 그들이 왜 작동해야 하는지 생각하지 못했습니다.나의 사령부.PowerShell에서 경로 또는 $MyInvocation이 null인 이유 및 분할 경로 상위 $MyInvocation에 대해 null 오류가 발생하는 이유입니다.나의 사령부.경로.
그래서 데스크톱 NUC PC에서처럼 Windows 2012 R2 Server에서 파워셸을 5.1로 업그레이드해야 한다고 생각했습니다.
가장 큰 문제는 .ps1 파일에 중단점을 설정하고 작업 중인 지점까지 실행하면 다음과 같은 결과가 나온다는 것입니다.
$ScriptDir = 분할 경로 - 상위 $MyInvocation.My Command.Path
효과가 있다는 걸.물론 효과가 있었습니다, 한동안 사용하고 있었습니다.왜 전에 못 봤을까요?
뭐가 잘못됐나요?run step 명령을 사용하여 수동으로 PowerShell을 실행하려고 했는데, PowerShell이 열린 이후로 스크립트를 실행해 본 적이 없었습니다!
저는 지금이 아마도 노 두(No Duh)의 순간이라고 말해야겠습니다.
하지만 최근 서버가 다운되어 복구(VSphere Clustered) 및 재시딩이 이루어졌기 때문에 이전 버전의 PowerShell이 있는 것 같습니다.
PowerShell을 사용하면 내부에 여러 파일/윈도우를 열 수 있지만 변수는 서로 공유됩니다.스크립트를 실제로 실행하려고 할 때까지(단계적으로 실행하는 것이 아니라) 실행 중인 스크립트 파일이 없으므로 경로를 얻을 수 없습니다.
나는 이 게시물이 나처럼 많은 시간을 낭비하지 않는 누군가를 구했으면 좋겠습니다!
그냥 쓰시면 될 것 같아요: & .\MySuperDuperScript.ps
언급URL : https://stackoverflow.com/questions/18742354/myinvocation-mycommand-path-returning-null
'programing' 카테고리의 다른 글
j입력유형="파일"에 대한 쿼리변경방법 (0) | 2023.10.03 |
---|---|
워드프레스 포스트 발췌 클래스 (0) | 2023.10.03 |
CMake를 사용하여 .dll 생성 (0) | 2023.10.03 |
Twitter Bootstrap 3의 IE8 이슈 (0) | 2023.10.03 |
j페이지 레이아웃의 공간을 보존하는 동안 요소를 숨깁니다. (0) | 2023.10.03 |