forked from farag2/Utilities
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Get_ini_Content.ps1
68 lines (62 loc) · 1.23 KB
/
Get_ini_Content.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<#
.Synopsis
Gets the content of an INI file
.Example
$FileContent = Get-IniContent "C:\myinifile.ini"
Saves the content of the c:\myinifile.ini in a hashtable called $FileContent
$FileContent = Get-IniContent -Path "c:\settings.ini"
$FileContent["Section"]["Key"]
Returns the key "Key" of the section "Section" from the C:\settings.ini file
.Link
https://github.com/lipkau/PsIni
#>
function Get-IniContent
{
[CmdletBinding()]
param
(
[ValidateNotNullOrEmpty()]
[Parameter(
ValueFromPipeline = $true,
Mandatory = $true
)]
[string]
$Path
)
$ini = @{}
switch -Regex -File $Path
{
# Section
"^\[(.+)\]$"
{
$section = $matches[1]
$ini[$section] = @{}
$CommentCount = 0
}
# Comment
"^(;.*)$"
{
if (-not ($section))
{
$section = "No-Section"
$ini[$section] = @{}
}
$value = $matches[1]
$CommentCount = $CommentCount + 1
$name = "Comment" + $CommentCount
$ini[$section][$name] = $value
}
# Key
"(.+?)\s*=\s*(.*)"
{
if (-not ($section))
{
$section = "No-Section"
$ini[$section] = @{}
}
$name, $value = $matches[1..2]
$ini[$section][$name] = $value
}
}
return $ini
}