# Microsoft PowerShell with iControl

When we shipped DC4, we started looking at Windows PowerShell and how we could build some integration points with our products. The first pass was a set of PowerShell script files that we introduced in the PowerShell Labs section of DevCentral. No soon after we posted them, the requests started pouring in on when we would provide some native PowerShell CmdLets in addition to the function scripts.

Well, I spent a little bit of time working some out and whipped out a good first rough draft. I've been holding on to these for a while now but figured they would do better out in the wild then trapped in a folder on my laptop.

So, last night I posted an installer for the first release of the iControl CmdLets for PowerShell. I also ran some screen captures on how to install and use the CmdLets but ended up with some technical difficulties with the screen capture software - Camtasia is now on order B-). So, once I can get a good capture, be on the lookout. In the mean time, here's a step by step on getting up and running with the new bits.

Download and install PowerShell from Microsoft
Run the iControlSnapInSetup.msi installer.  This will install the SnapIn into the c:\program files\F5 Networks\iControlSnapIn directory.

Start PowerShell from the Windows Start menu.
Cd to c:\program files\F5 Networks\iControlSnapIn directory
Dot Source the setup script (only once after the install)
PS > . .\setupSnapIn.ps1)

Load the SnapIn into the Runtime

Initialize the iControl connection with the Initialize-F5.iControl CmdLet
PS > Initialize-F5.iControl -Hostname bigip_address -Credentials (Get-Credential)

Run the Get-F5.iControlCommands CmdLet to list out all the available Cmdlets.
PS > Get-F5.iControlCommands

Try out some of the CmdLets
PS > Get-F5.LTMPool


That should be about it. Hopefully I'll automate some of the setup procedures into the installer (if anyone knows how to get the Installer Project in VS.Net to include a shortcut to a non-project item, please let me know B-).

Same problem here - Running as Administrative PowerShell. Server 2012 R2

I got the following error trying this command - Get-iControlCommands. PS C:\Program Files (x86)\F5 Networks\iControlSnapIn> Get-iControlCommands Get-iControlCommands : The term 'Get-iControlCommands' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correc and try again. At line:1 char:1 + Get-iControlCommands + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Get-iControlCommands:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException I also looked and the icontrol is not listed in the cmdlet. I also tried Initialize-iControl command and got another error. Initialize-iControl : The term 'Initialize-iControl' is not recognized as the name of a cmdlet, function, script file or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 + Initialize-iControl -Hostname 172.18.7.245 -Credentials (Get-Credential) + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Initialize-iControl:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Any help would be greatly appreceiated. I am excited to use PS with our F5s

I believe the problem users are experiencing with v11.5 and higher is due to the fact that F5 moved from the iControl API to iControlREST API. I don't believe iControlREST has been integrated with PowerShell yet.

is source available? or documentation

Would you happen to have this in a non installer form?

Just to add, the credentials I use with the command above works when I use the web interface and it is an administrator account.

I installed and configured this in my environment. It works with version "BIG-IP 11.4.1 Build 608.0 Final" but when I run Initialize-F5.iControl against version "BIG-IP 11.6.0 Build 0.0.401 Final" it fails with the following error. Any help on this would be appreciated. Initialize-F5.iControl : Could not initialize connection with supplied information At line:1 char:5 + Initialize-F5.iControl -HostName 10.1.1.1 -Username user1 -Pas ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (10.1.1.1:String) [Initialize-F5.iControl], Exception + FullyQualifiedErrorId : 2,iControlSnapIn.CmdLet.Global.InitializeiControl

Do these commands allow us to completely automate a new load balanced VS? I want to be able to end the nodes, their names, pools and create the VIP.

Thanks for this. How would you obtain the IP address of a VIP leveraging PowerShell? Ultimately I would like to be able to pull not only the members of a VIP and their status, but also the IP address assigned to the VIP so I can have a single report. The next step of course would be to pull certificate information of the VIP. Also, how do you query the GTM? We have a few addresses on the GTM that then ties to two LTMs. It would be nice to pull that information as well. Thanks, Dominic

Disregard my previous comment, running the below command fixed my issue: C:\WINDOWS\system32>c:\windows\Microsoft.Net\Framework64\v2.0.50727\installutil.exe "C:\Program Files (x86)\F5 Networks\iControlSnapIn\iControlSnapin.dll" /LogFile=

Installed the Snap-in and I'm receiving this error: Add-PSSnapIn : Cannot load Windows PowerShell snap-in iControlSnapIn because of the following error: The Windows PowerShell snap-in module C:\Program Files (x86)\F5 Networks\iControlSnapIn\iControlSnapin.dll does not have the required Windows PowerShell snap-in strong name iControlSnapIn, Version=11.5.0.0, Culture=neutral, PublicKeyToken=null. At line:2 char:5 + Add-PSSnapIn iControlSnapIn + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (iControlSnapIn:String) [Add-PSSnapin], PSSnapInException + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand

The cmdlet is great! work very well with our version of F5 10.4. Bu trying to use with our new device version 11.5.1, I'm not able to get any info. Is suppose to work with the 11.5.1 ? If yes there is anything that have to be enable or configured on the device? Thanks in advance

Are the cmdets able to work with resources in partitions other than common? For example, Get-F5.LTMPool only shows pools in the /Common partition and I didn't see a parameter for it or Initialize-F5.iControl to switch partitions.