This is a PowerShell module for working with the Infoblox Web API.
This is a quick and dirty implementation based on my environment's configuration, with limited functionality. Contributions to improve this would be more than welcome!
Some caveats:
- A number of shortcuts have been taken given that this is a fast publish.  This is more of a demo module; I have no plans to address these, but contributions are welcome!
- Limited testing, limited validation of edge case scenarios
 - Limited error handling
 - Limited comment based help and examples (some may be outdated)
 
 
#Functionality
Search Infoblox DHCP leases:
Search for Infoblox networks
Search for Infoblox for IPAM IPv4 addresses between two IPs
#Prerequisites
- You must be using Windows PowerShell 3 or later on the system running this module
 - You must have your Infoblox configured to allow access to the Web API
 - You must have access to query the Infoblox Web API
 - We serialize a default Uri Infoblox.xml in the module path - you must have access to that path for this functionality
 - Module folder downloaded, unblocked, extracted, available to import
 
#Instructions
# One time setup
    # Download the repository
    # Unblock the zip
    # Extract the Infoblox folder to a module path (e.g. $env:USERPROFILE\Documents\WindowsPowerShell\Modules\)
# Import the module.
    Import-Module Infoblox    #Alternatively, Import-Module \\Path\To\Infoblox
# Get commands in the module
    Get-Command -Module Infoblox
# Get help for a command or two
    Get-Help Set-IBConfig -Full
    Get-Help New-IBSession -Full
# Optional persistent default config setup
# This configures Infoblox.xml in your module folder, will load each time you import the module
    Set-IBConfig -Uri "https://grid.contoso.com" -IBVersion "v1.6"
# View the current config settings
    Get-IBConfig
# Establish a new session.  This uses the IBConfig Uri and IBVersion
    New-IBSession -Credential (Get-Credential)
    # Note! if you don't have certificates set up correctly, you may see the following error.  Set-TrustAllCertsPolicy is a temporary solution
    # Error retrieving session: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
    # Set-TrustAllCertsPolicy
# Get all leases 
    Get-IBLease
# Get leases for any address in 192.168.0., with a free binding state
    Get-IBLease -Address 192.168.0. | Where {$_.binding_state -like "FREE"}
# Get a list of all networks defined on the InfoBlox.  Get-IBObject is a generic wrapper to pull random object types
    Get-IBObject -Object Network
# Maybe you want to go from an IP address to a network:
    # Get network from IPAM for a single IP
        $filter = [pscustomobject]@{
                    Object="ip_address"
                    Operator="="
                    Filter="192.168.0.54"
                }
        $Network = Get-IBObject -Filters $filter -Object IPV4Address | Select -ExpandProperty network
    # Get the corresponding network object
        $filter = [pscustomobject]@{
                    Object="network"
                    Operator="="
                    Filter=$Network
                }
        Get-IBObject -Filters $filter -Object Network 
# Find all IPAM IPv4 Addresses between two IPs
    $filters = [pscustomobject]@{
        Object="ip_address"
        Operator=">="
        Filter="192.168.0.10"
    },
    [pscustomobject]@{
        Object="ip_address"
        Operator="<="
        Filter="19.168.0.100"
    }
    Get-IBObject -Filters $filters -Object IPV4Address#NOTES
Publishing this as a reference to this blog post. Infoblox' Web API highlights the need for vendors to provide PowerShell modules layered on top of their APIs, rather than offloading this to their customers.
- The API documentation this used was 962 pages (most of which you can skip, thankfully)
 - Unique syntax and formatting that you must read up on and implement, including features like paging and filters
 - I'm not too familiar with the Infoblox. I'm a consumer of a few services, and happen to like using PowerShell. Someone more familiar with the technology (the vendor) should be writing a PowerShell module.
 - I'm only going to spend as much time as needed to get a result that meets my needs for reliability, functionality, and configuration.
 - I have other priorities. Reading through pages upon pages of documentation that only applies to a single product's API is inefficient. This is one of the benefits of PowerShell; I learn a bit about the language, and it applies to the AD, VMware, SQL, and other PowerShell-enabled technologies.
 
Thanks to Don Smith and Anders Wahlqvist for ideas (and likely code snippets, this was written a long time ago)
Project Status, 1/17/2016: I no longer work with or have access to an Infoblox. Feel free to fork this or use it as needed, but there will likely be no further development, barring external contributions.


