- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
Creating a hostrecord using powershell
[ Edited ]- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-02-2021 06:17 AM - edited 12-02-2021 06:19 AM
Basically I am stuck at creating a next available host record via powershell.
This is how my script looks like:
if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type)
{
$certCallback = @"
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
public class ServerCertificateValidationCallback
{
public static void Ignore()
{
if(ServicePointManager.ServerCertificateValidationCallback ==null)
{
ServicePointManager.ServerCertificateValidationCallback +=
delegate
(
Object obj,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors errors
)
{
return true;
};
}
}
}
"@
Add-Type $certCallback
}
[ServerCertificateValidationCallback]::Ignore()
##Authentication
$pwd = ConvertTo-SecureString "infoblox" -AsPlainText -Force
$creds = New-Object Management.Automation.PSCredential ('admin', $pwd)
##API variables
$Scope = ""
$Scope = "172.16.1.0&ip_address%3C=172.16.1.254"
$Allnetwork_ref = Invoke-RestMethod "https://192.168.80.5/wapi/v2.11.3/ipv4address?ip_address%3E=$Scope&_return_as_object=1" -Credential $creds -Method get | ConvertTo-Json
$Allnetwork_refObject = ConvertFrom-Json -InputObject $Allnetwork_ref
$Networkref = $Allnetwork_refObject.result | where {$_.status -eq 'Unused'} | Select-Object -First 1
$Networkref.ip_address
$Networkref._ref
---end first part -
------ begin second part POST -------
$reservation_details = @{
ipv4addr = "$Networkref.ip_address"
name="test2.thusi.local"}
$body = $reservation_details | ConvertTo-Json
Invoke-RestMethod -Uri $uri -Method POST -Credential $creds -ContentType 'application/json' -Body $body
What I want to achieve is to create the next available address within the scope. I have tried many ways, but couldn't be able to get it working.
Thank you guys in advance.
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-03-2021 09:03 AM
Never mind guys;
I have found it and gave some extra boost to the default script.
Success guys with developing it further.
function Ignore-SelfSignedCerts
{
try
{
Write-Host "Adding TrustAllCertsPolicy type." -ForegroundColor White
Add-Type -TypeDefinition @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy
{
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem)
{
return true;
}
}
"@
Write-Host "TrustAllCertsPolicy type added." -ForegroundColor White
}
catch
{
Write-Host $_ -ForegroundColor "Yellow"
}
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
} Ignore-SelfSignedCerts
$username = read-host "Please enter your name:"
$password = read-host "Enter a Password:" -assecurestring
$credential = New-Object System.Management.Automation.PSCredential($username,$password)
##API variables
$Scope = ""
$Scope = "172.16.1.0&ip_address%3C=172.16.1.254"
$Allnetwork_ref = Invoke-RestMethod "https://i1.1.1.1/wapi/v2.6.1/ipv4address?ip_address%3E=$Scope&_return_as_object=1" -Credential $credential -Method get | ConvertTo-Json
$Allnetwork_refObject = ConvertFrom-Json -InputObject $Allnetwork_ref
$Networkref = $Allnetwork_refObject.result | where {$_.status -eq 'Unused'} | Select-Object -First 1
$Networkref.ip_address
$Networkref._ref
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Data Entry Form"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({
if ($_.KeyCode -eq "Enter" -or $_.KeyCode -eq "Escape"){
$objForm.Close()
}
})
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,10)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Create Host record:"
$objForm.Controls.Add($objLabel)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,30)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Please enter the FQDN below:"
$objForm.Controls.Add($objLabel)
$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Location = New-Object System.Drawing.Size(10,50)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)
$objLabel2 = New-Object System.Windows.Forms.Label
$objLabel2.Location = New-Object System.Drawing.Size(10,70)
$objLabel2.Size = New-Object System.Drawing.Size(280,20)
$objLabel2.Text = "Please enter the IP Address below:"
$objForm.Controls.Add($objLabel2)
$objTextBox2 = New-Object System.Windows.Forms.TextBox
$objTextBox2.Location = New-Object System.Drawing.Size(10,90)
$objTextBox2.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox2)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void]$objForm.ShowDialog()
$objTextBox.Text
$objTextBox2.Text
$host_details = @{
name= $objTextBox.Text
ipv4addrs=@(@{ipv4addr= $objTextBox2.Text})}
$url = "https://1.1.1.1/wapi/v2.6.1/record:host?_return_as_object=1"
$body = $host_details | ConvertTo-Json
Invoke-RestMethod -Uri $url -Method POST -Credential $credential -ContentType 'application/json' -Body $body
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-08-2021 03:01 AM
Hi,
Have you tried the WAPI call to automatically get the next available IP while creating the host record like this:
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", "Basic auth") $headers.Add("Content-Type", "application/json") $body = "{ `n `"name`":`"wapi.info.com`", `n `"ipv4addrs`": `n [ `n { `n `"ipv4addr`": `n { `n `"_object_function`":`"next_available_ip`", `n `"_parameters`": `n { `n `"exclude`":[`"10.10.10.1`",`"10.10.10.2`"] `n }, `n `"_result_field`":`"ips`", `n `"_object`" : `"network`", `n `"_object_parameters`": `n { `n `"network`":`"10.10.10.0/24`" `n } `n } `n } `n ] `n}" $response = Invoke-RestMethod 'https://grid-master/wapi/v2.11.3/record:host?_return_fields%2B=name,ipv4addrs' -Method 'POST' -Headers $headers -Body $body $response | ConvertTo-Json
Regards,
Krishna Vasudevan
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-21-2022 09:26 AM
I'm trying to pull the next available IP with creating a reservation or record. Is there a way to achieve this? I'd like to validate that the IP is not in use by doing a ping and nslookup first before creating the reservation.
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-21-2022 09:28 AM
Typo... I meant to write "pull the IP without creating the reservation"
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-22-2022 05:17 AM
Yes you can do this by using the next_available_ip function against the parent network.
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-09-2023 10:39 AM
I'm trying to run this code that @kvasudevan posted, but i keep getting an error back saying
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-09-2023 12:32 PM
This line indicates a DNS record:
`n `"name`":`"wapi.info.com`",
Try a name that is not an fqdn, for example:
`n `"name`":`"wapi`",
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-30-2023 10:19 AM
Trying to get this to work with my powershell.
I am able to get the IP address that I want to create a record for however my Post request never works to create the record.
$host_details = @{
name = $servername
ipv4addrs=@(@{ipv4addr= $Networkref.ip_address})}
$url = "https://1.1.1.1/wapi/v2.11.3/record:host?_return_fields%2B=name,ipv4addrs"
$body = $host_details | ConvertTo-Json
Invoke-RestMethod -Uri $url -Method POST -Credential $IBCreds -ContentType 'application/json' -Body $body
What am I missing?
Re: Creating a hostrecord using powershell
[ Edited ]- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-30-2023 11:01 AM - edited 03-30-2023 11:01 AM
Assuming $servername and $Networkref.ip_address hold appropriate values, this should work for you:
$host_details = @" { `"name`": `"$servername`", `"ipv4addrs`": [{ `"ipv4addr`": `"$Networkref.ip_address`" }] } "@ $url = "https://1.1.1.1/wapi/v2.11.3/record:host?_return_fields%2B=name,ipv4addrs" Invoke-RestMethod -Uri $url -Method POST -Credential $IBCreds -ContentType 'application/json' -Body $host_details
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-30-2023 12:14 PM
Well getting a different error now. I know my user account has rights to create.
Invoke-RestMethod : The remote server returned an error: (403) Forbidden.
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-30-2023 01:37 PM
Does it matter if we have a required zone?
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-30-2023 02:03 PM
The sample call posted earlier runs fine on my Grid. Are you certain the values in your variables for name and IP address are correct and for objects you have write access to?
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-28-2023 05:13 AM
tried to run this:
Re: Creating a hostrecord using powershell
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-12-2024 07:32 AM