36 lines
712 B
PowerShell
36 lines
712 B
PowerShell
function Invoke-ConfigurationDataExpressionArgument {
|
|
[CmdletBinding()]
|
|
Param(
|
|
[AllowNull()]
|
|
[string]
|
|
$Argument,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
$Context
|
|
)
|
|
|
|
if($null -eq $Argument){
|
|
return $null
|
|
}
|
|
|
|
$Argument = $Argument.Trim()
|
|
|
|
if($Argument -match "^'(.*)'$"){
|
|
return $Matches[1]
|
|
}
|
|
|
|
if($Argument -match "^-?\d+$"){
|
|
return [int]$Argument
|
|
}
|
|
|
|
if($Argument -match "^(?i:true|false)$"){
|
|
return [bool]::Parse($Argument)
|
|
}
|
|
|
|
if($Argument -match "^[A-Za-z][A-Za-z0-9]*\(.*\)$"){
|
|
return Invoke-ConfigurationDataExpression -Expression $Argument -Context $Context
|
|
}
|
|
|
|
return $Argument
|
|
}
|