Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 94 additions & 1 deletion .build/CommandletShortNames.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,97 @@ Set-NinjaOneOrganisationDocuments: Organisation Documents
Set-NinjaOneOrganisationPolicies: Organisation Policies
Set-NinjaOneTicket: Ticket
Set-NinjaOneWindowsServiceConfiguration: Windows Service Configuration
Update-NinjaOneWebhook: Webhook
Update-NinjaOneWebhook: Webhook
Get-NinjaOneChecklistTemplates: Checklist Templates
New-NinjaOneChecklistTemplate: Checklist Template
Remove-NinjaOneChecklistTemplate: Checklist Template
Remove-NinjaOneChecklistTemplates: Checklist Templates
Set-NinjaOneChecklistTemplates: Checklist Templates
Invoke-NinjaOneChecklistArchive: Checklist Archive
Invoke-NinjaOneChecklistRestore: Checklist Restore
Get-NinjaOneEntityCustomFieldsSignedURLs: Entity Custom Fields Signed URLs
Start-NinjaOneOSPatchApply: OS Patch Apply (Start)
Start-NinjaOneOSPatchScanJob: OS Patch Scan Job (Start)
Start-NinjaOneSoftwarePatchApply: Software Patch Apply (Start)
Start-NinjaOneSoftwarePatchScan: Software Patch Scan (Start)
Invoke-NinjaOneDocumentTemplateArchive: Document Template Archive
Invoke-NinjaOneDocumentTemplateRestore: Document Template Restore
Invoke-NinjaOneDocumentTemplatesArchive: Document Templates Archive
Invoke-NinjaOneDocumentTemplatesRestore: Document Templates Restore
New-NinjaOneUnmanagedDevice: Unmanaged Device
Remove-NinjaOneUnmanagedDevice: Unmanaged Device
Set-NinjaOneUnmanagedDevice: Unmanaged Device
Invoke-NinjaOneKnowledgeBaseArticlesArchive: Knowledge Base Articles Archive
Invoke-NinjaOneKnowledgeBaseFoldersArchive: Knowledge Base Folders Archive
New-NinjaOneKnowledgeBaseArticles: Knowledge Base Articles
Remove-NinjaOneKnowledgeBaseArticles: Knowledge Base Articles
Remove-NinjaOneKnowledgeBaseFolders: Knowledge Base Folders
Restore-NinjaOneKnowledgeBaseArticles: Knowledge Base Articles Restore
Restore-NinjaOneKnowledgeBaseFolders: Knowledge Base Folders Restore
Move-NinjaOneKnowledgeBaseItems: Knowledge Base Items Move
Set-NinjaOneKnowledgeBaseArticles: Knowledge Base Articles
Remove-NinjaOneDeviceOwner: Device Owner
Set-NinjaOneDeviceOwner: Device Owner
Get-NinjaOneOrganisationEndUsers: Organisation End Users
Invoke-NinjaOneOrganisationArchive: Organisation Archive
Invoke-NinjaOneOrganisationRestore: Organisation Restore
Get-NinjaOneOrganisationChecklist: Organisation Checklist
Get-NinjaOneOrganisationChecklists: Organisation Checklists
Get-NinjaOneOrganisationChecklistSignedURLs: Organisation Checklist Signed URLs
Invoke-NinjaOneOrganisationChecklistsPromote: Organisation Checklists Promote
Invoke-NinjaOneOrganisationChecklistsPromoteWithName: Organisation Checklists Promote With Name
New-NinjaOneOrganisationChecklist: Organisation Checklist
New-NinjaOneOrganisationChecklistsFromTemplates: Organisation Checklists From Templates
Remove-NinjaOneOrganisationChecklist: Organisation Checklist
Remove-NinjaOneOrganisationChecklists: Organisation Checklists
Set-NinjaOneOrganisationChecklists: Organisation Checklists
Invoke-NinjaOneOrganisationDocumentArchive: Organisation Document Archive
Invoke-NinjaOneOrganisationDocumentRestore: Organisation Document Restore
Invoke-NinjaOneOrganisationDocumentsArchive: Organisation Documents Archive
Invoke-NinjaOneOrganisationDocumentsRestore: Organisation Documents Restore
Get-NinjaOneContact: Contact
Get-NinjaOneSystemContacts: System Contacts
New-NinjaOneContact: Contact
Remove-NinjaOneContact: Contact
Set-NinjaOneContact: Contact
Get-NinjaOneTab: Tab
Get-NinjaOneTabEndUser: Tab End User
Get-NinjaOneTabOrganisation: Tab Organisation
Get-NinjaOneTabRole: Tab Role
Get-NinjaOneTabSummaryEndUser: Tab Summary End User
Get-NinjaOneTabSummaryOrganisation: Tab Summary Organisation
Get-NinjaOneTabSummaryRole: Tab Summary Role
New-NinjaOneTab: Tab
Remove-NinjaOneTab: Tab
Rename-NinjaOneTab: Tab Rename
Set-NinjaOneTab: Tab
Set-NinjaOneTabEndUserOrder: Tab End User Order
Set-NinjaOneTabOrganisationOrder: Tab Organisation Order
Set-NinjaOneTabRoleOrder: Tab Role Order
Set-NinjaOneTabRoleVisibility: Tab Role Visibility
Get-NinjaOneTags: Tags
New-NinjaOneTag: Tag
New-NinjaOneTagGlobal: Tag Global
Remove-NinjaOneTag: Tag
Remove-NinjaOneTags: Tags
Merge-NinjaOneTags: Tags Merge
Set-NinjaOneAssetTag: Asset Tag
Set-NinjaOneTag: Tag
Get-NinjaOneEndUser: End User
Get-NinjaOneEndUserCustomFields: End User Custom Fields
Get-NinjaOneEndUsers: End Users
Get-NinjaOneTechnician: Technician
Get-NinjaOneTechnicians: Technicians
Get-NinjaOneUserRoles: User Roles
New-NinjaOneEndUser: End User
New-NinjaOneTechnician: Technician
Remove-NinjaOneEndUser: End User
Remove-NinjaOneTechnician: Technician
Add-NinjaOneUserRoleMembers: User Role Members (Add)
Remove-NinjaOneUserRoleMembers: User Role Members (Remove)
Set-NinjaOneEndUser: End User
Set-NinjaOneEndUserCustomFields: End User Custom Fields
Set-NinjaOneTechnician: Technician
Get-NinjaOneVulnerabilityScanGroup: Vulnerability Scan Group
Get-NinjaOneVulnerabilityScanGroups: Vulnerability Scan Groups
Invoke-NinjaOneVulnerabilityScanGroupUpload: Vulnerability Scan Group Upload
105 changes: 103 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,107 @@
# Changelog

