답변:
데니스와 팀을 도와 주셔서 감사합니다! 당신의 대답은 나를 잘 따라 잡았고 나는 이것을 찾았 습니다.
설정 .TXT
#from http://tlingenf.spaces.live.com/blog/cns!B1B09F516B5BAEBF!213.entry
#
[General]
MySetting1=value
[Locations]
InputFile="C:\Users.txt"
OutputFile="C:\output.log"
[Other]
WaitForTime=20
VerboseLogging=True
파워 쉘 명령
#from http://tlingenf.spaces.live.com/blog/cns!B1B09F516B5BAEBF!213.entry
#
Get-Content "C:\settings.txt" | foreach-object -begin {$h=@{}} -process { $k = [regex]::split($_,'='); if(($k[0].CompareTo("") -ne 0) -and ($k[0].StartsWith("[") -ne $True)) { $h.Add($k[0], $k[1]) } }
그때
코드 스 니펫을 실행 한 후 변수 ($ h)에는 HashTable의 값이 포함됩니다.
Name Value
---- -----
MySetting1 value
VerboseLogging True
WaitForTime 20
OutputFile "C:\output.log"
InputFile "C:\Users.txt"
* 표에서 항목을 검색하려면 다음 명령을 사용하십시오. $h.Get_Item("MySetting1").*
Index was outside the bounds of the array. At C:\testConfigreader.ps1:13 char:264 + ... -ne $True)) { $h.Add($k[0], $k[1]) } } + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], IndexOutOfRangeException + FullyQualifiedErrorId : System.IndexOutOfRangeException
누구든지 올바르게 작동합니까?
[Sections]
또는 이 없으면 ; semicolon comments
, 그냥 할 수 있습니다 $config = Get-Content $ConfigPath | ConvertFrom-StringData
. 자세한 내용은 ConvertFrom-StringData 를 참조하십시오.
여기 에이 코드를 보여주는 좋은 스레드가 있습니다 (연결 된 스레드에서 인용).
# from http://www.eggheadcafe.com/software/aspnet/30358576/powershell-and-ini-files.aspx
param ($file)
$ini = @{}
switch -regex -file $file
{
"^\[(.+)\]$" {
$section = $matches[1]
$ini[$section] = @{}
}
"(.+)=(.+)" {
$name,$value = $matches[1..2]
$ini[$section][$name] = $value
}
}
$ini
그럼 당신은 할 수 있습니다 :
PS> $links = import-ini links.ini
PS> $links["search-engines"]["link1"]
http://www.google.com
PS> $links["vendors"]["link1"]
http://www.apple.com
다음과 같은 INI 파일을 가정하십시오.
[vendors]
link1=http://www.apple.com
[search-engines]
link1=http://www.google.com
불행히도 정규식은 링크의 코드에서 누락되어 재현해야하지만 섹션 헤더와 주석이없는 파일을 처리하는 버전이 있습니다.
switch
with에 다른 사례를 추가하여 주석을 쉽게 처리 할 수 있습니다 '^#' {}
. 또한 점으로 해시 테이블 내용에 액세스 할 수 있으므로 $links.vendors.link1
조금 더 읽기 좋을 수도 있습니다.
보다 포괄적 인 접근 방식을 위해서는 https://github.com/alekdavis/ConfigFile을 고려 하십시오 . 이 모듈은 INI뿐만 아니라 JSON 형식의 구성 파일을 지원합니다. 변수를 확장하고 몇 가지 깔끔한 트릭을 수행합니다. 기억해야 할 것은 INI 파일의 키-값 쌍의 이름이 스크립트 매개 변수 또는 변수의 이름과 일치해야한다는 것입니다.