diff --git a/SnipeitPS/Public/Get-SnipeitAsset.ps1 b/SnipeitPS/Public/Get-SnipeitAsset.ps1 index 35f5c5b..691b260 100644 --- a/SnipeitPS/Public/Get-SnipeitAsset.ps1 +++ b/SnipeitPS/Public/Get-SnipeitAsset.ps1 @@ -14,6 +14,12 @@ Exact asset tag to query .PARAMETER asset_serial Exact asset serialnumber to query +.PARAMETER audit_due +Retrieve a list of assets that are due for auditing soon. + +.PARAMETER audit_overdue +Retrieve a list of assets that are overdue for auditing. + .PARAMETER order_number Optionally restrict asset results to this order number @@ -73,6 +79,7 @@ Get-SnipeitAsset -asset_tag "myAssetTag"-url "https://assets.example.com"-token #> function Get-SnipeitAsset() { + [CmdletBinding(DefaultParameterSetName = 'Search')] Param( [parameter(ParameterSetName='Search')] [string]$search, @@ -87,6 +94,12 @@ function Get-SnipeitAsset() { [Alias('asset_serial')] [string]$serial, + [parameter(ParameterSetName='Assets due auditing soon')] + [switch]$audit_due, + + [parameter(ParameterSetName='Assets overdue for auditing')] + [switch]$audit_overdue, + [parameter(ParameterSetName='Search')] [string]$order_number, @@ -118,57 +131,52 @@ function Get-SnipeitAsset() { [int]$status_id, [parameter(ParameterSetName='Search')] - [string]$sort = "created_at", + [parameter(ParameterSetName='Assets due auditing soon')] + [parameter(ParameterSetName='Assets overdue for auditing')] + [ValidateSet('id','created_at','asset_tag','serial','order_number','model_id','category_id','manufacturer_id','company_id','location_id','status','status_id')] + [string]$sort, [parameter(ParameterSetName='Search')] + [parameter(ParameterSetName='Assets due auditing soon')] + [parameter(ParameterSetName='Assets overdue for auditing')] [ValidateSet("asc", "desc")] - [string]$order = "desc", + [string]$order, [parameter(ParameterSetName='Search')] + [parameter(ParameterSetName='Assets due auditing soon')] + [parameter(ParameterSetName='Assets overdue for auditing')] [int]$limit = 50, [parameter(ParameterSetName='Search')] + [parameter(ParameterSetName='Assets due auditing soon')] + [parameter(ParameterSetName='Assets overdue for auditing')] [int]$offset, [parameter(ParameterSetName='Search')] + [parameter(ParameterSetName='Assets due auditing soon')] + [parameter(ParameterSetName='Assets overdue for auditing')] [switch]$all = $false, + [parameter(mandatory = $true)] [string]$url, [parameter(mandatory = $true)] [string]$apiKey ) + Test-SnipeitAlias -invocationName $MyInvocation.InvocationName -commandName $MyInvocation.MyCommand.Name $SearchParameter = . Get-ParameterValue -Parameters $MyInvocation.MyCommand.Parameters -BoundParameters $PSBoundParameters - - $apiurl = "$url/api/v1/hardware" - - if ($search -and ($asset_tag -or $asset_serial -or $id)) { - Throw "[$($MyInvocation.MyCommand.Name)] Please specify only one of -search , -asset_tag or -asset_serial parameter" + switch ($PsCmdlet.ParameterSetName) { + 'Search' { $apiurl = "$url/api/v1/hardware" } + 'Get with id' {$apiurl= "$url/api/v1/hardware/$id"} + 'Get with asset tag' {$apiurl= "$url/api/v1/hardware/bytag/$asset_tag"} + 'Get with serial' { $apiurl= "$url/api/v1/hardware/byserial/$asset_serial"} + 'Assets due auditing soon' {$apiurl = "$url/api/v1/hardware/audit/due"} + 'Assets overdue for auditing' {$apiurl = "$url/api/v1/hardware/audit/overdue"} } - if ($id) { - if ( $search -or $asset_serial -or $asset_tag) { - Throw "[$($MyInvocation.MyCommand.Name)] Please specify only one of -search , -asset_tag or -asset_serial parameter" - } - $apiurl= "$url/api/v1/hardware/$id" - } - - if ($asset_tag) { - if ( $search -or $asset_serial -or $id) { - Throw "[$($MyInvocation.MyCommand.Name)] Please specify only one of -search , -asset_tag or -asset_serial parameter" - } - $apiurl= "$url/api/v1/hardware/bytag/$asset_tag" - } - - if ($asset_serial) { - if ( $search -or $asset_tag) { - Throw "[$($MyInvocation.MyCommand.Name)] Please specify only one of-search , -asset_tag or -asset_serial parameter" - } - $apiurl= "$url/api/v1/hardware/byserial/$asset_serial" - } $Parameters = @{ Uri = $apiurl @@ -180,6 +188,7 @@ function Get-SnipeitAsset() { if ($all) { $offstart = $(if ($offset){$offset} Else {0}) $callargs = $SearchParameter + Write-Verbose "Callargs: $($callargs | convertto-json)" $callargs.Remove('all') while ($true) {