Functions/NIOS/Private/Initialize-NIOSOpts.ps1
function Initialize-NIOSOpts { param( [Parameter( Mandatory=$true, ValueFromPipeline=$true )] $Opts ) process { $AcceptedNIOSOpts = @('Server','GridUID','GridName','ApiVersion','SkipCertificateCheck','Creds') $NIOSOpts = @{} $Opts.GetEnumerator() | ForEach-Object { if ($_.Key -in $AcceptedNIOSOpts) { $NIOSOpts += @{$_.Key=$_.Value} } } if ($NIOSOpts.Count -gt 0) { $ReturnOpts = @{} $Opts.GetEnumerator() | ForEach-Object { Switch($_.Key) { 'Server' { $ReturnOpts.Server = $Opts.Server } 'GridUID' { $ReturnOpts.GridUID = $Opts.GridUID } 'GridName' { $ReturnOpts.GridName = $Opts.GridName } 'ApiVersion' { $ReturnOpts.ApiVersion = $Opts.ApiVersion } 'SkipCertificateCheck' { $ReturnOpts.SkipCertificateCheck = $Opts.SkipCertificateCheck } 'Creds' { $ReturnOpts.Creds = [PSCredential]$Opts.Creds } } } } else { $CurrentContext = (Get-NIOSContext).CurrentContext if ($CurrentContext) { $SelectedContext = (Get-NIOSContext).Contexts."$($CurrentContext)" if ($SelectedContext) { Switch($SelectedContext.Type) { 'Local' { $SelectedConfig = $SelectedContext | Select-Object Server,Credentials,APIVersion,SkipCertificateCheck ## Decode User/Pass $Username = $SelectedConfig.Credentials.Username $Base64Password = $SelectedConfig.Credentials.Password $Password = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($Base64Password)) | ConvertTo-SecureString [PSCredential]$Creds = New-Object System.Management.Automation.PSCredential ($Username, $Password) $Context = @{ 'Server' = $SelectedConfig.Server 'APIVersion' = $SelectedConfig.APIVersion 'SkipCertificateCheck' = $SelectedConfig.SkipCertificateCheck 'Creds' = [PSCredential]$Creds } $ReturnOpts = $Context } 'Federated' { $SelectedConfig = $SelectedContext | Select-Object GridUID,APIVersion $Context = @{ 'GridUID' = $SelectedConfig.GridUID 'APIVersion' = $SelectedConfig.APIVersion } $ReturnOpts = $Context } } } } } return $ReturnOpts } } |