Skip to content

Commit 3118491

Browse files
committed
v.2.0.0-beta1 release.
1 parent 6b60304 commit 3118491

110 files changed

Lines changed: 1633 additions & 1126 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.vscode/settings.json

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@
44
"commandlet",
55
"commandlets",
66
"Gavsto",
7-
"Mikey"
8-
]
7+
"Mikey",
8+
"Organisation",
9+
"Organisations",
10+
"organisation",
11+
"hashtable",
12+
"pluralised",
13+
"Homotechsual",
14+
"pipelining",
15+
"O'Toole"
16+
],
17+
"cSpell.language": "en-GB",
918
}

CHANGELOG.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,24 @@
11
# Changelog
22

3-
## 2023-10-31 - Version 2.0.0-beta1
3+
Please note that backwards compatibility breaks are prefixed with `{"BC"}` (short for Breaking Change).
4+
5+
## 2023-11-15 - Version 2.0.0-beta1
6+
7+
* {"BC"} Refactoring of error handling to allow PowerShell 5.1 compatibility.
8+
* {"BC"} Removal / change of the `id` alias on some parameters.
9+
* {"BC"} Each commandlet now supports pipelining of the "primary" id value. Commandlets which require more than one `id` parameter do not support pipelining except by property name.
10+
* {"BC"} Rename most `Update-*` commandlets to `Set-*`. Aliases are in place.
11+
* {"BC"} Removal of all `*-NinjaRMM*` aliases to their `*-NinjaOne*` commandlets.
12+
* {"BC"} All `Write-Debug` statements are now `Write-Verbose`.
13+
* Add `-expandActivities` parameter to `Get-NinjaOneActivities`.
14+
* Add `-expandOverrides` parameter to `Get-NinjaOneDevicePolicyOverrides`.
15+
* Implement the framework for adding classes to build objects for `POST` endpoints.
16+
* All commandlets which require an entity to exist will throw an error if the entity with the given id doesn't exist.
17+
* The base `Get-*` commands for the core entities now throw if no results are returned.
18+
* Refactor exception catches in Private utility commandlets.
19+
* Reword error and verbose messaging throughout.
20+
* Switch all string/variable interpolation to use the `-f` format string operator with single-quoted strings.
21+
* Add `us2` instance.
422

523
## 2023-10-25 - Version 1.12.3
624

NinjaOne.build.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ if ($UpdateManifest) {
226226
[System.Version]$Version = $Manifest.Version
227227

228228
if ($ChangeLogVersion -eq $Version) {
229-
Throw 'No new version found in CHANGELOG.md'
229+
throw 'No new version found in CHANGELOG.md'
230230
}
231231

232232
Write-Output -InputObject ("Current Module Version: $($Version)")
@@ -257,7 +257,7 @@ if ($PublishModule -and $Configuration -eq 'Production') {
257257
Publish-Module @params
258258
Write-Output -InputObject ("$ModuleName PowerShell Module version $($Version) published to the PowerShell Gallery")
259259
} Catch {
260-
Throw $_
260+
throw $_
261261
}
262262
}
263263

