68 lines
2.1 KiB
Text
68 lines
2.1 KiB
Text
function Read-ConfigurationFile
|
|
{
|
|
[CmdletBinding()]
|
|
Param
|
|
(
|
|
# Path to the configuration file. Default is "C:\ConfigurationFile.cfg"
|
|
[Parameter(Mandatory=$false, Position=0)]
|
|
[string]
|
|
$Path = "C:\ConfigurationFile.cfg"
|
|
)
|
|
|
|
[string]$script:fullName = ""
|
|
[string]$script:favouriteFruit = ""
|
|
[bool]$script:needsPeeling = $false
|
|
[bool]$script:seedsRemoved = $false
|
|
[string[]]$script:otherFamily = @()
|
|
|
|
function Get-Value ([string]$Line)
|
|
{
|
|
if ($Line -match "=")
|
|
{
|
|
[string]$value = $Line.Split("=",2).Trim()[1]
|
|
}
|
|
elseif ($Line -match " ")
|
|
{
|
|
[string]$value = $Line.Split(" ",2).Trim()[1]
|
|
}
|
|
|
|
$value
|
|
}
|
|
|
|
# Process each line in file that is not a comment.
|
|
Get-Content $Path | Select-String -Pattern "^[^#;]" | ForEach-Object {
|
|
|
|
[string]$line = $_.Line.Trim()
|
|
|
|
if ($line -eq [String]::Empty)
|
|
{
|
|
# do nothing for empty lines
|
|
}
|
|
elseif ($line.ToUpper().StartsWith("FULLNAME"))
|
|
{
|
|
$script:fullName = Get-Value $line
|
|
}
|
|
elseif ($line.ToUpper().StartsWith("FAVOURITEFRUIT"))
|
|
{
|
|
$script:favouriteFruit = Get-Value $line
|
|
}
|
|
elseif ($line.ToUpper().StartsWith("NEEDSPEELING"))
|
|
{
|
|
$script:needsPeeling = $true
|
|
}
|
|
elseif ($line.ToUpper().StartsWith("SEEDSREMOVED"))
|
|
{
|
|
$script:seedsRemoved = $true
|
|
}
|
|
elseif ($line.ToUpper().StartsWith("OTHERFAMILY"))
|
|
{
|
|
$script:otherFamily = (Get-Value $line).Split(',').Trim()
|
|
}
|
|
}
|
|
|
|
Write-Verbose -Message ("{0,-15}= {1}" -f "FULLNAME", $script:fullName)
|
|
Write-Verbose -Message ("{0,-15}= {1}" -f "FAVOURITEFRUIT", $script:favouriteFruit)
|
|
Write-Verbose -Message ("{0,-15}= {1}" -f "NEEDSPEELING", $script:needsPeeling)
|
|
Write-Verbose -Message ("{0,-15}= {1}" -f "SEEDSREMOVED", $script:seedsRemoved)
|
|
Write-Verbose -Message ("{0,-15}= {1}" -f "OTHERFAMILY", ($script:otherFamily -join ", "))
|
|
}
|