Please note that backwards compatibility breaks are prefixed with `{"BC"}` (short for Breaking Change).
Please note that backwards compatibility breaks are prefixed with `{"BC"}` (short for Breaking Change).

## 2025-09-04 - Version TBD

* Add new commandlets:
* `Get-NinjaOneChecklistTemplates`
* `New-NinjaOneChecklistTemplate`
* `Remove-NinjaOneChecklistTemplate`
* `Remove-NinjaOneChecklistTemplates`
* `Set-NinjaOneChecklistTemplates`
* `Invoke-NinjaOneChecklistArchive`
* `Invoke-NinjaOneChecklistRestore`
* `Get-NinjaOneEntityCustomFieldsSignedURLs`
* `Start-NinjaOneOSPatchApply`
* `Start-NinjaOneOSPatchScanJob`
* `Start-NinjaOneSoftwarePatchApply`
* `Start-NinjaOneSoftwarePatchScan`
* `Invoke-NinjaOneDocumentTemplateArchive`
* `Invoke-NinjaOneDocumentTemplateRestore`
* `Invoke-NinjaOneDocumentTemplatesArchive`
* `Invoke-NinjaOneDocumentTemplatesRestore`
* `New-NinjaOneUnmanagedDevice`
* `Remove-NinjaOneUnmanagedDevice`
* `Set-NinjaOneUnmanagedDevice`
* `Invoke-NinjaOneKnowledgeBaseArticlesArchive`
* `Invoke-NinjaOneKnowledgeBaseFoldersArchive`
* `New-NinjaOneKnowledgeBaseArticles`
* `Remove-NinjaOneKnowledgeBaseArticles`
* `Remove-NinjaOneKnowledgeBaseFolders`
* `Restore-NinjaOneKnowledgeBaseArticles`
* `Restore-NinjaOneKnowledgeBaseFolders`
* `Move-NinjaOneKnowledgeBaseItems`
* `Set-NinjaOneKnowledgeBaseArticles`
* `Remove-NinjaOneDeviceOwner`
* `Set-NinjaOneDeviceOwner`
* `Get-NinjaOneOrganisationEndUsers`
* `Invoke-NinjaOneOrganisationArchive`
* `Invoke-NinjaOneOrganisationRestore`
* `Get-NinjaOneOrganisationChecklist`
* `Get-NinjaOneOrganisationChecklists`
* `Get-NinjaOneOrganisationChecklistSignedURLs`
* `Invoke-NinjaOneOrganisationChecklistsPromote`
* `Invoke-NinjaOneOrganisationChecklistsPromoteWithName`
* `New-NinjaOneOrganisationChecklist`
* `New-NinjaOneOrganisationChecklistsFromTemplates`
* `Remove-NinjaOneOrganisationChecklist`
* `Remove-NinjaOneOrganisationChecklists`
* `Set-NinjaOneOrganisationChecklists`
* `Invoke-NinjaOneOrganisationDocumentArchive`
* `Invoke-NinjaOneOrganisationDocumentRestore`
* `Invoke-NinjaOneOrganisationDocumentsArchive`
* `Invoke-NinjaOneOrganisationDocumentsRestore`
* `Get-NinjaOneContact`
* `Get-NinjaOneSystemContacts`
* `New-NinjaOneContact`
* `Remove-NinjaOneContact`
* `Set-NinjaOneContact`
* `Get-NinjaOneTab`
* `Get-NinjaOneTabEndUser`
* `Get-NinjaOneTabOrganisation`
* `Get-NinjaOneTabRole`
* `Get-NinjaOneTabSummaryEndUser`
* `Get-NinjaOneTabSummaryOrganisation`
* `Get-NinjaOneTabSummaryRole`
* `New-NinjaOneTab`
* `Remove-NinjaOneTab`
* `Rename-NinjaOneTab`
* `Set-NinjaOneTab`
* `Set-NinjaOneTabEndUserOrder`
* `Set-NinjaOneTabOrganisationOrder`
* `Set-NinjaOneTabRoleOrder`
* `Set-NinjaOneTabRoleVisibility`
* `Get-NinjaOneTags`
* `New-NinjaOneTag`
* `New-NinjaOneTagGlobal`
* `Remove-NinjaOneTag`
* `Remove-NinjaOneTags`
* `Merge-NinjaOneTags`
* `Set-NinjaOneAssetTag`
* `Set-NinjaOneTag`
* `Get-NinjaOneEndUser`
* `Get-NinjaOneEndUserCustomFields`
* `Get-NinjaOneEndUsers`
* `Get-NinjaOneTechnician`
* `Get-NinjaOneTechnicians`
* `Get-NinjaOneUserRoles`
* `New-NinjaOneEndUser`
* `New-NinjaOneTechnician`
* `Remove-NinjaOneEndUser`
* `Remove-NinjaOneTechnician`
* `Add-NinjaOneUserRoleMembers`
* `Remove-NinjaOneUserRoleMembers`
* `Set-NinjaOneEndUser`
* `Set-NinjaOneEndUserCustomFields`
* `Set-NinjaOneTechnician`
* `Get-NinjaOneVulnerabilityScanGroup`
* `Get-NinjaOneVulnerabilityScanGroups`
* `Invoke-NinjaOneVulnerabilityScanGroupUpload`

