PowerShell API Examples
Setup
$NR_BASE = "https://api.netreconapp.com/api/v1"
$NR_KEY = "nr_live_xxxxxxxxxxxx"
$Headers = @{ "X-API-Key" = $NR_KEY }
Authentication
Login with JWT
$Body = @{
email = "[email protected]"
password = "your-password"
} | ConvertTo-Json
$Auth = Invoke-RestMethod -Uri "$NR_BASE/auth/login" `
-Method Post -Body $Body -ContentType "application/json"
$Headers = @{ "Authorization" = "Bearer $($Auth.access_token)" }
Scanning
Start a Scan
$ScanParams = @{
target = "192.168.1.0/24"
profile = "normal"
} | ConvertTo-Json
$Scan = Invoke-RestMethod -Uri "$NR_BASE/scans/start" `
-Method Post -Headers $Headers -Body $ScanParams `
-ContentType "application/json"
Write-Host "Scan started: $($Scan.id)"
Wait for Scan Completion
do {
Start-Sleep -Seconds 10
$Status = Invoke-RestMethod -Uri "$NR_BASE/scans/$($Scan.id)" `
-Headers $Headers
Write-Host "Progress: $($Status.progress_percent)%"
} while ($Status.status -notin @("completed", "failed"))
Write-Host "Scan $($Status.status). Devices found: $($Status.hosts_found)"
Get Scan Results
$Result = Invoke-RestMethod -Uri "$NR_BASE/scans/$($Scan.id)/result" `
-Headers $Headers
$Result.devices | Format-Table ip, hostname, vendor, os_guess
Devices
List All Devices
$Devices = Invoke-RestMethod -Uri "$NR_BASE/devices" -Headers $Headers
$Devices.data | Format-Table ip, hostname, vendor, is_online
Filter Online Devices
$Online = Invoke-RestMethod -Uri "$NR_BASE/devices?is_online=true" `
-Headers $Headers
Write-Host "$($Online.meta.total) devices online"
Export to CSV
$Devices = Invoke-RestMethod -Uri "$NR_BASE/devices?per_page=1000" `
-Headers $Headers
$Devices.data | Select-Object ip, hostname, mac, vendor, os_guess, is_online |
Export-Csv -Path "devices.csv" -NoTypeInformation
Write-Host "Exported $($Devices.data.Count) devices to devices.csv"