2014-04-07 2 views
2

해시 테이블을 인라인으로 만들기위한 일반 구문을 사용하여 포맷 된 문자열에서 해시 테이블을 생성하도록 powershell에 지시 할 수있는 방법이 있습니까? 곧 내가 대답 우연히이 게시 한 후,powershell 문자열을 해시 테이블로 변환하는 방법이 있습니까?

$fooHashString = "@{key='value'} 
$fooHash = TellPowershellToEvaluateSpecialStringExpressions($fooHashString) 
$fooHash 

Name       Value 
----       ----- 
key       value 

답변

1

흠 :

예를 들어, 같은 일을 할 수있는 방법이있다. 문자열에 "Invoke-Expression"명령을 사용해야했습니다.

$fooHashString = "@{key='value'} 
$fooHash = Invoke-Expression $fooHashString 
$fooHash 

Name       Value 
----       ----- 
key       value 
0

Invoke-Expression 사용이 코드 냄새로 간주되는 데에는 여러 가지 이유가 있습니다. 당신이 PowerShell을 버전 3.0을 사용하거나 다른 방법 위의은 ConvertFrom-StringData가를 사용하는 경우이

대한 자세한 내용은 다음 블로그 게시물을 참조하십시오. 당신은 당신의 경우에는 MSDN 페이지 ConvertFrom-StringData

에서이를 사용하는 방법에 대한 자세한 내용을 찾을 수 있습니다, 당신은 당신이 같은 여기 문자열 내에서 컨텐츠를 생성 할 수는

$HashString = "key1=value1 `n key2=value2" 
ConvertFrom-StringData -StringData $HashString 

또는 해시 테이블을 작성하려면 다음을 사용할 수 있습니다 ConvertFrom-StringData cmdlet을 이스케이프 문자로보고 있기 때문에 당신이 문자열 내에서 \을 포함하는 경우이

$HashString = @' 
key1 = value1 
key2 = value2 
'@ 
ConvertFrom-StringData -StringData $HashString 

불행히도,이 작동하지 않습니다.

관련 문제