* Updates:
* Update module manifest `NinjaOne.psd1`.
* Improve `Get-NinjaOneRelatedItemAttachmentSignedURLs` internals.

## 2024-10-01 - Version 2.0.4

Expand Down Expand Up @@ -340,4 +441,4 @@ Please note that backwards compatibility breaks are prefixed with `{"BC"}` (shor
## 2021-08-19 - Version 0.0.1-alpha

* Initial preview release of the NinjaRMM API PowerShell module.


34 changes: 34 additions & 0 deletions Public/Checklist Templates/Get/Get-NinjaOneChecklistTemplates.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
function Get-NinjaOneChecklistTemplates {
<#
.SYNOPSIS
Gets checklist templates.
.DESCRIPTION
Retrieves checklist templates via the NinjaOne v2 API.
.FUNCTIONALITY
Checklist Templates
.EXAMPLE
PS> Get-NinjaOneChecklistTemplates

Gets all checklist templates.
.OUTPUTS
A PowerShell object containing the response.
.LINK
https://docs.homotechsual.dev/modules/ninjaone/commandlets/Get/checklisttemplates
#>
[CmdletBinding()]
[OutputType([Object])]
[Alias('gnoclt')]
[MetadataAttribute(
'/v2/checklist/templates',
'get'
)]
Param()
process {
try {
$Resource = 'v2/checklist/templates'
$RequestParams = @{ Resource = $Resource }
$Results = New-NinjaOneGETRequest @RequestParams
if ($Results) { return $Results } else { throw 'No checklist templates found.' }
} catch { New-NinjaOneError -ErrorRecord $_ }
}
}
31 changes: 31 additions & 0 deletions Public/Checklist Templates/New/New-NinjaOneChecklistTemplate.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
function New-NinjaOneChecklistTemplate {
<#
.SYNOPSIS
Creates a checklist template.
.DESCRIPTION
Creates a new checklist template via the NinjaOne v2 API.
.FUNCTIONALITY
Checklist Templates
.EXAMPLE
PS> New-NinjaOneChecklistTemplate -template @{ name='Onboarding'; items=@('Step1') }

Creates a checklist template.
.OUTPUTS
A PowerShell object containing the created template.
.LINK
https://docs.homotechsual.dev/modules/ninjaone/commandlets/New/checklisttemplate
#>
[CmdletBinding(SupportsShouldProcess, ConfirmImpact='Medium')]
[OutputType([Object])]
[Alias('nnoct')]
[MetadataAttribute(
'/v2/checklist/templates',
'post'
)]
Param(
[Parameter(Mandatory, Position=0, ValueFromPipelineByPropertyName)]
[Alias('body')]
[Object]$template
)
process { try { if($PSCmdlet.ShouldProcess('Checklist Template','Create')){ return (New-NinjaOnePOSTRequest -Resource 'v2/checklist/templates' -Body $template) } } catch { New-NinjaOneError -ErrorRecord $_ } }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
function Remove-NinjaOneChecklistTemplate {
<#
.SYNOPSIS
Removes a checklist template.
.DESCRIPTION
Deletes a checklist template via the NinjaOne v2 API.
.FUNCTIONALITY
Checklist Templates
.OUTPUTS
Status code (204) on success.
.EXAMPLE
PS> Remove-NinjaOneChecklistTemplate -checklistTemplateId 10 -Confirm:$false

Deletes the checklist template with Id 10.
#>
[CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')]
[OutputType([Object])]
[Alias('rnoclt')]
[MetadataAttribute(
'/v2/checklist/template/{checklistTemplateId}',
'delete'
)]
Param(
# Checklist template Id to delete.
[Parameter(Mandatory, Position = 0, ValueFromPipeline, ValueFromPipelineByPropertyName)]
[Alias('id')]
[Int]$checklistTemplateId
)
process {
try {
$Resource = ('v2/checklist/template/{0}' -f $checklistTemplateId)
$RequestParams = @{ Resource = $Resource }
if ($PSCmdlet.ShouldProcess(('Checklist Template {0}' -f $checklistTemplateId), 'Delete')) {
$Response = New-NinjaOneDELETERequest @RequestParams
if ($Response -eq 204) { Write-Information ('Checklist template {0} deleted successfully.' -f $checklistTemplateId) }
}
} catch { New-NinjaOneError -ErrorRecord $_ }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
function Remove-NinjaOneChecklistTemplates {
<#
.SYNOPSIS
Deletes checklist templates.
.DESCRIPTION
Deletes one or more checklist templates via the NinjaOne v2 API.
.FUNCTIONALITY
Checklist Templates
.EXAMPLE
PS> Remove-NinjaOneChecklistTemplates -templateIds @(1,2) -Confirm:$false

Deletes templates 1 and 2.
.OUTPUTS
Status code (204) on success.
.LINK
https://docs.homotechsual.dev/modules/ninjaone/commandlets/Remove/checklisttemplates
#>
[CmdletBinding(SupportsShouldProcess, ConfirmImpact='Medium')]
[OutputType([Object])]
[Alias('rnocltm')]
[MetadataAttribute(
'/v2/checklist/templates/delete',
'post'
)]
Param(
[Parameter(Mandatory, Position=0, ValueFromPipelineByPropertyName)]
[Int[]]$templateIds
)
process { try { if($PSCmdlet.ShouldProcess('Checklist Templates','Delete')){ return (New-NinjaOnePOSTRequest -Resource 'v2/checklist/templates/delete' -Body $templateIds) } } catch { New-NinjaOneError -ErrorRecord $_ } }
}
31 changes: 31 additions & 0 deletions Public/Checklist Templates/Set/Set-NinjaOneChecklistTemplates.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
function Set-NinjaOneChecklistTemplates {
<#
.SYNOPSIS
Updates checklist templates.
.DESCRIPTION
Updates checklist templates via the NinjaOne v2 API.
.FUNCTIONALITY
Checklist Templates
.EXAMPLE
PS> Set-NinjaOneChecklistTemplates -templates @{ templates = @(@{ id=1; name='New' }) }

Updates the specified templates.
.OUTPUTS
A PowerShell object containing the response.
.LINK
https://docs.homotechsual.dev/modules/ninjaone/commandlets/Set/checklisttemplates
#>
[CmdletBinding(SupportsShouldProcess, ConfirmImpact='Medium')]
[OutputType([Object])]
[Alias('snocltm')]
[MetadataAttribute(
'/v2/checklist/templates',
'put'
)]
Param(
[Parameter(Mandatory, Position=0, ValueFromPipelineByPropertyName)]
[Alias('body')]
[Object]$templates
)
process { try { if($PSCmdlet.ShouldProcess('Checklist Templates','Update')){ return (New-NinjaOnePUTRequest -Resource 'v2/checklist/templates' -Body $templates) } } catch { New-NinjaOneError -ErrorRecord $_ } }
}
Loading