Private/Get-iPilotDirectorySyncCredentials.ps1
Function Get-iPilotDirectorySyncCredentials { Param ( [System.String] $iPilotDataDirectory = "${env:APPDATA}\NuWave" ) if (Test-Path "$iPilotDataDirectory\NuWaveiPilotDirectorySyncCredential.cred") { # Decrypt credential from file Write-Output "Decrypting NuWave iPilot Directory Sync Tenant ID, Client ID, and Client Secret from $iPilotDataDirectory\NuWaveiPilotDirectorySyncCredential.cred" # Retrieve TenantID, ClientID and ClientSecret from encrypted credential $global:IP_NuWaveiPilotDirectorySyncCredential = Import-Clixml -Path "$iPilotDataDirectory\NuWaveiPilotDirectorySyncCredential.cred" $global:IP_iPilotTenantID = $global:IP_NuWaveiPilotDirectorySyncCredential.GetNetworkCredential().Domain $global:IP_iPilotClientID = $global:IP_NuWaveiPilotDirectorySyncCredential.GetNetworkCredential().UserName $global:IP_iPilotClientSecret = $global:IP_NuWaveiPilotDirectorySyncCredential.GetNetworkCredential().Password } else { Write-Output "Save NuWave iPilot Directory Sync Tenant ID, Client ID, and Client Secret to $iPilotDataDirectory\NuWaveiPilotDirectorySyncCredential.cred" # Read Tenant ID, Client ID, and Client Secret from prompt unless set already if (!$global:IP_iPilotTenantID) {$global:IP_iPilotTenantID = Read-Host -Prompt "Enter the Azure Tenant ID (https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Properties):"} if (!$global:IP_iPilotClientID) {$global:IP_iPilotClientID = Read-Host -Prompt "Enter the Client ID"} if (!$global:IP_iPilotClientSecret) {$global:IP_iPilotClientSecret = Read-Host -Prompt "Enter the Client Secret" -AsSecureString} # Save Tenant ID, Client ID, and Client Secret to $iPilotDataDirectory\NuWaveiPilotDirectorySyncCredential.cred $global:IP_NuWaveiPilotDirectorySyncCredential = New-Object System.Management.Automation.PSCredential ("$($global:IP_iPilotTenantID)\$($global:IP_iPilotClientID)", $global:IP_iPilotClientSecret) $global:IP_NuWaveiPilotDirectorySyncCredential | Export-Clixml -Path "$iPilotDataDirectory\NuWaveiPilotDirectorySyncCredential.cred" -Force } # Output values Write-Verbose "Tenant ID: $global:IP_iPilotTenantID" Write-Verbose "Client ID: $global:IP_iPilotClientID" Write-Debug "Client Secret: $($global:IP_NuWaveiPilotDirectorySyncCredential.GetNetworkCredential().Password)" $PrintableClientSecret = "..." + $global:IP_NuWaveiPilotDirectorySyncCredential.GetNetworkCredential().Password.SubString($global:IP_NuWaveiPilotDirectorySyncCredential.GetNetworkCredential().Password.length - 6) # only grab last 6 Write-Verbose "Client Secret: $PrintableClientSecret" -Verbose } |