2016-11-22 5 views
4

아래의 Split-Path에 대한 인수가 올바르지 않으며 $delZipExe이어야합니다.
이렇게하면 $delZipCmd 해시를 아무 것도 설정하지 않습니다.
$delZipCmd 해시에서 WorkingDirectory 값을 아무 것도 설정하지 않을 것으로 예상됩니다.Powershell splat destroy 변수

왜 이런 일이 발생합니까? Split-Path의 매개 인자의 확인 이후

Set-StrictMode -Version latest 
$delZipExe = '\\servername\ziptools\SP3DDeliverZips.exe' 
$delZipDest = "D:\" 
$delZipArgs = @('/execute', 
       '/source', '/RAD ', '/debugpdb', '/wait' 
       ) 
$delZipCmd = @{ FilePath = $delZipExe; 
       ArgumentList = $delZipArgs; 
       NoNewWindow = $true; 
       WorkingDirectory = (Split-Path $delZipCmd); # <== should be $delZipExe 
       Wait = $true; 
       } 
$delZipCmd | ft 
+1

나는 당신의 질문을 이해하지 않는다, 당신은 점점 어떤 오류, 당신은 무엇을 기대 않으며, 어떤 라인 (10)에 대한 의견 코드의 의미. 제발 좀 더 명확하게 해줄 수 있니? –

+0

마지막 줄에서 $ delZipCmd는 $ null입니다. 질문에서 말했듯이 WorkingDirectory가 $ null 값을 가지지 만 다른 모든 항목은 올바르게 설정 될 것으로 기대했기 때문에 그 이유가 무엇인지 이해하고 싶습니다. – opedroso

답변

4

해시 테이블의 생성 중에 종료 오류를 발생 , 전체 표현식이 종료된다.

당신이 피하기 위해 서브 표현식 ($())에 Split-Path 문을 분리 할 수 ​​있습니다

$delZipCmd = @{ 
    FilePath = $delZipExe; 
    ArgumentList = $delZipArgs; 
    NoNewWindow = $true; 
    WorkingDirectory = $(Split-Path $delZipCmd); # <== notice the $ 
    Wait = $true; 
} 
+0

Split-Path에 $ delZipCmd를 사용하는 이유는 무엇입니까? * $ delZipCmd 해시 테이블에 대한 선언 내에서 *? 이 코드는 나에게 이해가되지 않습니다. –

+0

@KoryGill OP가 구체적으로 *이 작업을 수행 할 때 구체적으로 묻기 때문에 * - 질문을 다시 읽으십시오. –

+0

엄격 모드를 사용하면 $ delZipCmd가 설정되지 않았기 때문에 원래 코드가 실행되지 않을 것으로 예상됩니다. 이전의 변수를 설정하지 않고 새로운/깨끗한 powershell 창에서 실행할 때). 그래서 저에게 질문은 전제로서 옳은 것으로 주장합니다. 계속 전진 하다니 ... –