diff --git a/.vscode/launch.json b/.vscode/launch.json index 2472560..8f51e52 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,13 +1,6 @@ { "version": "0.2.0", - "configurations": [ - { - "type": "PowerShell", - "request": "launch", - "name": "PowerShell Interactive Session", - "cwd": "${workspaceRoot}" - }, - { + "configurations": [{ "type": "PowerShell", "request": "launch", "name": "PowerShell Pester Tests", @@ -22,6 +15,19 @@ "script": "${file}", "args": [], "cwd": "${file}" + }, + { + "type": "PowerShell", + "request": "attach", + "name": "PowerShell Attach to Host Process", + "processId": "${command.PickPSHostProcess}", + "runspaceId": 1 + }, + { + "type": "PowerShell", + "request": "launch", + "name": "PowerShell Interactive Session", + "cwd": "${workspaceRoot}" } ] -} \ No newline at end of file +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f8222de --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,15 @@ +// Place your settings in this file to overwrite default and user settings. +{ + "files.encoding": "utf8", + "files.eol": "\r\n", + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "editor.tabSize": 4, + "[markdown]": { + "editor.wordwrap": "on", + "editor.renderWhitespace": "all", + "editor.acceptSuggestionOnEnter": false, + "editor.rulers": [80], + "editor.trimAutoWhitespace": false + } +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..602228b --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,56 @@ +// Available variables which can be used inside of strings. +// ${workspaceRoot}: the root folder of the team +// ${file}: the current opened file +// ${relativeFile}: the current opened file relative to workspaceRoot +// ${fileBasename}: the current opened file's basename +// ${fileDirname}: the current opened file's dirname +// ${fileExtname}: the current opened file's extension +// ${cwd}: the current working directory of the spawned process +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + // Start PowerShell + "windows": { + "command": "${env:windir}\\sysnative\\windowspowershell\\v1.0\\PowerShell.exe", + "args": [ + "-NoProfile", + "-ExecutionPolicy", + "Bypass" + ] + }, + "linux": { + "command": "/usr/bin/powershell", + "args": [ + "-NoProfile" + ] + }, + "osx": { + "command": "/usr/local/bin/powershell", + "args": [ + "-NoProfile" + ] + }, + // Show the output window always + "showOutput": "always", + // Associate with test task runner + "tasks": [{ + "taskName": "Build Help", + "suppressTaskName": true, + "args": [ + "Write-Host 'Invoking platyPS'; New-ExternalHelp -Path .\\docs\\en-US -OutputPath .\\ConfluencePS\\en-US -Force;", + "Invoke-Command { Write-Host 'Completed Build task in task runner.' }" + ] + }, + { + "taskName": "Test", + "suppressTaskName": true, + "isTestCommand": true, + "args": [ + "Write-Host 'Invoking Pester'; Invoke-Pester -PesterOption @{IncludeVSCodeMarker=$true};", + "Invoke-Command { Write-Host 'Completed Test task in task runner.' }" + ], + "problemMatcher": "$pester" + } + ] +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index e7a19a6..5dc4d10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1,8 @@ -[1.0] \ No newline at end of file +# Change Log + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/), +and this project adheres to [Semantic Versioning](http://semver.org/). + +## [1.0] - 2017-11-18 diff --git a/README.md b/README.md index b365a91..2b5ce8e 100644 --- a/README.md +++ b/README.md @@ -1 +1,30 @@ -[![Build status](https://ci.appveyor.com/api/projects/status/dvuw4ggx543nx3h7?svg=true)](https://ci.appveyor.com/project/snazy2000/snipeitps) \ No newline at end of file +[![GitHub release](https://img.shields.io/github/release/snazy2000/SnipeitPS.svg)](https://github.com/snazy2000/snipeitps/releases/latest) [![Build status](https://ci.appveyor.com/api/projects/status/dvuw4ggx543nx3h7/branch/master?svg=true)](https://ci.appveyor.com/project/snazy2000/snipeitps/branch/master) [![PowerShell Gallery](https://img.shields.io/powershellgallery/dt/snipeitps.svg)](https://www.powershellgallery.com/packages/snipeitps) ![License](https://img.shields.io/badge/license-MIT-blue.svg) + +--- + +## Instructions + +### Installation + +Install SnipeitPS from the PowerShell Gallery `Install-Module` requires PowerShellGet (included in PS v5, or download for v3/v4 via the gallery link) + +```powershell +# One time only install: (requires an admin PowerShell window) +Install-Module SnipeitPS + +# Check for updates occasionally: +Update-Module SnipeitPS + +# To use each session: +Import-Module SnipeitPS +Set-Info -URL 'https://asset.example.com' -apiKey 'tokenKey' +``` + +### Usage + +```powershell +# Review the help at any time! +Get-Help about_SnipeitPS +Get-Command -Module SnipeitPS +Get-Help Get-Asset -Full # or any other command +``` diff --git a/SnipeItPS.build.ps1 b/SnipeItPS.build.ps1 index d68fb60..5bbf1b5 100644 --- a/SnipeItPS.build.ps1 +++ b/SnipeItPS.build.ps1 @@ -217,6 +217,7 @@ task PushRelease GitStatus, GetVersion, { } # endregion + #region Cleaning tasks task Clean RemoveGeneratedFiles @@ -236,4 +237,4 @@ task RemoveMarkdownFiles { } # endregion -task . ShowDebug, Clean, Test, Build, Deploy \ No newline at end of file +task . ShowDebug, Clean, Test, Build, Deploy diff --git a/SnipeitPS/Private/Invoke-Method.psm1 b/SnipeitPS/Private/Invoke-SnipeitMethod.ps1 similarity index 96% rename from SnipeitPS/Private/Invoke-Method.psm1 rename to SnipeitPS/Private/Invoke-SnipeitMethod.ps1 index a5188a4..f340fa6 100644 --- a/SnipeitPS/Private/Invoke-Method.psm1 +++ b/SnipeitPS/Private/Invoke-SnipeitMethod.ps1 @@ -1,4 +1,4 @@ -function Invoke-Method { +function Invoke-SnipeitMethod { <# .SYNOPSIS Extracted invokation of the REST method to own function. @@ -42,7 +42,7 @@ } Process { - if ($GetParameters -and ($URi -notlike "*\?*")) + if ($GetParameters -and ($URi -notlike "*\?*")) { Write-Debug "Using `$GetParameters: $($GetParameters | Out-String)" [string]$URI += (ConvertTo-GetParameter $GetParameters) @@ -86,7 +86,7 @@ # API returned a Content: lets work wit it $response = ConvertFrom-Json -InputObject $webResponse.Content - + if ($response.status -eq "error") { Write-Verbose "[$($MyInvocation.MyCommand.Name)] An error response was received from; resolving" # This could be handled nicely in an function such as: @@ -95,14 +95,14 @@ } else { $result = $response - if (($response) -and ($response | Get-Member -Name payload)) + if (($response) -and ($response | Get-Member -Name payload)) { $result = $response.payload } elseif (($response) -and ($response | Get-Member -Name rows)) { $result = $response.rows } - + $result } } @@ -111,7 +111,7 @@ # This could be wanted behavior of the API Write-Verbose "[$($MyInvocation.MyCommand.Name)] No content was returned from." } - + } else { Write-Verbose "[$($MyInvocation.MyCommand.Name)] No Web result object was returned from. This is unusual!" @@ -121,4 +121,4 @@ END { Write-Verbose "[$($MyInvocation.MyCommand.Name)] Function ended" } -} \ No newline at end of file +} diff --git a/SnipeitPS/Public/Assets.psm1 b/SnipeitPS/Public/Assets.psm1 deleted file mode 100644 index e8d0e75..0000000 --- a/SnipeitPS/Public/Assets.psm1 +++ /dev/null @@ -1,177 +0,0 @@ -<# -.SYNOPSIS -# Gets a list of Snipe-it Assets - -.PARAMETER url -URL of Snipeit system, can be set using Set-Info command - -.PARAMETER apiKey -Users API Key for Snipeit, can be set using Set-Info command - -.EXAMPLE -Get-Asset -url "https://assets.dip.co.uk" -token "token..." - -.EXAMPLE -Get-Asset -url "https://assets.dip.co.uk" -token "token..." | Where-Object {$_.name -eq "SUPPORT23" } - -#> - -function Get-Asset() -{ - Param( - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $result = Invoke-Method -URi "$url/api/v1/hardware" ` - -Method GET ` - -Token $apiKey - - $result -} - -function New-Asset() -{ - [CmdletBinding( - SupportsShouldProcess=$true, - ConfirmImpact="High" - )] - - Param( - [parameter(mandatory=$true)] - [string]$Name, - - [parameter(mandatory=$true)] - [string]$Status_id, - - [parameter(mandatory=$true)] - [string]$Model_id, - - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey, - - [hashtable] $customfields - ) - - $Values = @{ - "name" = $Name - "status_id" = $status_id - "model_id" = $model_id - } - - $Values += $customfields - - $Body = $Values | ConvertTo-Json; - - $Parameters = @{ - Uri = "$url/api/v1/hardware" - Method = 'Post' - Body = $Body - Token = $apiKey - } - - If ($PSCmdlet.ShouldProcess()) { - $result = Invoke-Method @Parameters - } - - $result -} - -function Set-Asset() -{ - [CmdletBinding( - SupportsShouldProcess=$true, - ConfirmImpact="High" - )] - - Param( - [parameter(mandatory=$true)] - [int]$id, - - [parameter(mandatory=$true)] - [string]$Name, - - [parameter(mandatory=$true)] - [string]$Status_id, - - [parameter(mandatory=$true)] - [string]$Model_id, - - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey, - - [hashtable] $customfields - ) - - $Values = @{ - "name" = $Name - "status_id" = $status_id - "model_id" = $model_id - } - - $Values += $customfields - $Body = $Values | ConvertTo-Json; - - $Parameters = @{ - Uri = "$url/api/v1/hardware/$id" - Method = 'Put' - Body = $Body - Token = $apiKey - } - - If ($PSCmdlet.ShouldProcess()) { - $result = Invoke-Method @Parameters - } - - $result -} - -function Set-AssetOwner() -{ - [CmdletBinding( - SupportsShouldProcess=$true, - ConfirmImpact="High" - )] - - Param( - [parameter(mandatory=$true)] - [int]$id, - - [parameter(mandatory=$true)] - [int]$user_id, - - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $Values = @{ - "user_id" = $user_id - } - - $Body = $Values | ConvertTo-Json; - - $Parameters = @{ - Uri = "$url/api/v1/hardware/$id/checkout" - Method = 'POST' - Body = $Body - Token = $apiKey - } - - If ($PSCmdlet.ShouldProcess()) { - $result = Invoke-Method @Parameters - } - - return $result -} diff --git a/SnipeitPS/Public/Categories.psm1 b/SnipeitPS/Public/Categories.psm1 deleted file mode 100644 index c80cb3d..0000000 --- a/SnipeitPS/Public/Categories.psm1 +++ /dev/null @@ -1,16 +0,0 @@ -function Get-Category() -{ - Param( - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $result = Invoke-Method -URi "$url/api/v1/categories" ` - -Method GET ` - -Token $apiKey - - $result -} diff --git a/SnipeitPS/Public/Components.psm1 b/SnipeitPS/Public/Components.psm1 deleted file mode 100644 index 28fe70f..0000000 --- a/SnipeitPS/Public/Components.psm1 +++ /dev/null @@ -1,124 +0,0 @@ -function Get-Component() -{ - Param( - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $result = Invoke-Method -URi "$url/api/v1/components" ` - -Method GET ` - -Token $apiKey - - $result -} - -function New-Component() -{ - [CmdletBinding( - SupportsShouldProcess=$true, - ConfirmImpact="High" - )] - - Param( - [parameter(mandatory=$true)] - [string]$name, - - [parameter(mandatory=$true)] - [string]$category_id, - - [parameter(mandatory=$true)] - [string]$qty, - - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $Values = @{ - "name" = $name - "category_id" = $category_id - "qty" = $qty - } - - $Body = $Values | ConvertTo-Json; - - $Parameters = @{ - Uri = "$url/api/v1/components" - Method = 'POST' - Body = $Body - Token = $apiKey - } - - If ($PSCmdlet.ShouldProcess()) { - $result = Invoke-Method @Parameters - } - - $result -} - -function Set-Component() -{ - [CmdletBinding( - SupportsShouldProcess=$true, - ConfirmImpact="High" - )] - - Param( - [parameter(mandatory=$true)] - [string]$id, - - [parameter(mandatory=$true)] - [string]$qty, - - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $Values = @{ - "qty" = $qty - } - - $Body = $Values | ConvertTo-Json; - - $Parameters = @{ - Uri = "$url/api/v1/components/$component_id" - Method = 'Patch' - Body = $Body - Token = $apiKey - } - - If ($PSCmdlet.ShouldProcess()) { - $result = Invoke-Method @Parameters - } - - $result -} - -<# -Checkout does not exsit yet :( - -function Checkout-Component($component_id, $asset_id = "") -{ - $Values = @{ - "asset_id" = $asset_id - } - - $Body = $Values | ConvertTo-Json; - - $Manufacturers = Invoke-RestMethod -Uri "http://assets.dip.co.uk/api/v1/hardware/$component_id/checkout" ` - -Method Post ` - -Header $headers ` - -Body $Body ` - -ContentType "application/json" ` - -UserAgent "DI Script/0.1" - - return $Manufacturers -}#> diff --git a/SnipeitPS/Public/Get-Asset.ps1 b/SnipeitPS/Public/Get-Asset.ps1 new file mode 100644 index 0000000..4eb0e2d --- /dev/null +++ b/SnipeitPS/Public/Get-Asset.ps1 @@ -0,0 +1,44 @@ +<# +.SYNOPSIS +# Gets a list of Snipe-it Assets + +.PARAMETER url +URL of Snipeit system, can be set using Set-Info command + +.PARAMETER apiKey +Users API Key for Snipeit, can be set using Set-Info command + +.EXAMPLE +Get-Asset -url "https://assets.example.com" -token "token..." + +.EXAMPLE +Get-Asset -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "MyMachine" } + +#> + +function Get-Asset() +{ + Param( + [parameter(mandatory=$true)] + [string]$url, + + [parameter(mandatory=$true)] + [string]$apiKey + ) + + $Parameters = @{ + Uri = "$url/api/v1/hardware" + Method = 'Get' + Token = $apiKey + } + + $result = Invoke-SnipeitMethod @Parameters + + $result +} + + + + + + diff --git a/SnipeitPS/Public/Get-Category.ps1 b/SnipeitPS/Public/Get-Category.ps1 new file mode 100644 index 0000000..0b11baa --- /dev/null +++ b/SnipeitPS/Public/Get-Category.ps1 @@ -0,0 +1,38 @@ +<# +.SYNOPSIS +# Gets a list of Snipe-it Categories + +.PARAMETER url +URL of Snipeit system, can be set using Set-Info command + +.PARAMETER apiKey +Users API Key for Snipeit, can be set using Set-Info command + +.EXAMPLE +Get-Category -url "https://assets.example.com" -token "token..." + +.EXAMPLE +Get-Category -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "Laptop" } + +#> + +function Get-Category() +{ + Param( + [parameter(mandatory=$true)] + [string]$url, + + [parameter(mandatory=$true)] + [string]$apiKey + ) + + $Parameters = @{ + Uri = "$url/api/v1/categories" + Method = 'Get' + Token = $apiKey + } + + $result = Invoke-SnipeitMethod @Parameters + + $result +} diff --git a/SnipeitPS/Public/Get-Component.ps1 b/SnipeitPS/Public/Get-Component.ps1 new file mode 100644 index 0000000..bb985f7 --- /dev/null +++ b/SnipeitPS/Public/Get-Component.ps1 @@ -0,0 +1,38 @@ +<# +.SYNOPSIS +# Gets a list of Snipe-it Components + +.PARAMETER url +URL of Snipeit system, can be set using Set-Info command + +.PARAMETER apiKey +Users API Key for Snipeit, can be set using Set-Info command + +.EXAMPLE +Get-Component -url "https://assets.example.com" -token "token..." + +.EXAMPLE +Get-Component -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "Memory" } + +#> + +function Get-Component() +{ + Param( + [parameter(mandatory=$true)] + [string]$url, + + [parameter(mandatory=$true)] + [string]$apiKey + ) + + $Parameters = @{ + Uri = "$url/api/v1/components" + Method = 'Get' + Token = $apiKey + } + + $result = Invoke-SnipeitMethod @Parameters + + $result +} diff --git a/SnipeitPS/Public/Get-Manufacturer.ps1 b/SnipeitPS/Public/Get-Manufacturer.ps1 new file mode 100644 index 0000000..fb06d4f --- /dev/null +++ b/SnipeitPS/Public/Get-Manufacturer.ps1 @@ -0,0 +1,38 @@ +<# +.SYNOPSIS +# Gets a list of Snipe-it Manufacturers + +.PARAMETER url +URL of Snipeit system, can be set using Set-Info command + +.PARAMETER apiKey +Users API Key for Snipeit, can be set using Set-Info command + +.EXAMPLE +Get-Manufacturer -url "https://assets.example.com" -token "token..." + +.EXAMPLE +Get-Manufacturer -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "HP" } + +#> + +function Get-Manufacturer() +{ + Param( + [parameter(mandatory=$true)] + [string]$url, + + [parameter(mandatory=$true)] + [string]$apiKey + ) + + $Parameters = @{ + Uri = "$url/api/v1/manufacturers" + Method = 'Get' + Token = $apiKey + } + + $result = Invoke-SnipeitMethod @Parameters + + $result +} diff --git a/SnipeitPS/Public/Get-Model.ps1 b/SnipeitPS/Public/Get-Model.ps1 new file mode 100644 index 0000000..f531107 --- /dev/null +++ b/SnipeitPS/Public/Get-Model.ps1 @@ -0,0 +1,38 @@ +<# +.SYNOPSIS +# Gets a list of Snipe-it Models + +.PARAMETER url +URL of Snipeit system, can be set using Set-Info command + +.PARAMETER apiKey +Users API Key for Snipeit, can be set using Set-Info command + +.EXAMPLE +Get-Models -url "https://assets.example.com" -token "token..." + +.EXAMPLE +Get-Models -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "DL380" } + +#> + +function Get-Model() +{ + Param( + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + ) + + $Parameters = @{ + Uri = "$url/api/v1/models" + Method = 'Get' + Token = $apiKey + } + + $result = Invoke-SnipeitMethod @Parameters + + $result +} diff --git a/SnipeitPS/Public/Get-Status.ps1 b/SnipeitPS/Public/Get-Status.ps1 new file mode 100644 index 0000000..948a9b3 --- /dev/null +++ b/SnipeitPS/Public/Get-Status.ps1 @@ -0,0 +1,38 @@ +<# +.SYNOPSIS +# Gets a list of Snipe-it Status Labels + +.PARAMETER url +URL of Snipeit system, can be set using Set-Info command + +.PARAMETER apiKey +Users API Key for Snipeit, can be set using Set-Info command + +.EXAMPLE +Get-Status -url "https://assets.example.com" -token "token..." + +.EXAMPLE +Get-Status -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "Ready to Deploy" } + +#> + +function Get-Status() +{ + Param( + [parameter(mandatory=$true)] + [string]$url, + + [parameter(mandatory=$true)] + [string]$apiKey + ) + + $Parameters = @{ + Uri = "$url/api/v1/statuslabels" + Method = 'Get' + Token = $apiKey + } + + $result = Invoke-SnipeitMethod @Parameters + + $result +} diff --git a/SnipeitPS/Public/Get-User.ps1 b/SnipeitPS/Public/Get-User.ps1 new file mode 100644 index 0000000..a11a455 --- /dev/null +++ b/SnipeitPS/Public/Get-User.ps1 @@ -0,0 +1,40 @@ +<# +.SYNOPSIS +# Gets a list of Snipe-it Users + +.PARAMETER url +URL of Snipeit system, can be set using Set-Info command + +.PARAMETER apiKey +Users API Key for Snipeit, can be set using Set-Info command + +.EXAMPLE +Get-User -url "https://assets.example.com" -token "token..." + +.EXAMPLE +Get-User -url "https://assets.example.com" -token "token..." | Where-Object {$_.username -eq "stephenm" } + +#> +function Get-User() +{ + Param( + [parameter(mandatory=$true)] + [string]$url, + + [parameter(mandatory=$true)] + [string]$apiKey + ) + + $Parameters = @{ + Uri = "$url/api/v1/users" + Method = 'Get' + GetParameters = @{ + limit = 999 + } + Token = $apiKey + } + + $result = Invoke-SnipeitMethod @Parameters + + $result +} diff --git a/SnipeitPS/Public/Manufacturers.psm1 b/SnipeitPS/Public/Manufacturers.psm1 deleted file mode 100644 index 0fa234d..0000000 --- a/SnipeitPS/Public/Manufacturers.psm1 +++ /dev/null @@ -1,56 +0,0 @@ -function Get-Manufacturer() -{ - Param( - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $result = Invoke-Method -URi "$url/api/v1/manufacturers" ` - -Method GET ` - -Token $apiKey - - $result -} - -function New-Manufacturer() -{ - [CmdletBinding( - SupportsShouldProcess=$true, - ConfirmImpact="High" - )] - - Param( - [parameter(mandatory=$true)] - [string]$Name, - - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - - $Values = @{ - "name" = $Name - } - - #Convert Values to JSON format - $Body = $Values | ConvertTo-Json; - - $Parameters = @{ - Uri = "$url/api/v1/manufacturers" - Method = 'post' - Body = $Body - Token = $apiKey - } - - If ($PSCmdlet.ShouldProcess()) { - $result = Invoke-Method @Parameters - } - - $result -} diff --git a/SnipeitPS/Public/Models.psm1 b/SnipeitPS/Public/Models.psm1 deleted file mode 100644 index caa093e..0000000 --- a/SnipeitPS/Public/Models.psm1 +++ /dev/null @@ -1,68 +0,0 @@ - -function Get-Model() -{ - Param( - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $result = Invoke-Method -URi "$url/api/v1/models" ` - -Method GET ` - -Token $apiKey - - $result -} - - -function New-Model() -{ - [CmdletBinding( - SupportsShouldProcess=$true, - ConfirmImpact="High" - )] - - Param( - [parameter(mandatory=$true)] - [string]$name, - - [parameter(mandatory=$true)] - [int]$category_id, - - [parameter(mandatory=$true)] - [int]$manufacturer_id, - - [parameter(mandatory=$true)] - [int]$fieldset_id, - - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $Values = @{ - name = $name - category_id = $category_id - manufacturer_id = $manufacturer_id - fieldset_id = $fieldset_id - } - - $Body = $Values | ConvertTo-Json; - - $Parameters = @{ - Uri = "$url/api/v1/models" - Method = 'post' - Body = $Body - Token = $apiKey - } - - If ($PSCmdlet.ShouldProcess()) { - $result = Invoke-Method @Parameters - } - - $result -} diff --git a/SnipeitPS/Public/New-Asset.ps1 b/SnipeitPS/Public/New-Asset.ps1 new file mode 100644 index 0000000..db6c7f6 --- /dev/null +++ b/SnipeitPS/Public/New-Asset.ps1 @@ -0,0 +1,91 @@ +<# + .SYNOPSIS + Add a new Asset to Snipe-it asset system + + .DESCRIPTION + Long description + + .PARAMETER Tag + Asset Tag for the Asset + + .PARAMETER Name + Name of the Asset + + .PARAMETER Status_id + Status ID of the asset, this can be got using Get-Status + + .PARAMETER Model_id + Model ID of the asset, this can be got using Get-Model + + .PARAMETER url + URL of Snipeit system, can be set using Set-Info command + + .PARAMETER apiKey + Users API Key for Snipeit, can be set using Set-Info command + + .PARAMETER customfields + Hastable of custom fields and extra fields that need passing through to Snipeit + + .EXAMPLE + New-Asset -status_id 1 -model_id 1 -name "Machine1" + + .EXAMPLE + New-Asset -status_id 1 -model_id 1 -name "Machine1" -CustomValues = @{ "_snipeit_os_5 = "Windows 10 Pro" } +#> + +function New-Asset() +{ + [CmdletBinding( + SupportsShouldProcess = $true, + ConfirmImpact = "High" + )] + + Param( + [string]$tag, + + [parameter(mandatory = $true)] + [string]$Name, + + [parameter(mandatory = $true)] + [string]$Status_id, + + [parameter(mandatory = $true)] + [string]$Model_id, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey, + + [hashtable] $customfields + ) + + $Values = @{ + "asset_tag" = $tag + "name" = $Name + "status_id" = $status_id + "model_id" = $model_id + } + + if ($customfields) + { + $Values += $customfields + } + + $Body = $Values | ConvertTo-Json; + + $Parameters = @{ + Uri = "$url/api/v1/hardware" + Method = 'Post' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + $result +} diff --git a/SnipeitPS/Public/New-Component.ps1 b/SnipeitPS/Public/New-Component.ps1 new file mode 100644 index 0000000..7105811 --- /dev/null +++ b/SnipeitPS/Public/New-Component.ps1 @@ -0,0 +1,76 @@ +<# + .SYNOPSIS + Short description + + .DESCRIPTION + Long description + + .PARAMETER name + Parameter description + + .PARAMETER category_id + Parameter description + + .PARAMETER qty + Parameter description + + .PARAMETER url + Parameter description + + .PARAMETER apiKey + Parameter description + + .EXAMPLE + An example + + .NOTES + General notes +#> + +function New-Component() +{ + [CmdletBinding( + SupportsShouldProcess = $true, + ConfirmImpact = "High" + )] + + Param( + [parameter(mandatory = $true)] + [string]$name, + + [parameter(mandatory = $true)] + [string]$category_id, + + [parameter(mandatory = $true)] + [string]$qty, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + ) + + $Values = @{ + "name" = $name + "category_id" = $category_id + "qty" = $qty + } + + $Body = $Values | ConvertTo-Json; + + $Parameters = @{ + Uri = "$url/api/v1/components" + Method = 'POST' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + $result +} + diff --git a/SnipeitPS/Public/New-Manufacturer.ps1 b/SnipeitPS/Public/New-Manufacturer.ps1 new file mode 100644 index 0000000..b198a60 --- /dev/null +++ b/SnipeitPS/Public/New-Manufacturer.ps1 @@ -0,0 +1,60 @@ +<# + .SYNOPSIS + Add a new Manufacturer to Snipe-it asset system + + .DESCRIPTION + Long description + + .PARAMETER Name + Name of the Manufacturer + + .PARAMETER url + URL of Snipeit system, can be set using Set-Info command + + .PARAMETER apiKey + Users API Key for Snipeit, can be set using Set-Info command + + .EXAMPLE + New-Manufacturer -name "HP" +#> + +function New-Manufacturer() +{ + [CmdletBinding( + SupportsShouldProcess = $true, + ConfirmImpact = "High" + )] + + Param( + [parameter(mandatory = $true)] + [string]$Name, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + ) + + + $Values = @{ + "name" = $Name + } + + #Convert Values to JSON format + $Body = $Values | ConvertTo-Json; + + $Parameters = @{ + Uri = "$url/api/v1/manufacturers" + Method = 'post' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + $result +} diff --git a/SnipeitPS/Public/New-Model.ps1 b/SnipeitPS/Public/New-Model.ps1 new file mode 100644 index 0000000..c7a5067 --- /dev/null +++ b/SnipeitPS/Public/New-Model.ps1 @@ -0,0 +1,79 @@ +<# + .SYNOPSIS + Add a new Model to Snipe-it asset system + + .DESCRIPTION + Long description + + .PARAMETER name + Name of the Asset Model + + .PARAMETER category_id + Category ID that the asset belongs to this can be got using Get-Category + + .PARAMETER manufacturer_id + Manufacturer ID that the asset belongs to this can be got using Get-Manufacturer + + .PARAMETER fieldset_id + Fieldset ID that the asset uses (Custom fields) + + .PARAMETER url + URL of Snipeit system, can be set using Set-Info command + + .PARAMETER apiKey + Users API Key for Snipeit, can be set using Set-Info command + + .EXAMPLE + New-Model -name "DL380" -manufacturer_id 2 -fieldset_id 2 -category_id 1 +#> + +function New-Model() +{ + [CmdletBinding( + SupportsShouldProcess = $true, + ConfirmImpact = "High" + )] + + Param( + [parameter(mandatory = $true)] + [string]$name, + + [parameter(mandatory = $true)] + [int]$category_id, + + [parameter(mandatory = $true)] + [int]$manufacturer_id, + + [parameter(mandatory = $true)] + [int]$fieldset_id, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + ) + + $Values = @{ + name = $name + category_id = $category_id + manufacturer_id = $manufacturer_id + fieldset_id = $fieldset_id + } + + $Body = $Values | ConvertTo-Json; + + $Parameters = @{ + Uri = "$url/api/v1/models" + Method = 'post' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + $result +} diff --git a/SnipeitPS/Public/Set-Asset.ps1 b/SnipeitPS/Public/Set-Asset.ps1 new file mode 100644 index 0000000..a53391a --- /dev/null +++ b/SnipeitPS/Public/Set-Asset.ps1 @@ -0,0 +1,91 @@ +<# + .SYNOPSIS + Update a Asset in the Snipe-it asset system + + .DESCRIPTION + Long description + + .PARAMETER id + ID of the Asset + + .PARAMETER Name + Name of the Asset + + .PARAMETER Status_id + Status ID of the asset, this can be got using Get-Status + + .PARAMETER Model_id + Model ID of the asset, this can be got using Get-Model + + .PARAMETER url + URL of Snipeit system, can be set using Set-Info command + + .PARAMETER apiKey + Users API Key for Snipeit, can be set using Set-Info command + + .PARAMETER customfields + Hastable of custom fields and extra fields that need passing through to Snipeit + + .EXAMPLE + Set-Asset -id 1 -status_id 1 -model_id 1 -name "Machine1" + + .EXAMPLE + Set-Asset -id 1 -status_id 1 -model_id 1 -name "Machine1" -CustomValues = @{ "_snipeit_os_5 = "Windows 10 Pro" } +#> + +function Set-Asset() +{ + [CmdletBinding( + SupportsShouldProcess = $true, + ConfirmImpact = "High" + )] + + Param( + [parameter(mandatory = $true)] + [int]$id, + + [parameter(mandatory = $true)] + [string]$Name, + + [parameter(mandatory = $true)] + [string]$Status_id, + + [parameter(mandatory = $true)] + [string]$Model_id, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey, + + [hashtable] $customfields + ) + + $Values = @{ + "name" = $Name + "status_id" = $status_id + "model_id" = $model_id + } + + if ($customfields) + { + $Values += $customfields + } + + $Body = $Values | ConvertTo-Json; + + $Parameters = @{ + Uri = "$url/api/v1/hardware/$id" + Method = 'Put' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + $result +} diff --git a/SnipeitPS/Public/Set-AssetOwner.ps1 b/SnipeitPS/Public/Set-AssetOwner.ps1 new file mode 100644 index 0000000..e58febe --- /dev/null +++ b/SnipeitPS/Public/Set-AssetOwner.ps1 @@ -0,0 +1,41 @@ +function Set-AssetOwner() +{ + [CmdletBinding( + SupportsShouldProcess = $true, + ConfirmImpact = "High" + )] + + Param( + [parameter(mandatory = $true)] + [int]$id, + + [parameter(mandatory = $true)] + [int]$user_id, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + ) + + $Values = @{ + "user_id" = $user_id + } + + $Body = $Values | ConvertTo-Json; + + $Parameters = @{ + Uri = "$url/api/v1/hardware/$id/checkout" + Method = 'POST' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + return $result +} diff --git a/SnipeitPS/Public/Set-Components.ps1 b/SnipeitPS/Public/Set-Components.ps1 new file mode 100644 index 0000000..84dd6b8 --- /dev/null +++ b/SnipeitPS/Public/Set-Components.ps1 @@ -0,0 +1,41 @@ +function Set-Component() +{ + [CmdletBinding( + SupportsShouldProcess = $true, + ConfirmImpact = "High" + )] + + Param( + [parameter(mandatory = $true)] + [string]$id, + + [parameter(mandatory = $true)] + [string]$qty, + + [parameter(mandatory = $true)] + [string]$url, + + [parameter(mandatory = $true)] + [string]$apiKey + ) + + $Values = @{ + "qty" = $qty + } + + $Body = $Values | ConvertTo-Json; + + $Parameters = @{ + Uri = "$url/api/v1/components/$component_id" + Method = 'Patch' + Body = $Body + Token = $apiKey + } + + If ($PSCmdlet.ShouldProcess("ShouldProcess?")) + { + $result = Invoke-SnipeitMethod @Parameters + } + + $result +} diff --git a/SnipeitPS/Public/Set-Info.psm1 b/SnipeitPS/Public/Set-Info.ps1 similarity index 100% rename from SnipeitPS/Public/Set-Info.psm1 rename to SnipeitPS/Public/Set-Info.ps1 diff --git a/SnipeitPS/Public/Status.psm1 b/SnipeitPS/Public/Status.psm1 deleted file mode 100644 index 95141f3..0000000 --- a/SnipeitPS/Public/Status.psm1 +++ /dev/null @@ -1,16 +0,0 @@ -function Get-Status() -{ - Param( - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $result = Invoke-Method -URi "$url/api/v1/statuslabels" ` - -Method GET ` - -Token $apiKey - - $result -} diff --git a/SnipeitPS/Public/Users.psm1 b/SnipeitPS/Public/Users.psm1 deleted file mode 100644 index e1017d3..0000000 --- a/SnipeitPS/Public/Users.psm1 +++ /dev/null @@ -1,33 +0,0 @@ -<# -.SYNOPSIS -# Gets a list of Snipe-it Users - -.PARAMETER url -URL of Snipeit system, can be set using Set-Info command - -.PARAMETER apiKey -Users API Key for Snipeit, can be set using Set-Info command - -.EXAMPLE -Get-Users -url "https://assets.dip.co.uk" -token "token..." - -.EXAMPLE -Get-Users -url "https://assets.dip.co.uk" -token "token..." | Where-Object {$_.username -eq "stephenm" } - -#> -function Get-User() -{ - Param( - [parameter(mandatory=$true)] - [string]$url, - - [parameter(mandatory=$true)] - [string]$apiKey - ) - - $result = Invoke-Method -URi "$url/api/v1/users?limit=999" ` - -Method GET ` - -Token $apiKey - - $result -} diff --git a/SnipeitPS/SnipeItPS.psm1 b/SnipeitPS/SnipeItPS.psm1 index 53f791c..2290ad8 100644 --- a/SnipeitPS/SnipeItPS.psm1 +++ b/SnipeitPS/SnipeItPS.psm1 @@ -1,11 +1,11 @@ $scriptRoot = $PSScriptRoot + '\public' -Get-ChildItem $scriptRoot *.psm1 | ForEach-Object { +Get-ChildItem $scriptRoot *.ps1 | ForEach-Object { Import-Module $_.FullName } $scriptRoot = $PSScriptRoot + '\private' -Get-ChildItem $scriptRoot *.psm1 | ForEach-Object { +Get-ChildItem $scriptRoot *.ps1 | ForEach-Object { Import-Module $_.FullName -} \ No newline at end of file +} diff --git a/Tests/SnipeItPS.Tests.ps1 b/Tests/SnipeItPS.Tests.ps1 index b5a77b3..010c077 100644 --- a/Tests/SnipeItPS.Tests.ps1 +++ b/Tests/SnipeItPS.Tests.ps1 @@ -8,7 +8,6 @@ $manifestFile = "$moduleRoot\SnipeitPS.psd1" $changelogFile = "$projectRoot\CHANGELOG.md" $appveyorFile = "$projectRoot\appveyor.yml" $publicFunctions = "$moduleRoot\Public" -$internalFunctions = "$moduleRoot\Private" Describe "SnipeitPS" { Context "All required tests are present" { @@ -31,18 +30,22 @@ Describe "SnipeitPS" { $script:manifest = $null - foreach ($line in (Get-Content $changelogFile)) { - if ($line -match "^\D*(?(\d+\.){1,3}\d+)") { + foreach ($line in (Get-Content $changelogFile)) + { + if ($line -match "^\D*(?(\d+\.){1,3}\d+)") + { $changelogVersion = $matches.Version break } } - foreach ($line in (Get-Content $appveyorFile)) { + foreach ($line in (Get-Content $appveyorFile)) + { # (?()) - non-capturing group, but named Version. This makes it # easy to reference the inside group later. - if ($line -match '^\D*(?(\d+\.){1,3}\d+).\{build\}') { + if ($line -match '^\D*(?(\d+\.){1,3}\d+).\{build\}') + { $appveyorVersion = $matches.Version break } @@ -149,34 +152,41 @@ Describe "SnipeitPS" { It 'Source files contain no trailing whitespace' { $badLines = @( - foreach ($file in $files) { + foreach ($file in $files) + { $lines = [System.IO.File]::ReadAllLines($file.FullName) $lineCount = $lines.Count - for ($i = 0; $i -lt $lineCount; $i++) { - if ($lines[$i] -match '\s+$') { + for ($i = 0; $i -lt $lineCount; $i++) + { + if ($lines[$i] -match '\s+$') + { 'File: {0}, Line: {1}' -f $file.FullName, ($i + 1) } } } ) - if ($badLines.Count -gt 0) { + if ($badLines.Count -gt 0) + { throw "The following $($badLines.Count) lines contain trailing whitespace: `r`n`r`n$($badLines -join "`r`n")" } } It 'Source files all end with a newline' { $badFiles = @( - foreach ($file in $files) { + foreach ($file in $files) + { $string = [System.IO.File]::ReadAllText($file.FullName) - if ($string.Length -gt 0 -and $string[-1] -ne "`n") { + if ($string.Length -gt 0 -and $string[-1] -ne "`n") + { $file.FullName } } ) - if ($badFiles.Count -gt 0) { + if ($badFiles.Count -gt 0) + { throw "The following files do not end with a newline: `r`n`r`n$($badFiles -join "`r`n")" } } @@ -186,15 +196,17 @@ Describe "SnipeitPS" { $analysis = Invoke-ScriptAnalyzer -Path "$moduleRoot" -Recurse $scriptAnalyzerRules = Get-ScriptAnalyzerRule - forEach ($rule in $scriptAnalyzerRules) { + forEach ($rule in $scriptAnalyzerRules) + { It "Should pass $rule" { - If (($analysis) -and ($analysis.RuleName -contains $rule)) { + If (($analysis) -and ($analysis.RuleName -contains $rule)) + { $analysis | - Where RuleName -EQ $rule -OutVariable failures | + Where-Object RuleName -EQ $rule -OutVariable failures | Out-Default $failures.Count | Should Be 0 } } } } -} \ No newline at end of file +} diff --git a/docs/Get-Asset.md b/docs/Get-Asset.md index 0be936a..deaafc9 100644 --- a/docs/Get-Asset.md +++ b/docs/Get-Asset.md @@ -23,12 +23,12 @@ Get-Asset [-url] [-apiKey] ### -------------------------- EXAMPLE 1 -------------------------- ``` -Get-Asset -url "https://assets.dip.co.uk" -token "token..." +Get-Asset -url "https://assets.example.com" -token "token..." ``` ### -------------------------- EXAMPLE 2 -------------------------- ``` -Get-Asset -url "https://assets.dip.co.uk" -token "token..." | Where-Object {$_.name -eq "SUPPORT23" } +Get-Asset -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "MyMachine" } ``` ## PARAMETERS diff --git a/docs/Get-Category.md b/docs/Get-Category.md index bbbca5a..b63484f 100644 --- a/docs/Get-Category.md +++ b/docs/Get-Category.md @@ -8,7 +8,7 @@ schema: 2.0.0 # Get-Category ## SYNOPSIS -{{Fill in the Synopsis}} +# Gets a list of Snipe-it Categories ## SYNTAX @@ -21,17 +21,20 @@ Get-Category [-url] [-apiKey] ## EXAMPLES -### Example 1 +### -------------------------- EXAMPLE 1 -------------------------- ``` -PS C:\> {{ Add example code here }} +Get-Category -url "https://assets.example.com" -token "token..." ``` -{{ Add example description here }} +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Category -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "Laptop" } +``` ## PARAMETERS -### -apiKey -{{Fill apiKey Description}} +### -url +URL of Snipeit system, can be set using Set-Info command ```yaml Type: String @@ -45,8 +48,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -url -{{Fill url Description}} +### -apiKey +Users API Key for Snipeit, can be set using Set-Info command ```yaml Type: String @@ -54,7 +57,7 @@ Parameter Sets: (All) Aliases: Required: True -Position: 0 +Position: 2 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -62,13 +65,8 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES ## RELATED LINKS diff --git a/docs/Get-Component.md b/docs/Get-Component.md index d19612d..e780747 100644 --- a/docs/Get-Component.md +++ b/docs/Get-Component.md @@ -8,7 +8,7 @@ schema: 2.0.0 # Get-Component ## SYNOPSIS -{{Fill in the Synopsis}} +# Gets a list of Snipe-it Components ## SYNTAX @@ -21,17 +21,20 @@ Get-Component [-url] [-apiKey] ## EXAMPLES -### Example 1 +### -------------------------- EXAMPLE 1 -------------------------- ``` -PS C:\> {{ Add example code here }} +Get-Component -url "https://assets.example.com" -token "token..." ``` -{{ Add example description here }} +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Component -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "Memory" } +``` ## PARAMETERS -### -apiKey -{{Fill apiKey Description}} +### -url +URL of Snipeit system, can be set using Set-Info command ```yaml Type: String @@ -45,8 +48,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -url -{{Fill url Description}} +### -apiKey +Users API Key for Snipeit, can be set using Set-Info command ```yaml Type: String @@ -54,7 +57,7 @@ Parameter Sets: (All) Aliases: Required: True -Position: 0 +Position: 2 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -62,13 +65,8 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES ## RELATED LINKS diff --git a/docs/Get-Manufacturer.md b/docs/Get-Manufacturer.md index f29d362..df5ca85 100644 --- a/docs/Get-Manufacturer.md +++ b/docs/Get-Manufacturer.md @@ -8,7 +8,7 @@ schema: 2.0.0 # Get-Manufacturer ## SYNOPSIS -{{Fill in the Synopsis}} +# Gets a list of Snipe-it Manufacturers ## SYNTAX @@ -21,17 +21,20 @@ Get-Manufacturer [-url] [-apiKey] ## EXAMPLES -### Example 1 +### -------------------------- EXAMPLE 1 -------------------------- ``` -PS C:\> {{ Add example code here }} +Get-Manufacturer -url "https://assets.example.com" -token "token..." ``` -{{ Add example description here }} +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Manufacturer -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "HP" } +``` ## PARAMETERS -### -apiKey -{{Fill apiKey Description}} +### -url +URL of Snipeit system, can be set using Set-Info command ```yaml Type: String @@ -45,8 +48,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -url -{{Fill url Description}} +### -apiKey +Users API Key for Snipeit, can be set using Set-Info command ```yaml Type: String @@ -54,7 +57,7 @@ Parameter Sets: (All) Aliases: Required: True -Position: 0 +Position: 2 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -62,13 +65,8 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES ## RELATED LINKS diff --git a/docs/Get-Model.md b/docs/Get-Model.md index 215ba79..55c1504 100644 --- a/docs/Get-Model.md +++ b/docs/Get-Model.md @@ -8,7 +8,7 @@ schema: 2.0.0 # Get-Model ## SYNOPSIS -{{Fill in the Synopsis}} +# Gets a list of Snipe-it Models ## SYNTAX @@ -21,17 +21,20 @@ Get-Model [-url] [-apiKey] ## EXAMPLES -### Example 1 +### -------------------------- EXAMPLE 1 -------------------------- ``` -PS C:\> {{ Add example code here }} +Get-Models -url "https://assets.example.com" -token "token..." ``` -{{ Add example description here }} +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Models -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "DL380" } +``` ## PARAMETERS -### -apiKey -{{Fill apiKey Description}} +### -url +URL of Snipeit system, can be set using Set-Info command ```yaml Type: String @@ -45,8 +48,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -url -{{Fill url Description}} +### -apiKey +Users API Key for Snipeit, can be set using Set-Info command ```yaml Type: String @@ -54,7 +57,7 @@ Parameter Sets: (All) Aliases: Required: True -Position: 0 +Position: 2 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -62,13 +65,8 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES ## RELATED LINKS diff --git a/docs/Get-Status.md b/docs/Get-Status.md index 6eea36f..be5c90a 100644 --- a/docs/Get-Status.md +++ b/docs/Get-Status.md @@ -8,7 +8,7 @@ schema: 2.0.0 # Get-Status ## SYNOPSIS -{{Fill in the Synopsis}} +# Gets a list of Snipe-it Status Labels ## SYNTAX @@ -21,17 +21,20 @@ Get-Status [-url] [-apiKey] ## EXAMPLES -### Example 1 +### -------------------------- EXAMPLE 1 -------------------------- ``` -PS C:\> {{ Add example code here }} +Get-Status -url "https://assets.example.com" -token "token..." ``` -{{ Add example description here }} +### -------------------------- EXAMPLE 2 -------------------------- +``` +Get-Status -url "https://assets.example.com" -token "token..." | Where-Object {$_.name -eq "Ready to Deploy" } +``` ## PARAMETERS -### -apiKey -{{Fill apiKey Description}} +### -url +URL of Snipeit system, can be set using Set-Info command ```yaml Type: String @@ -45,8 +48,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -url -{{Fill url Description}} +### -apiKey +Users API Key for Snipeit, can be set using Set-Info command ```yaml Type: String @@ -54,7 +57,7 @@ Parameter Sets: (All) Aliases: Required: True -Position: 0 +Position: 2 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -62,13 +65,8 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES ## RELATED LINKS diff --git a/docs/Get-User.md b/docs/Get-User.md index 31ccdb6..5f1610d 100644 --- a/docs/Get-User.md +++ b/docs/Get-User.md @@ -23,12 +23,12 @@ Get-User [-url] [-apiKey] ### -------------------------- EXAMPLE 1 -------------------------- ``` -Get-Users -url "https://assets.dip.co.uk" -token "token..." +Get-User -url "https://assets.example.com" -token "token..." ``` ### -------------------------- EXAMPLE 2 -------------------------- ``` -Get-Users -url "https://assets.dip.co.uk" -token "token..." | Where-Object {$_.username -eq "stephenm" } +Get-User -url "https://assets.example.com" -token "token..." | Where-Object {$_.username -eq "stephenm" } ``` ## PARAMETERS diff --git a/docs/New-Asset.md b/docs/New-Asset.md index 30fbb22..334c85e 100644 --- a/docs/New-Asset.md +++ b/docs/New-Asset.md @@ -8,46 +8,49 @@ schema: 2.0.0 # New-Asset ## SYNOPSIS -{{Fill in the Synopsis}} +Add a new Asset to Snipe-it asset system ## SYNTAX ``` -New-Asset [-Name] [-Status_id] [-Model_id] [-url] [-apiKey] - [[-customfields] ] [-WhatIf] [-Confirm] +New-Asset [[-tag] ] [-Name] [-Status_id] [-Model_id] [-url] + [-apiKey] [[-customfields] ] [-WhatIf] [-Confirm] ``` ## DESCRIPTION -{{Fill in the Description}} +Long description ## EXAMPLES -### Example 1 +### -------------------------- EXAMPLE 1 -------------------------- ``` -PS C:\> {{ Add example code here }} +New-Asset -status_id 1 -model_id 1 -name "Machine1" ``` -{{ Add example description here }} +### -------------------------- EXAMPLE 2 -------------------------- +``` +New-Asset -status_id 1 -model_id 1 -name "Machine1" -CustomValues = @{ "_snipeit_os_5 = "Windows 10 Pro" } +``` ## PARAMETERS -### -Confirm -Prompts you for confirmation before running the cmdlet. +### -tag +Asset Tag for the Asset ```yaml -Type: SwitchParameter +Type: String Parameter Sets: (All) -Aliases: cf +Aliases: Required: False -Position: Named +Position: 1 Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -Model_id -{{Fill Model_id Description}} +### -Name +Name of the Asset ```yaml Type: String @@ -61,8 +64,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Name -{{Fill Name Description}} +### -Status_id +Status ID of the asset, this can be got using Get-Status ```yaml Type: String @@ -70,14 +73,14 @@ Parameter Sets: (All) Aliases: Required: True -Position: 0 +Position: 3 Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -Status_id -{{Fill Status_id Description}} +### -Model_id +Model ID of the asset, this can be got using Get-Model ```yaml Type: String @@ -85,7 +88,52 @@ Parameter Sets: (All) Aliases: Required: True -Position: 1 +Position: 4 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -url +URL of Snipeit system, can be set using Set-Info command + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 5 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -apiKey +Users API Key for Snipeit, can be set using Set-Info command + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 6 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -customfields +Hastable of custom fields and extra fields that need passing through to Snipeit + +```yaml +Type: Hashtable +Parameter Sets: (All) +Aliases: + +Required: False +Position: 7 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -107,46 +155,16 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -apiKey -{{Fill apiKey Description}} +### -Confirm +Prompts you for confirmation before running the cmdlet. ```yaml -Type: String +Type: SwitchParameter Parameter Sets: (All) -Aliases: - -Required: True -Position: 4 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -customfields -{{Fill customfields Description}} - -```yaml -Type: Hashtable -Parameter Sets: (All) -Aliases: +Aliases: cf Required: False -Position: 5 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -url -{{Fill url Description}} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 3 +Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -154,13 +172,8 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES ## RELATED LINKS diff --git a/docs/New-Component.md b/docs/New-Component.md index 8d4bba7..ff564f9 100644 --- a/docs/New-Component.md +++ b/docs/New-Component.md @@ -8,7 +8,7 @@ schema: 2.0.0 # New-Component ## SYNOPSIS -{{Fill in the Synopsis}} +Short description ## SYNTAX @@ -18,29 +18,87 @@ New-Component [-name] [-category_id] [-qty] [-url] {{ Add example code here }} +An example ``` -{{ Add example description here }} - ## PARAMETERS -### -Confirm -Prompts you for confirmation before running the cmdlet. +### -name +Parameter description ```yaml -Type: SwitchParameter +Type: String Parameter Sets: (All) -Aliases: cf +Aliases: -Required: False -Position: Named +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -category_id +Parameter description + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -qty +Parameter description + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -url +Parameter description + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 4 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -apiKey +Parameter description + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 5 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -62,76 +120,16 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -apiKey -{{Fill apiKey Description}} +### -Confirm +Prompts you for confirmation before running the cmdlet. ```yaml -Type: String +Type: SwitchParameter Parameter Sets: (All) -Aliases: +Aliases: cf -Required: True -Position: 4 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -category_id -{{Fill category_id Description}} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 1 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -name -{{Fill name Description}} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -qty -{{Fill qty Description}} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 2 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -url -{{Fill url Description}} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 3 +Required: False +Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -139,14 +137,10 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES +General notes ## RELATED LINKS diff --git a/docs/New-Manufacturer.md b/docs/New-Manufacturer.md index 5616130..8f32b60 100644 --- a/docs/New-Manufacturer.md +++ b/docs/New-Manufacturer.md @@ -8,7 +8,7 @@ schema: 2.0.0 # New-Manufacturer ## SYNOPSIS -{{Fill in the Synopsis}} +Add a new Manufacturer to Snipe-it asset system ## SYNTAX @@ -17,36 +17,19 @@ New-Manufacturer [-Name] [-url] [-apiKey] [-WhatIf] [ ``` ## DESCRIPTION -{{Fill in the Description}} +Long description ## EXAMPLES -### Example 1 +### -------------------------- EXAMPLE 1 -------------------------- ``` -PS C:\> {{ Add example code here }} +New-Manufacturer -name "HP" ``` -{{ Add example description here }} - ## PARAMETERS -### -Confirm -Prompts you for confirmation before running the cmdlet. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) -Aliases: cf - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -Name -{{Fill Name Description}} +Name of the Manufacturer ```yaml Type: String @@ -54,7 +37,37 @@ Parameter Sets: (All) Aliases: Required: True -Position: 0 +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -url +URL of Snipeit system, can be set using Set-Info command + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -apiKey +Users API Key for Snipeit, can be set using Set-Info command + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 3 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -76,31 +89,16 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -apiKey -{{Fill apiKey Description}} +### -Confirm +Prompts you for confirmation before running the cmdlet. ```yaml -Type: String +Type: SwitchParameter Parameter Sets: (All) -Aliases: +Aliases: cf -Required: True -Position: 2 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -url -{{Fill url Description}} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 1 +Required: False +Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -108,13 +106,8 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES ## RELATED LINKS diff --git a/docs/New-Model.md b/docs/New-Model.md index 06b064b..6202855 100644 --- a/docs/New-Model.md +++ b/docs/New-Model.md @@ -8,7 +8,7 @@ schema: 2.0.0 # New-Model ## SYNOPSIS -{{Fill in the Synopsis}} +Add a new Model to Snipe-it asset system ## SYNTAX @@ -18,29 +18,102 @@ New-Model [-name] [-category_id] [-manufacturer_id] [-f ``` ## DESCRIPTION -{{Fill in the Description}} +Long description ## EXAMPLES -### Example 1 +### -------------------------- EXAMPLE 1 -------------------------- ``` -PS C:\> {{ Add example code here }} +New-Model -name "DL380" -manufacturer_id 2 -fieldset_id 2 -category_id 1 ``` -{{ Add example description here }} - ## PARAMETERS -### -Confirm -Prompts you for confirmation before running the cmdlet. +### -name +Name of the Asset Model ```yaml -Type: SwitchParameter +Type: String Parameter Sets: (All) -Aliases: cf +Aliases: -Required: False -Position: Named +Required: True +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -category_id +Category ID that the asset belongs to this can be got using Get-Category + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -manufacturer_id +Manufacturer ID that the asset belongs to this can be got using Get-Manufacturer + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: True +Position: 3 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -fieldset_id +Fieldset ID that the asset uses (Custom fields) + +```yaml +Type: Int32 +Parameter Sets: (All) +Aliases: + +Required: True +Position: 4 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -url +URL of Snipeit system, can be set using Set-Info command + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 5 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -apiKey +Users API Key for Snipeit, can be set using Set-Info command + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 6 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -62,91 +135,16 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -apiKey -{{Fill apiKey Description}} +### -Confirm +Prompts you for confirmation before running the cmdlet. ```yaml -Type: String +Type: SwitchParameter Parameter Sets: (All) -Aliases: +Aliases: cf -Required: True -Position: 5 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -category_id -{{Fill category_id Description}} - -```yaml -Type: Int32 -Parameter Sets: (All) -Aliases: - -Required: True -Position: 1 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -fieldset_id -{{Fill fieldset_id Description}} - -```yaml -Type: Int32 -Parameter Sets: (All) -Aliases: - -Required: True -Position: 3 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -manufacturer_id -{{Fill manufacturer_id Description}} - -```yaml -Type: Int32 -Parameter Sets: (All) -Aliases: - -Required: True -Position: 2 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -name -{{Fill name Description}} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -url -{{Fill url Description}} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 4 +Required: False +Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -154,13 +152,8 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES ## RELATED LINKS diff --git a/docs/Set-Asset.md b/docs/Set-Asset.md index d578e3b..11ff0e6 100644 --- a/docs/Set-Asset.md +++ b/docs/Set-Asset.md @@ -8,7 +8,7 @@ schema: 2.0.0 # Set-Asset ## SYNOPSIS -{{Fill in the Synopsis}} +Update a Asset in the Snipe-it asset system ## SYNTAX @@ -18,36 +18,54 @@ Set-Asset [-id] [-Name] [-Status_id] [-Model_id] {{ Add example code here }} +Set-Asset -id 1 -status_id 1 -model_id 1 -name "Machine1" ``` -{{ Add example description here }} +### -------------------------- EXAMPLE 2 -------------------------- +``` +Set-Asset -id 1 -status_id 1 -model_id 1 -name "Machine1" -CustomValues = @{ "_snipeit_os_5 = "Windows 10 Pro" } +``` ## PARAMETERS -### -Confirm -Prompts you for confirmation before running the cmdlet. +### -id +ID of the Asset ```yaml -Type: SwitchParameter +Type: Int32 Parameter Sets: (All) -Aliases: cf +Aliases: -Required: False -Position: Named +Required: True +Position: 1 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Name of the Asset + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 2 Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -Model_id -{{Fill Model_id Description}} +### -Status_id +Status ID of the asset, this can be got using Get-Status ```yaml Type: String @@ -61,8 +79,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Name -{{Fill Name Description}} +### -Model_id +Model ID of the asset, this can be got using Get-Model ```yaml Type: String @@ -70,14 +88,14 @@ Parameter Sets: (All) Aliases: Required: True -Position: 1 +Position: 4 Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -Status_id -{{Fill Status_id Description}} +### -url +URL of Snipeit system, can be set using Set-Info command ```yaml Type: String @@ -85,7 +103,37 @@ Parameter Sets: (All) Aliases: Required: True -Position: 2 +Position: 5 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -apiKey +Users API Key for Snipeit, can be set using Set-Info command + +```yaml +Type: String +Parameter Sets: (All) +Aliases: + +Required: True +Position: 6 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -customfields +Hastable of custom fields and extra fields that need passing through to Snipeit + +```yaml +Type: Hashtable +Parameter Sets: (All) +Aliases: + +Required: False +Position: 7 Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -107,61 +155,16 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -apiKey -{{Fill apiKey Description}} +### -Confirm +Prompts you for confirmation before running the cmdlet. ```yaml -Type: String +Type: SwitchParameter Parameter Sets: (All) -Aliases: - -Required: True -Position: 5 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -customfields -{{Fill customfields Description}} - -```yaml -Type: Hashtable -Parameter Sets: (All) -Aliases: +Aliases: cf Required: False -Position: 6 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -id -{{Fill id Description}} - -```yaml -Type: Int32 -Parameter Sets: (All) -Aliases: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -url -{{Fill url Description}} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: - -Required: True -Position: 4 +Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False @@ -169,13 +172,8 @@ Accept wildcard characters: False ## INPUTS -### None - - ## OUTPUTS -### System.Object - ## NOTES ## RELATED LINKS