NinjaOne.code-workspace

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,15 @@
2525
"powershell.codeFormatting.whitespaceBeforeOpenBrace": true,
2626
"powershell.codeFormatting.whitespaceBeforeOpenParen": true,
2727
"powershell.codeFormatting.whitespaceBetweenParameters": false,
28-
"powershell.codeFormatting.whitespaceInsideBrace": true
28+
"powershell.codeFormatting.whitespaceInsideBrace": true,
29+
"cSpell.words": [
30+
"hashtable",
31+
"homotechsual",
32+
"Homotechsual",
33+
"organisation",
34+
"Organisation",
35+
"pluralised"
36+
]
2937
},
3038
"launch": {
3139
"version": "0.2.0",

NinjaOne.psd1

Lines changed: 12 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -169,59 +169,12 @@
169169

170170
# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
171171
AliasesToExport = @(
172-
'Connect-NinjaRMM',
173-
'Find-NinjaRMMDevices',
174-
'Get-NinjaRMMActivities',
175-
'Get-NinjaRMMAlerts',
176172
'Get-NinjaOneBoards',
177-
'Get-NinjaRMMDeviceCustomFields',
178-
'Get-NinjaRMMDeviceJobs',
179-
'Get-NinjaRMMDeviceLastLoggedOnUser',
180-
'Get-NinjaRMMDeviceOSPatches',
181-
'Get-NinjaRMMDeviceProcessors',
182-
'Get-NinjaRMMDeviceVolumes',
183-
'Get-NinjaRMMDeviceSoftwarePatches',
184-
'Get-NinjaRMMDeviceSoftwarePatchInstalls',
185-
'Get-NinjaRMMDeviceDisks',
186-
'Get-NinjaRMMDevices',
187-
'Get-NinjaRMMGroupMembers',
188-
'Get-NinjaRMMGroups',
189-
'Get-NinjaRMMJobs',
190-
'Get-NinjaRMMLocations',
191173
'Get-NinjaOneOrganizationCustomFields',
192174
'Get-NinjaRMMOrganisationDocuments',
193175
'Get-NinjaRMMOrganizationDocuments',
194176
'Get-NinjaOneOrganizationDocuments',
195-
'Get-NinjaRMMOrganisations',
196-
'Get-NinjaRMMOrganizations',
197177
'Get-NinjaOneOrganizations',
198-
'Get-NinjaRMMPolicies',
199-
'Get-NinjaRMMRoles',
200-
'Get-NinjaRMMSoftwareProducts',
201-
'Get-NinjaRMMTasks',
202-
'Get-NinjaRMMUsers',
203-
'Get-NinjaRMMCustomFields',
204-
'Get-NinjaRMMAntivirusStatus',
205-
'Get-NinjaRMMAntivirusThreats',
206-
'Get-NinjaRMMComputerSystems',
207-
'Get-NinjaRMMCustomFields',
208-
'Get-NinjaRMMDeviceHealth',
209-
'Get-NinjaRMMDisks',
210-
'Get-NinjaRMMLoggedOnUsers',
211-
'Get-NinjaRMMOperatingSystems',
212-
'Get-NinjaRMMOSPatches',
213-
'Get-NinjaRMMOSPatchInstalls',
214-
'Get-NinjaRMMProcessors',
215-
'Get-NinjaRMMRAIDControllers',
216-
'Get-NinjaRMMRAIDDrives',
217-
'Get-NinjaRMMSoftwareInventory',
218-
'Get-NinjaRMMSoftwarePatches',
219-
'Get-NinjaRMMSoftwarePatchInstalls',
220-
'Get-NinjaRMMVolumes',
221-
'Get-NinjaRMMWindowsServices',
222-
'Get-NinjaRMMDeviceDashboardURL',
223-
'Get-NinjaRMMDeviceScriptingOptions',
224-
'Get-NinjaRMMInstaller',
225178
'New-NinjaOneOrganization',
226179
'Update-NinjaOneOrganization',
227180
'Update-NinjaOneOrganizationDocument'
@@ -230,7 +183,18 @@
230183
'Set-NinjaOneOrganizationCustomFields',
231184
'Update-NinjaOneLocationCustomFields',
232185
'Update-NinjaOneDeviceCustomFields',
233-
'Get-NinjaOneDevice'
186+
'Get-NinjaOneDevice',
187+
'Set-NinjaOneWebhook',
188+
'Update-NinjaOneDevice',
189+
'Update-NinjaOneDeviceApproval',
190+
'Update-NinjaOneDeviceCustomFields',
191+
'Update-NinjaOneDeviceMaintenance',
192+
'Update-NinjaOneLocation',
193+
'Update-NinjaOneNodeRolePolicyAssignment',
194+
'Update-NinjaOneOrganisation',
195+
'Update-NinjaOneOrganisationCustomFields',
196+
'Update-NinjaOneTicket',
197+
'Update-NinjaOneWindowsServiceConfiguration'
234198
)
235199

236200
# DSC resources to export from this module

NinjaOne.psm1

Lines changed: 19 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -48,67 +48,31 @@ foreach ($Function in @($Functions)) {
4848
'oc' = 'https://oc.ninjarmm.com'
4949
'us' = 'https://app.ninjarmm.com'
5050
'ca' = 'https://ca.ninjarmm.com'
51+
'us2' = 'https://us2.ninjarmm.com'
5152
}
5253
New-Alias -Name 'Connect-NinjaRMM' -Value 'Connect-NinjaOne'
5354
New-Alias -Name 'Find-NinjaRMMDevices' -Value 'Find-NinjaOneDevices'
54-
New-Alias -Name 'Get-NinjaRMMActivities' -Value 'Get-NinjaOneActivities'
55-
New-Alias -Name 'Get-NinjaRMMAlerts' -Value 'Get-NinjaOneAlerts'
56-
New-Alias -Name 'Get-NinjaRMMDeviceCustomFields' -Value 'Get-NinjaOneDeviceCustomFields'
57-
New-Alias -Name 'Get-NinjaRMMDeviceDisks' -Value 'Get-NinjaOneDeviceDisks'
58-
New-Alias -Name 'Get-NinjaRMMDeviceLastLoggedOnUser' -Value 'Get-NinjaOneDeviceLastLoggedOnUser'
59-
New-Alias -Name 'Get-NinjaRMMDeviceOSPatches' -Value 'Get-NinjaOneDeviceOSPatches'
60-
New-Alias -Name 'Get-NinjaRMMDeviceOSPatchInstalls' -Value 'Get-NinjaOneDeviceOSPatchInstalls'
61-
New-Alias -Name 'Get-NinjaRMMDeviceProcessors' -Value 'Get-NinjaOneDeviceProcessors'
62-
New-Alias -Name 'Get-NinjaRMMDevices' -Value 'Get-NinjaOneDevices'
63-
New-Alias -Name 'Get-NinjaRMMDeviceSoftwarePatches' -Value 'Get-NinjaOneDeviceSoftwarePatches'
64-
New-Alias -Name 'Get-NinjaRMMDeviceSoftwarePatchInstalls' -Value 'Get-NinjaOneDeviceSoftwarePatchInstalls'
65-
New-Alias -Name 'Get-NinjaRMMDeviceVolumes' -Value 'Get-NinjaOneDeviceVolumes'
66-
New-Alias -Name 'Get-NinjaRMMDeviceWindowsServices' -Value 'Get-NinjaOneDeviceWindowsServices'
67-
New-Alias -Name 'Get-NinjaRMMGroupMembers' -Value 'Get-NinjaOneGroupMembers'
68-
New-Alias -Name 'Get-NinjaRMMGroups' -Value 'Get-NinjaOneGroups'
69-
New-Alias -Name 'Get-NinjaRMMJobs' -Value 'Get-NinjaOneJobs'
70-
New-Alias -Name 'Get-NinjaRMMLocations' -Value 'Get-NinjaOneLocations'
71-
New-Alias -Name 'Get-NinjaRMMOrganisationDocuments' -Value 'Get-NinjaOneOrganisationDocuments'
72-
New-Alias -Name 'Get-NinjaRMMOrganizationDocuments' -Value 'Get-NinjaOneOrganizationDocuments'
55+
New-Alias -Name 'Get-NinjaOneBoards' -Value 'Get-NinjaOneTicketBoards'
56+
New-Alias -Name 'Get-NinjaOneDevice' -Value 'Get-NinjaOneDevices'
57+
New-Alias -Name 'Get-NinjaOneDeviceSoftwareProducts' -Value 'Get-NinjaOneSoftwareProducts'
58+
New-Alias -Name 'Get-NinjaOneOrganizationCustomFields' -Value 'Get-NinjaOneOrganisationCustomFields'
7359
New-Alias -Name 'Get-NinjaOneOrganizationDocuments' -Value 'Get-NinjaOneOrganisationDocuments'
74-
New-Alias -Name 'Get-NinjaRMMOrganisations' -Value 'Get-NinjaOneOrganisations'
75-
New-Alias -Name 'Get-NinjaRMMOrganizations' -Value 'Get-NinjaOneOrganisations'
7660
New-Alias -Name 'Get-NinjaOneOrganizations' -Value 'Get-NinjaOneOrganisations'
77-
New-Alias -Name 'Get-NinjaRMMPolicies' -Value 'Get-NinjaOnePolicies'
78-
New-Alias -Name 'Get-NinjaRMMRoles' -Value 'Get-NinjaOneRoles'
79-
New-Alias -Name 'Get-NinjaRMMSoftwareProducts' -Value 'Get-NinjaOneSoftwareProducts'
80-
New-Alias -Name 'Get-NinjaRMMTasks' -Value 'Get-NinjaOneTasks'
81-
New-Alias -Name 'Get-NinjaRMMUsers' -Value 'Get-NinjaOneUsers'
82-
New-Alias -Name 'Get-NinjaRMMDeviceDashboardURL' -Value 'Get-NinjaOneDeviceDashboardURL'
83-
New-Alias -Name 'Get-NinjaRMMDeviceScriptingOptions' -Value 'Get-NinjaOneDeviceScriptingOptions'
84-
New-Alias -Name 'Get-NinjaRMMInstaller' -Value 'Get-NinjaOneInstaller'
85-
New-Alias -Name 'Get-NinjaRMMAntivirusStatus' -Value 'Get-NinjaOneAntivirusStatus'
86-
New-Alias -Name 'Get-NinjaRMMAntivirusThreats' -Value 'Get-NinjaOneAntivirusThreats'
87-
New-Alias -Name 'Get-NinjaRMMComputerSystems' -Value 'Get-NinjaOneComputerSystems'
88-
New-Alias -Name 'Get-NinjaRMMCustomFields' -Value 'Get-NinjaOneCustomFields'
89-
New-Alias -Name 'Get-NinjaRMMDeviceHealth' -Value 'Get-NinjaOneDeviceHealth'
90-
New-Alias -Name 'Get-NinjaRMMDisks' -Value 'Get-NinjaOneDisks'
91-
New-Alias -Name 'Get-NinjaRMMLoggedOnUsers' -Value 'Get-NinjaOneLoggedOnUsers'
92-
New-Alias -Name 'Get-NinjaRMMOperatingSystems' -Value 'Get-NinjaOneOperatingSystems'
93-
New-Alias -Name 'Get-NinjaRMMOSPatches' -Value 'Get-NinjaOneOSPatches'
94-
New-Alias -Name 'Get-NinjaRMMOSPatchInstalls' -Value 'Get-NinjaOneOSPatchInstalls'
95-
New-Alias -Name 'Get-NinjaRMMProcessors' -Value 'Get-NinjaOneProcessors'
96-
New-Alias -Name 'Get-NinjaRMMRAIDControllers' -Value 'Get-NinjaOneRAIDControllers'
97-
New-Alias -Name 'Get-NinjaRMMRAIDDrives' -Value 'Get-NinjaOneRAIDDrives'
98-
New-Alias -Name 'Get-NinjaRMMSoftwareInventory' -Value 'Get-NinjaOneSoftwareInventory'
99-
New-Alias -Name 'Get-NinjaRMMSoftwarePatches' -Value 'Get-NinjaOneSoftwarePatches'
100-
New-Alias -Name 'Get-NinjaRMMSoftwarePatchInstalls' -Value 'Get-NinjaOneSoftwarePatchInstalls'
101-
New-Alias -Name 'Get-NinjaRMMVolumes' -Value 'Get-NinjaOneVolumes'
102-
New-Alias -Name 'Get-NinjaRMMWindowsServices' -Value 'Get-NinjaOneWindowsServices'
10361
New-Alias -Name 'New-NinjaOneOrganization' -Value 'New-NinjaOneOrganisation'
104-
New-Alias -Name 'Update-NinjaOneOrganization' -Value 'Update-NinjaOneOrganisation'
105-
New-Alias -Name 'Update-NinjaOneOrganizationDocument' -Value 'Update-NinjaOneOrganisationDocument'
106-
New-Alias -Name 'Get-NinjaOneBoards' -Value 'Get-NinjaOneTicketBoards'
107-
New-Alias -Name 'Update-NinjaOneOrganisationCustomFields' -Value 'Set-NinjaOneOrganisationCustomFields'
62+
New-Alias -Name 'Set-NinjaOneOrganizationCustomFields' -Value 'Set-NinjaOneOrganisationCustomFields'
63+
New-Alias -Name 'Set-NinjaOneWebhook' -Value 'Update-NinjaOneWebhook'
64+
New-Alias -Name 'Update-NinjaOneDevice' -Value 'Set-NinjaOneDevice'
65+
New-Alias -Name 'Update-NinjaOneDeviceApproval' -Value 'Set-NinjaOneDeviceApproval'
66+
New-Alias -Name 'Update-NinjaOneDeviceCustomFields' -Value 'Set-NinjaOneDeviceCustomFields'
67+
New-Alias -Name 'Update-NinjaOneDeviceMaintenance' -Value 'Set-NinjaOneDeviceMaintenance'
68+
New-Alias -Name 'Update-NinjaOneLocation' -Value 'Set-NinjaOneLocation'
10869
New-Alias -Name 'Update-NinjaOneLocationCustomFields' -Value 'Set-NinjaOneLocationCustomFields'
70+
New-Alias -Name 'Update-NinjaOneNodeRolePolicyAssignment' -Value 'Set-NinjaOneNodeRolePolicyAssignment'
71+
New-Alias -Name 'Update-NinjaOneOrganisation' -Value 'Set-NinjaOneOrganisation'
72+
New-Alias -Name 'Update-NinjaOneOrganisationCustomFields' -Value 'Set-NinjaOneOrganisationCustomFields'
73+
New-Alias -Name 'Update-NinjaOneOrganization' -Value 'Set-NinjaOneOrganisation'
10974
New-Alias -Name 'Update-NinjaOneOrganizationCustomFields' -Value 'Set-NinjaOneOrganisationCustomFields'
110-
New-Alias -Name 'Set-OrganizationCustomFields' -Value 'Set-NinjaOneOrganisationCustomFields'
111-
New-Alias -Name 'Update-NinjaOneDeviceCustomFields' -Value 'Set-NinjaOneDeviceCustomFields'
112-
New-Alias -Name 'Get-NinjaOneOrganizationCustomFields' -Value 'Get-NinjaOneOrganisationCustomFields'
113-
New-Alias -Name 'Get-NinjaOneDevice' -Value 'Get-NinjaOneDevices'
75+
New-Alias -Name 'Update-NinjaOneOrganizationDocument' -Value 'Update-NinjaOneOrganisationDocument'
76+
New-Alias -Name 'Update-NinjaOneTicket' -Value 'Update-NinjaOneTicket'
77+
New-Alias -Name 'Update-NinjaOneWindowsServiceConfiguration' -Value 'Set-NinjaOneWindowsServiceConfiguration'
11478
Export-ModuleMember -Function $Functions.BaseName -Alias *

PSScriptAnalyzerSettings.psd1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
'PSUseDeclaredVarsMoreThanAssignments',
4646
'PSUsePSCredentialType',
4747
'PSUseShouldProcessForStateChangingFunctions',
48-
'PSUseSingularNouns',
48+
#'PSUseSingularNouns',
4949
'PSUseLowerCaseForBooleanVariables',
5050
'PSUseLowerCaseForBuiltInFunctions',
5151
'PSUseLowerCaseForParameters',

Private/ConvertTo-UnixEpoch.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ function ConvertTo-UnixEpoch {
2929
$UniversalDateTime = $DateTime.ToUniversalTime()
3030
$UnixEpochTimestamp = Get-Date -Date $UniversalDateTime -UFormat %s
3131
Write-Verbose "Converted $DateTime to Unix Epoch timestamp $UnixEpochTimestamp"
32-
Return $UnixEpochTimestamp
32+
return $UnixEpochTimestamp
3333
}

Private/Get-TokenExpiry.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ function Get-TokenExpiry {
1919
$Now = Get-Date
2020
$ExpiryDateTime = $Now.AddSeconds($ExpiresIn)
2121
Write-Verbose "Calcuated token expiry as $ExpiryDateTime"
22-
Return $ExpiryDateTime
22+
return $ExpiryDateTime
2323
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using namespace System.Management.Automation
2+
function Invoke-NinjaOnePreFlightCheck {
3+
[CmdletBinding()]
4+
param(
5+
# Skip the connection checks.
6+
[Parameter()]
7+
[Switch]$SkipConnectionChecks
8+
)
9+
if (-not $SkipConnectionChecks) {
10+
if ($null -eq $Script:NRAPIConnectionInformation) {
11+
$NoConnectionInformationException = [System.Exception]::New("Missing NinjaOne connection information, please run 'Connect-NinjaOne' first.")
12+
$ErrorRecord = [ErrorRecord]::New($NoConnectionInformationException, 'NoConnectionInformation', 'AuthenticationError', 'NinjaOnePreFlightCheck')
13+
14+
$PSCmdlet.throwTerminatingError($ErrorRecord)
15+
}
16+
if (($null -eq $Script:HAPIAuthToken) -and ($null -eq $AllowAnonymous)) {
17+
$NoAuthTokenException = [System.Exception]::New("Missing Halo authentication token, please run 'Connect-HaloAPI' first.")
18+
$ErrorRecord = [ErrorRecord]::New($NoAuthTokenException, 'NoAuthToken', 'AuthenticationError', 'NinjaOnePreFlightCheck')
19+
20+
$PSCmdlet.throwTerminatingError($ErrorRecord)
21+
}
22+
} else {
23+
Write-Verbose 'Skipping connection checks.'
24+
}
25+
if ($PSEdition -eq 'Desktop') {
26+
27+
28+
}
29+
}

0 commit comments

Comments
 (0)