Connect to version 14 and above with Powershell iControl
Problem this snippet solves:
Customer was asking how to connect to version 14 BigIP with PowerShell. They were previously using version 13 and everything worked with this code:
Add-PSSnapin iControlSnapin; Write-Output "Initializing F5 iControl..." Initialize-F5.iControl -HostName $bigiphostname -Username $bigipuser -Password $bigippw
But on version 14 it wouldn't connect. After much searching and testing I found that the BigIPReporter guy https://devcentral.f5.com/s/profile/0051T000008u1WRQAY Figured it out, and I shamelessly stole his code and made it into this shorter snippet.
His larger Reporter Code can be found here
https://devcentral.f5.com/s/articles/bigip-report
Also for the poor sucker that is trying to find the powershell module snapin - try here - https://cdn.f5.com/websites/devcentral.f5.com/downloads/f5-icontrol-powershell-snapin-13_1_0.zip - unblock it at the file explorer level, extract and run it. Then download the github repo for the newer code from here - https://github.com/f5devcentral/f5-icontrol-powershell-snapin - saving it into the F5 directory that was created in the previous step. Then run the installation steps that are detailed in the GitHub code.
How to use this snippet:
Create a file called TestConnection.ps1 and copy in the code changing the values for the first three lines to reflect your environment.
Code :
#Change these values $BigIPUser = 'admin' $BigIPPW = 'password' $BigIPName = '192.168.0.245' #Begin Script $User = $BigIPUser $Password = $BigIPPW #Create the string that is converted to Base64 $Credentials = $User + ":" + $Password #Encode the string to base64 $EncodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Credentials)) #Add the "Basic prefix" $BasicAuthValue = "Basic $EncodedCreds" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $BasicAuthValue) #set the connection to TLS 1.2 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 #Create the body of the post $Body = @{"username" = $User; "password" = $Password; "loginProviderName" = "tmos" } #Convert the body to Json $Body = $Body | ConvertTo-Json $Response = Invoke-RestMethod -Method "POST" -Headers $headers -Body $Body -Uri "https://$BigIPName/mgmt/shared/authn/login" -ContentType 'application/json' Write-Output "Auth token:" Write-Output $Response.token $success = Initialize-F5.iControl -Username 'admin' -Password 'G00fy123' -HostName '192.168.3.103' Write-Output "Sucessfully innitialized BigIP: $success" $F5 = Get-F5.iControl $BigIPHostname = $F5.SystemInet.get_hostname() Write-Output "BigIP Hostname: $BigIPHostname"
Tested this on version:
No Version Found