Skip to content

Instantly share code, notes, and snippets.

View joshooaj's full-sized avatar

Josh Hendricks joshooaj

View GitHub Profile
@joshooaj
joshooaj / New-RandomPass.ps1
Last active December 10, 2024 23:31 — forked from steviecoaster/New-RandomPass.ps1
Cross platform password generator
function New-RandomPass {
<#
.Synopsis
Generates and returns a suitably secure password
.EXAMPLE
New-RandomPass
Returns a random password as a SecureString object
.EXAMPLE
@joshooaj
joshooaj / ParsePng.ps1
Created December 3, 2024 21:30
Parse PNG files into their individual chunks
function ParsePng {
[CmdletBinding()]
param(
[Parameter(Mandatory, Position = 0)]
[string]
$Path
)
process {
try {
@joshooaj
joshooaj / New-QueryString.ps1
Last active November 25, 2024 22:52 — forked from steviecoaster/New-QueryString.ps1
Creates a querystring to use with an API call
function New-QueryString {
<#
.SYNOPSIS
Turn a hashtable into a URI querystring
.DESCRIPTION
Turn a hashtable into a URI querystring
.PARAMETER QueryParameter
The hashtable to transform
@joshooaj
joshooaj / Send-VmsDriverCommand.ps1
Last active November 26, 2024 00:03
Send custom driver commands to XProtect
function Send-VmsDriverCommand {
<#
.SYNOPSIS
Sends a custom HTTP request or command to a device added to an XProtect VMS.
.PARAMETER Camera
Specifies the camera to which the driver command should be sent.
.PARAMETER Fqid
Specifies the FQID associated with the destination device. Try `Get-VmsVideoOSItem` to retrieve an item, and then
@joshooaj
joshooaj / Show-DateTimePicker.ps1
Last active October 1, 2024 20:48
Simple datetime picker ui implementation for Windows PowerShell
function Show-DateTimePicker {
[CmdletBinding()]
param(
[Parameter()]
[string]
$Title = 'Show-DateTimePicker',
[Parameter()]
[DateTimeKind]
$Kind = [DateTimeKind]::Local
@joshooaj
joshooaj / Get-CamerasThatArentInAView.ps1
Last active September 12, 2024 23:14
Discover cameras that are NOT in a view
function Get-CamerasThatArentInAView {
[CmdletBinding()]
param ()
process {
$camerasInViews = @{}
$publicViewGroups = Get-VmsViewGroup | Where-Object Name -ne 'Private'
$views = $publicViewGroups | Get-VmsViewGroup -Recurse | Get-VmsView
foreach ($view in $views) {
@joshooaj
joshooaj / Measure-Distance.ps1
Last active August 30, 2024 18:23
Measure the distance between two coordinates
function ConvertToGeoCoordinate ([string]$coordinate) {
Add-Type -AssemblyName System.Device
$lat, $lon = $Coordinate -split ',' | ForEach-Object {
[double]$_.Trim()
}
[device.location.geocoordinate]::new($lat, $lon)
}
function Measure-Distance {
[CmdletBinding()]
@joshooaj
joshooaj / MipItemCompleter.cs
Created July 25, 2024 23:25
Generic MIP Item Argument Completer for PowerShell
using MilestonePSTools.Connection;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Management.Automation;
using System.Management.Automation.Language;
using System.Text.RegularExpressions;
using VideoOS.ConfigurationApi.ClientService;
namespace MilestonePSTools.Utility
@joshooaj
joshooaj / Rename-VmsHardwareAndDevices.ps1
Last active August 8, 2024 15:25
Bulk rename XProtect hardware and child devices
function Rename-VmsHardwareAndDevices {
<#
.SYNOPSIS
Renames hardware and all child devices using the default pattern.
.DESCRIPTION
This function renames the provided hardware(s) and all child devices. If a
value is provided for BaseName, the hardware will be renamed. The BaseName
can contain case-insensitive placeholders for any property available on a
Hardware object.
@joshooaj
joshooaj / Add-UniversalCamera.ps1
Last active July 9, 2024 21:24
Example function for adding an RTSP feed to XProtect using the universal camera driver
function Add-UniversalCamera {
<#
.SYNOPSIS
Adds a camera using one of the universal camera drivers.
.DESCRIPTION
The `Add-UniversalCamera` command adds a camera to a recording server using
one of the universal camera drivers. The camera address can be provided as
either an RTSP url complete with username and password, and path/query, or
the address can be provided as a traditional http/https url. If a path is