From 535b7ee51399835ee380f24fa15be1c0e1277184 Mon Sep 17 00:00:00 2001 From: Mikey O'Toole Date: Fri, 16 Feb 2024 18:27:45 +0000 Subject: [PATCH] Version 2.0.0-RC3 --- .artifacts/CodeCoverage.xml | 110 ++- .artifacts/TestResults.xml | 932 +----------------- .../C# Classes/DesignTimeBuild/.dtbcache.v2 | Bin 65484 -> 65484 bytes ...47791917-faeb-486c-9e96-d5fe395af534.vsidx | Bin 7282 -> 0 bytes ...67bef154-1554-406c-9910-7a7c1b5ae2d0.vsidx | Bin 0 -> 7622 bytes ...0da99d8-41ad-4e6f-9be9-69d5dc623c46.vsidx} | Bin 2572 -> 2572 bytes C# Classes/.vs/C# Classes/v17/.suo | Bin 37376 -> 38912 bytes .../c# classes.metadata.v7.bin | Bin 179646 -> 180395 bytes .../c# classes.projects.v7.bin | Bin 479460 -> 767204 bytes .../MetadataAttribute.AssemblyInfo.cs | 3 +- ...MetadataAttribute.AssemblyInfoInputs.cache | 2 +- .../MetadataAttribute.AssemblyInfo.cs | 2 +- ...MetadataAttribute.AssemblyInfoInputs.cache | 2 +- .../ValidateNodeRoleId/ValidateNodeRoleId.cs | 15 +- .../ValidateNodeRoleId.csproj | 2 +- .../ValidateNodeRoleId.deps.json | 0 .../netstandard2.1/ValidateNodeRoleId.dll | Bin 0 -> 5120 bytes .../netstandard2.1/ValidateNodeRoleId.pdb | Bin 0 -> 8456 bytes ...tandard,Version=v2.1.AssemblyAttributes.cs | 4 + .../ValidateNodeRoleId.AssemblyInfo.cs | 22 + ...alidateNodeRoleId.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 5 + .../ValidateNodeRoleId.assets.cache | Bin 0 -> 955 bytes ...eNodeRoleId.csproj.AssemblyReference.cache | Bin 0 -> 510 bytes ...eNodeRoleId.csproj.CoreCompileInputs.cache | 1 + ...dateNodeRoleId.csproj.FileListAbsolute.txt | 11 + .../netstandard2.1/ValidateNodeRoleId.dll | Bin 0 -> 5120 bytes .../netstandard2.1/ValidateNodeRoleId.pdb | Bin 0 -> 8456 bytes .../ValidateNodeRoleId.sourcelink.json | 1 + .../ValidateNodeRoleId.AssemblyInfo.cs | 2 +- ...alidateNodeRoleId.AssemblyInfoInputs.cache | 2 +- .../ValidateNodeRoleId.deps.json | 42 + .../netstandard2.1/ValidateNodeRoleId.dll | Bin 0 -> 5120 bytes .../netstandard2.1/ValidateNodeRoleId.pdb | Bin 0 -> 8456 bytes .../ValidateNodeRoleId.deps.json | 42 + .../netstandard2.1/ValidateNodeRoleId.dll | Bin .../netstandard2.1/ValidateNodeRoleId.pdb | Bin .../ValidateStringOrInt.cs | 6 +- .../ValidateStringOrInt.AssemblyInfo.cs | 3 +- ...lidateStringOrInt.AssemblyInfoInputs.cache | 2 +- .../ValidateStringOrInt.AssemblyInfo.cs | 2 +- ...lidateStringOrInt.AssemblyInfoInputs.cache | 2 +- CHANGELOG.md | 13 + Source/Binaries/ValidateNodeRoleId.dll | Bin 5120 -> 5120 bytes Source/Private/ConvertTo-UnixEpoch.ps1 | 2 + .../Get-NinjaOneKeyVaultInformation.ps1 | 12 + Source/Private/Get-TokenExpiry.ps1 | 2 + .../Private/Invoke-NinjaOnePreFlightCheck.ps1 | 22 +- .../Set-NinjaOneKeyVaultInformation.ps1 | 96 ++ Source/Private/Update-NinjaOneToken.ps1 | 14 +- Source/Public/Connect-NinjaOne.ps1 | 135 ++- Source/Public/Find/Find-NinjaOneDevices.ps1 | 2 +- .../Get/Backup/Get-NinjaOneBackupJobs.ps1 | 77 +- .../Get/Ticketing/Get-NinjaOneContacts.ps1 | 4 - .../Ticketing/Get-NinjaOneTicketBoards.ps1 | 4 - .../Get/Ticketing/Get-NinjaOneTicketForms.ps1 | 4 - .../Get-NinjaOneTicketLogEntries.ps1 | 4 - .../Get/Ticketing/Get-NinjaOneTickets.ps1 | 17 +- build.ps1 | 2 +- test.ps1 | 2 +- 60 files changed, 626 insertions(+), 1002 deletions(-) delete mode 100644 C# Classes/.vs/C# Classes/FileContentIndex/47791917-faeb-486c-9e96-d5fe395af534.vsidx create mode 100644 C# Classes/.vs/C# Classes/FileContentIndex/67bef154-1554-406c-9910-7a7c1b5ae2d0.vsidx rename C# Classes/.vs/C# Classes/FileContentIndex/{815f5a3c-a749-4675-8641-0b34892f06ec.vsidx => e0da99d8-41ad-4e6f-9be9-69d5dc623c46.vsidx} (80%) rename C# Classes/ValidateNodeRoleId/bin/{Release => Debug}/netstandard2.1/ValidateNodeRoleId.deps.json (100%) create mode 100644 C# Classes/ValidateNodeRoleId/bin/Debug/netstandard2.1/ValidateNodeRoleId.dll create mode 100644 C# Classes/ValidateNodeRoleId/bin/Debug/netstandard2.1/ValidateNodeRoleId.pdb create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.AssemblyInfo.cs create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.AssemblyInfoInputs.cache create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.assets.cache create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.AssemblyReference.cache create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.CoreCompileInputs.cache create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.FileListAbsolute.txt create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.dll create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.pdb create mode 100644 C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.sourcelink.json create mode 100644 C# Classes/ValidateNodeRoleId/obj/bin/Debug/netstandard2.1/ValidateNodeRoleId.deps.json create mode 100644 C# Classes/ValidateNodeRoleId/obj/bin/Debug/netstandard2.1/ValidateNodeRoleId.dll create mode 100644 C# Classes/ValidateNodeRoleId/obj/bin/Debug/netstandard2.1/ValidateNodeRoleId.pdb create mode 100644 C# Classes/ValidateNodeRoleId/obj/bin/Release/netstandard2.1/ValidateNodeRoleId.deps.json rename C# Classes/ValidateNodeRoleId/{ => obj}/bin/Release/netstandard2.1/ValidateNodeRoleId.dll (100%) rename C# Classes/ValidateNodeRoleId/{ => obj}/bin/Release/netstandard2.1/ValidateNodeRoleId.pdb (100%) create mode 100644 Source/Private/Get-NinjaOneKeyVaultInformation.ps1 create mode 100644 Source/Private/Set-NinjaOneKeyVaultInformation.ps1 diff --git a/.artifacts/CodeCoverage.xml b/.artifacts/CodeCoverage.xml index 8b13789..585cd28 100644 --- a/.artifacts/CodeCoverage.xml +++ b/.artifacts/CodeCoverage.xml @@ -1 +1,109 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.artifacts/TestResults.xml b/.artifacts/TestResults.xml index dc68d05..b352550 100644 --- a/.artifacts/TestResults.xml +++ b/.artifacts/TestResults.xml @@ -1,927 +1,49 @@  - - + + - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + - - - - - - - - - - - - - at $_.PSObject.Properties.Name | Should -Contain -ExpectedValue 'Examples' -Because 'at least one example is required for each function.', R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 -at <ScriptBlock>, R:\Development\NinjaOne\Tests\NinjaOne.Help.Tests.ps1:48 + + \ No newline at end of file diff --git a/C# Classes/.vs/C# Classes/DesignTimeBuild/.dtbcache.v2 b/C# Classes/.vs/C# Classes/DesignTimeBuild/.dtbcache.v2 index b3893d4101d552ddf591e109e67669de6295a90f..be8a2ea5ffa1fa22562b9acce20be4c9b8be10e2 100644 GIT binary patch delta 465 zcmXAky-!p@6vf{N0fQD|)QDJUs5CLo%$rXd2iMrEow1pBXC~ONhG-!bE#11$){+Ev zaaVZ$6-uJ9)dauMZYEn=;B08l@7#NH@5$Xin%F;@=-hu8JgpcIO*Kevwe^7o!ZEn2 zWK{W5VaZjn7E4T+XUqcA)&&Pz5oar2oNrlJ_79$~!18K)=_@9MtbhVn)C$3+;}8m@>wCRWi{7gScCMf) zakKsG>0tS7+jM7j@#vZqccSALbY1nQ=Kgma|>-A|0UH@pSr(vPoaY z8qcM#C|*e4Q2LHW_U2ja#q^S`ZCAd8I4Bi@ECuN@wZn0pqYB_CYyJMCoWE+&ieX)b~Csl delta 528 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 Dj)a%n diff --git a/C# Classes/.vs/C# Classes/FileContentIndex/67bef154-1554-406c-9910-7a7c1b5ae2d0.vsidx b/C# Classes/.vs/C# Classes/FileContentIndex/67bef154-1554-406c-9910-7a7c1b5ae2d0.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..c58332907ddf2a95773d442a9a7d7786d5fce164 GIT binary patch literal 7622 zcmb`KcX*Ul7RK+ah>9oz_8J0e;_3uYERaMdGm~UsG81MdB(d|>gKop1N9hS?eW#?bc>)`qY) z5k^8on3ABP%a6K=MA$zO4oCzvF!-)S7y;E}P6z=R8Iq!VpBk9YX|jU`Kbk+J!8%!p zF0dA6c~$Pvjvu%{5T_h0WEgC^1y2CCo2cJ!W0b>btgLFR`LCmzK`7i~KV>Pl%Vc;qnso~9H z=5Ad@*n^6B&yElPmTy4mn-gK3Rv{;toJs^|Kz?a9ggONbJ1_!8t`PqS zB>{0_0@8~VVURPGN!)i#=0_REWO(F9Tf-nThQQ=H`o$&3FZ<};D0i5)L8gY{UbG|{ zgngz?!Qcj=JtQx@Su!$Nmj;J#B?5r2{a{BEq7f{IFPOp-jG(k8p)iyUq$@6|=_zJ5 z^udIf(vxKw76!F1TF^pl5RLe->{-QX*9RkLUymAb&i9B`L$5AUHt0HZ196J|BnFpHKyvFI0^A0x0nAncSQBdMIbG&(| zd6;>)d4!1*R_l&3k2a4nk2U$dNB_s0Czy5S1hd|pXd-c1ccOWciMrHygV|`FV!qov z)jZ8inoTC|rR<<=#Hr@#<{9QR^Gx$B^KA1RbGkXhY&P))A^WZ7x#mnWWwx1VGh=4W zcC*9mG;`)GbGDf`yUc=FG`r0?X2~p@6|={j3$jN0+@EKjXP$3X%?r#6&5O*7LE5>* z{RQSivu0juUIudhBKH@Ymz(|O5_73JU@kMSFqfNrWnx{fG_N#QnOB)to7b4vnybz0 z%Dnm;pt4)Xdh-2bKdEA!Xp+vab~-!~CcD zFZ18#f6V`yJS_0xx4DSdLvbGy-|y<uJ<#|;=E3F| z6E7jUj@KD+oH^b+)I7{Q+&scO(mcvM+C0WQ);!KU-aNsqGbfn!=0tOnd7^oed9vAH zHkzk^tcO$GKg~>@-JD@In|Ozl{Z{i_bEcUx z+sw3?F|%g7*fw|Dc+pzL>sd<_C9&?eo*u32AHi?nd4;*$Tw$&>uQXSgSD9Cv z*O=FutIg}o>&-Rh4dz;N(7e&S$y{fyH{WaCYz~f_*Gj9i37k9Y- ze)CTAF7s~l9`jz1>o&W;#k}8qz(oc8(_1n}S{v{}i)7B{W01 zFRsi(vtbT251+}PDx8p?y&`NPm)fPwn@{{th8O)DeaPWhgMiDK)H() zGMI;^!)#~eq2rCBNC zrN<1i*9zsm&FIeT-2t!C7nOU;BK{2GV0$*!QF%45NLfp)FV+h0XUu(8nT|fGJs78l zEPlB^-UaT2Ej}sPz-(vHqQ5vJ+V7HO<~)nca~3mCWiATXBb9k&on*0dw&$o_LY&+K z=a=wD<@}O*CG3lB&M#wMRL<&cG2<1~ljTwnME@|HtXeVZMU~LiFgM4&iUPhYNS;HB; z%Bm?zSwXA?W;P{dmbt&2?Bx&*?=EwmgT-zrGfYiOJES=&E4PR%tcFHtSzZ}GYnQdi zx?+9QL;0MsIy+#Urw*UC_{^2%l_SIVyBTd(O^k!ur8Z}BH`G{jT$P7+D(jb4shr9C zNNtc-pgmf}%3!+!t31hgmKCHNVf|8Dq#Wm6qn4#{PA}TbJx}vAl;=55;(93e%dE9Y zJEUFGlC%Pi^~xtTo)=VRnKec2g|a#d@Iq^>0%p1lWh|`qjFj_v)>Ao$RXY3(uqOE= z&P8K1=h+I+T{wRS1%n7-oo2hSsZmoT4H z)&-*}!wXw{BVaWorSasVpI90E#;zy^TFIat&oVv*!x6I@X`SC0JXNT)!;^^GC5?3! zPfeb4%x^{eXH2}xU9dvwoz+L>TIP!TZjr_u@H>!Km@nQLKFNGyvrxW!@$}*dpKn$( z$N4SJJHT%h=8R7@$LX2M3Zos?SqaKYXSJ1}tkAtDby_ENi+uBLF-P$YiD!3C?>9xg W6;ejvZ;X4NHAnMx5kG6kNB$4DT)J!k literal 0 HcmV?d00001 diff --git a/C# Classes/.vs/C# Classes/FileContentIndex/815f5a3c-a749-4675-8641-0b34892f06ec.vsidx b/C# Classes/.vs/C# Classes/FileContentIndex/e0da99d8-41ad-4e6f-9be9-69d5dc623c46.vsidx similarity index 80% rename from C# Classes/.vs/C# Classes/FileContentIndex/815f5a3c-a749-4675-8641-0b34892f06ec.vsidx rename to C# Classes/.vs/C# Classes/FileContentIndex/e0da99d8-41ad-4e6f-9be9-69d5dc623c46.vsidx index 428d9a19c0f56d39e1d2388e66d2029198d0241d..e66b078408b93470e6387672bdd8ef0f46deb00e 100644 GIT binary patch delta 452 zcmX|-u?@md3`8#hg_IO2Xb@|pq@aLJ*dh#&;?q!5(z8L>0tHc1u>udD@+0eHpU-Fi z^iAKSW4HO#?e*|1ZiV8T1#YDj;bbq(qeMiwMRJLpu%$iq;kPQse`T{OIAHC+I2wUGfB y2Nsn1EVqW}(n15n6afjsu+lyj@V6?pe+yXDu>3s_P&#~y1)$%JSGupu@8Soh!zs@I delta 452 zcmYk2u?@md3`8%00t2K)LLUh+00k>B00kQ`15Hq%04W7yP(i^qEWrvqeB>+9>Bl~w z&)>hT+UmBiSKI6Euz45vLh%jbJW46x;3AD8MFdrlh;dMIchHGCCFQcmxUS9(ncpYa#yX&5E| diff --git a/C# Classes/.vs/C# Classes/v17/.suo b/C# Classes/.vs/C# Classes/v17/.suo index 4e46c94c5d3548eb0b680f9e2ea807a61acad716..24678988207a1564f689893bfdbad078e42a5dda 100644 GIT binary patch delta 2129 zcmcIleN0SNL=q5yy`P~_o5h+vS z$B5E*{KM!%wDONxOvL*a$;@hG(PR=wBr$4C+#mXni81aa+CK!(>Ep2{GkzrVHov}m z&b{ZId(Qox^D@g)=6z|=Und!MMuovpj#HAiwzs!QYlIckohy?wOqNbs-RJK8;m6q5 ztW%tl&M{U2%yi)4GTc>)K!a_vD#3Xr!m^{|_-sT}A#8{mgbQ&yq88DE2q1z8vZqmp zb2~zn)PDz^Bs*!c-nO&ggmqUf+mGtn%3jpq`H))|9XuCl1 z#%+{|Vpeyx=|gcFBgw1V%jq&uE)IEcjT5Wt5t^A$2K6r8QBFM6xTJ>UzFLg4NoNM> zM)XGXY}0AYP85=&P#0r1M!Y3i^91RJ1V6N+(3Ixl`JiwxW@A2FBfe;Bknc9ZOv`7S zs-;E0kZw(IqWnRfk`wiaYBXd|6xJj^q&*4ViZZ>DMll}6vkAkk?Pi7xTokHHCD~a6 zi~Frm=Xi$ALWA>ZlGq%?M*^_!7}^(Z4~1q2QzxIAnt~0f5%Nxl_d?%AS4ZVTR~^F@ z=eJ6feBy26^@)j&!mp2h`OfBQ)BSV|a`{11hA}hDH}|k5_^7!@PTc1?a*sW${B+kH zuf98b>B^<|UQfu&zg;|2p3Z*r=K9nxD?})Rn4fr-!L{)ZA)m~^(yG~8{sS$lyYs-EoTgjI-Ky>xLMSXtGS1X&E`;9dFG0io4u0XwWrmVBQOQpsx zUCM6IMPp0jKeC1Tui$NpF*jn8TLx^b6Mg?>HBbrtw`#~GEwcC1KlKoyc(JMNR!N+i z8z`R7>AA0180ZBDZ2K-3i(mUz7iax>B`retDXoSis( zQ=viXSX{)9%1k^y@fs74%zrOIhaW3K8r<<9kWBhEhR&@bPB9c{B6gn{PJ$ zM2O!P?zG7U-E0N}$FYF;nayU2W{9Vu#|*M;(){Jv#gXg%ADC0SAlzcC6qvX*Cap%7 zpf5&LAc_#ULADb8W<)(=2VxVV96`J5wiUn25Y-6c9O$u<}B!I5tyi< z0Z~VxjX0pmCiKk+4`MGO5!xdLa$dG|qwhiVBFs5%NfjonwiCzm1tFD!OTuOLQ2SQ2 znZ-(x_myUer5zo3OrLzPVB^O6%kC|w9SYqbntG_GejQ|)O^htrk+4z+WZbPH-^ z4(7^tYu_Uh18+w)R5x8?F&OCZ!qNWTlARvko+~}W6X!>-BG(EBZpg6Q*J$>7ym=bl z2`)%AJ7BQg4Wh#VHixJ=9iKKl6f*WV&{gF%J;zKIv=vv7Sq*j^lVJ4BAX=kv83|I- z8kyl$P%5`WT4;l){FakkNt$Z`QP%*>3EmRYU>Jd>WiK#6tq*Y0E^4kIxL)BTZdy%7 z&4Wz+qD1P{2@^dc4l6Z5+89#fB23jTK)L}ls8cu{L=Q&~=Oiu?7MXf-UeaGi{$@^M zyMv+{N#|;#MP&K82;Na3z)9iy6Ql{#01_>5DG;@ooP;I>8~`Os1u7gCnk>+{nZ}Hu=L-O^1I_;aXYlZ z_6JNIN$0vv`H)dAkQoU}`u`5(Pi#lF%UA)y=7eBshJWwH6=d)ZxMx z0+~Qqq92nU3(@Y|5ckQNJT@Wxsl7|3%&1KtJSaeFz@MBFl8OMIr&C%g>@S9){xYp> V>MMhniWy=v7q!^Tv@tm&{Q{8D>q!6r diff --git a/C# Classes/.vs/ProjectEvaluation/c# classes.metadata.v7.bin b/C# Classes/.vs/ProjectEvaluation/c# classes.metadata.v7.bin index 000475da80180c68b83a53e507e813ceb9ed9cd8..c90f4e4813aea7d0bf94754bbc776b646c52e5be 100644 GIT binary patch delta 857 zcmZ`%T}YEr7~Xm3`SyL=v`xh&3Qow1wCQGZE@+w%ku_5zLI`Y{YuKMRDzT868WsuW zXL~Ut`U8h%IMR+6VckRo{ixxExXQo_>(=T*BRl(+q!*rxm-9Z)`}^=ttZ0W?by}6E zS1HepU-Q9@;|!8o>pSYnSUu>fOICF%m0)#P3N3aO57foJ7P~#qM!0W?`PnsgTY&6l*?2GwyIUbguvrT8^7bH^CaIKi z>cSe8g{CR8Wj!A!a2`E=C|!?I4M)%X&#Im#;(A`rR3Bu|tKpZ19y{@8pbw8;hYXxd zAlb6HO29G$Nyox#V8XpV2+$?%>OdcR;RAgF%@|t>^|8q&C-knn^(X<~8Xu@!||g!-N@P#)5VT zpi72I40J$0*+gDt$yiPCrtI+@!G<2lWq1{ys%he}-(8@3{P9%nQ6%>R~U1$(RR}tt{Hwkt8*3CH=@AJIx?|IL8oV33BlVef- zS`|g1r5RjE#`=!!rkn6v(*myY=D6bvdB$;+FV-47QF(w|aSW>7N3tTG z#9`Z_o+w$^)+QFNBM4(-*>vcgoVic(sw??C6t#0#nMK^_MgwCVw3NVU9y**$(+M~z z(2pIo-h*=D%gk*sW#e^p|H`V)J*h_F>_rz0N8RpC2z`V{F4fX#E4;k7w3sSyqRV*m zB2$Y{vKaxI?S`G|I-y#a)7K*bi*BKsQRH4`$SztBL!*`t%&jx!{oN)xNrd~*$fz)d z0$Tsf&hXW5xjGB>dClPUt=LMzkL(~{YsecOzyqq7%JeFwPy{wAk<{9MYML0pnqY(2 zldYYN%AI63=iJQaq4rPA5Q#e&2BmJpZ&FC7NkLUJC`=cXiC_xvn0jbZrV^es+F|T1 z$Ry-udKu77ZG*_?{;%7GZwM*fsGc!d^*FcJ)YI%UrjctDBeeK~HH)D!t4n AeEM&sYwVsW;$&ZNUT%G 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 HxhekvzKwb2 delta 23 ecmaFzQt!z^*@hOz7N!>F7M2#)7Pc+yPXYjZU // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -14,7 +13,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("MetadataAttribute")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+aa5e0d4c1ca950d1efb0f4903c92e134eb4556df")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b879e06dbf11105d702faf1fe4830bc3d96e2920")] [assembly: System.Reflection.AssemblyProductAttribute("MetadataAttribute")] [assembly: System.Reflection.AssemblyTitleAttribute("MetadataAttribute")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/C# Classes/MetadataAttribute/obj/Debug/netstandard2.1/MetadataAttribute.AssemblyInfoInputs.cache b/C# Classes/MetadataAttribute/obj/Debug/netstandard2.1/MetadataAttribute.AssemblyInfoInputs.cache index b5c6c16..741fa8b 100644 --- a/C# Classes/MetadataAttribute/obj/Debug/netstandard2.1/MetadataAttribute.AssemblyInfoInputs.cache +++ b/C# Classes/MetadataAttribute/obj/Debug/netstandard2.1/MetadataAttribute.AssemblyInfoInputs.cache @@ -1 +1 @@ -20831bfb983eef4ba512424c361d82eb2e86c051cb9ab4d664ad233f436c2f26 +f47b9af9a2e311cb28648e74d76325b9d76a07dc26e3a115b603fde7fce44f8c diff --git a/C# Classes/MetadataAttribute/obj/Release/netstandard2.1/MetadataAttribute.AssemblyInfo.cs b/C# Classes/MetadataAttribute/obj/Release/netstandard2.1/MetadataAttribute.AssemblyInfo.cs index 5915574..1948de6 100644 --- a/C# Classes/MetadataAttribute/obj/Release/netstandard2.1/MetadataAttribute.AssemblyInfo.cs +++ b/C# Classes/MetadataAttribute/obj/Release/netstandard2.1/MetadataAttribute.AssemblyInfo.cs @@ -14,7 +14,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("MetadataAttribute")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+95ffe00f92432edd5afa99b995d6e9e3e2a3a7de")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b879e06dbf11105d702faf1fe4830bc3d96e2920")] [assembly: System.Reflection.AssemblyProductAttribute("MetadataAttribute")] [assembly: System.Reflection.AssemblyTitleAttribute("MetadataAttribute")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/C# Classes/MetadataAttribute/obj/Release/netstandard2.1/MetadataAttribute.AssemblyInfoInputs.cache b/C# Classes/MetadataAttribute/obj/Release/netstandard2.1/MetadataAttribute.AssemblyInfoInputs.cache index c3f5baa..efb38be 100644 --- a/C# Classes/MetadataAttribute/obj/Release/netstandard2.1/MetadataAttribute.AssemblyInfoInputs.cache +++ b/C# Classes/MetadataAttribute/obj/Release/netstandard2.1/MetadataAttribute.AssemblyInfoInputs.cache @@ -1 +1 @@ -190ac49c64636da9455cb6afdef60f866c3d40eae67ac34624aa75a34e87c346 +bcb134855496168b9a92b7f0384c0e18f0f8ac90a5434183b285571b350e14cd diff --git a/C# Classes/ValidateNodeRoleId/ValidateNodeRoleId.cs b/C# Classes/ValidateNodeRoleId/ValidateNodeRoleId.cs index 6376406..a49285c 100644 --- a/C# Classes/ValidateNodeRoleId/ValidateNodeRoleId.cs +++ b/C# Classes/ValidateNodeRoleId/ValidateNodeRoleId.cs @@ -1,12 +1,19 @@ using System.Management.Automation; - -class ValidateNodeRoleId : ValidateEnumeratedArgumentsAttribute { +public class ValidateNodeRoleId : ValidateEnumeratedArgumentsAttribute { protected override void ValidateElement(object element) { if (element is null) { throw new ValidationMetadataException("Element is null."); } - if (((string)element != "auto") && !(element is int)) { - throw new ValidationMetadataException("Element is not 'auto' or an integer."); + if (!(element is int) || !(element is string)) { + throw new ValidationMetadataException("Element is not an integer or string"); + } + + if ((element is int) && (((int)element) < 0)) { + throw new ValidationMetadataException("Element is not a valid integer value"); + } + + if ((element is string) && !((string)element).Equals("auto")) { + throw new ValidationMetadataException("Element string is not equal to auto"); } } } \ No newline at end of file diff --git a/C# Classes/ValidateNodeRoleId/ValidateNodeRoleId.csproj b/C# Classes/ValidateNodeRoleId/ValidateNodeRoleId.csproj index 567c938..502daa7 100644 --- a/C# Classes/ValidateNodeRoleId/ValidateNodeRoleId.csproj +++ b/C# Classes/ValidateNodeRoleId/ValidateNodeRoleId.csproj @@ -8,7 +8,7 @@ + DestinationFolder="..\..\Source\Binaries" /> diff --git a/C# Classes/ValidateNodeRoleId/bin/Release/netstandard2.1/ValidateNodeRoleId.deps.json b/C# Classes/ValidateNodeRoleId/bin/Debug/netstandard2.1/ValidateNodeRoleId.deps.json similarity index 100% rename from C# Classes/ValidateNodeRoleId/bin/Release/netstandard2.1/ValidateNodeRoleId.deps.json rename to C# Classes/ValidateNodeRoleId/bin/Debug/netstandard2.1/ValidateNodeRoleId.deps.json diff --git a/C# Classes/ValidateNodeRoleId/bin/Debug/netstandard2.1/ValidateNodeRoleId.dll b/C# Classes/ValidateNodeRoleId/bin/Debug/netstandard2.1/ValidateNodeRoleId.dll new file mode 100644 index 0000000000000000000000000000000000000000..40835d8996b2473af7789a952b9eb5d06b1298da GIT binary patch literal 5120 zcmeHKYit}>6+Scjh##?IH;&V)2_462+Q#m7*K0dAp~dgi)USFSC#II-+1=~Sq_Z=d znOVmMfzqZa1%UvGKOlsV5CSBSKq^s%idv-p;Sq@+l|V%m4^`q%B_!YnRKnpqcV>3S zcG`yitHibE%z58)&b@Q)-Puomgm_C8 zX4le1!__K|U2^oYR?scW_O!gvoT{Z6mNqe;)5>;Hq*_{e`oBQpMlf($;U!LY!8i?<5-V_X_dZ=siEFZv5sw}DcQT9 z9FP?ksW*KpR_%baw>4Hhgm=ewtaDrGQ4TlnW3}$xYR$3lvU=xsyhrKW-@rOgM|9Xl z@1dB-Z|A2F*at9&^w`EY$l{Pmixq*5>$z6zR{mbr?Tm6W|(W1AQSM5 z$fx_WME}COBL+O@IfhkoSz|x;bptZ$KAWSCeg2;8K67?@0@_%aZdAiH{O{_^omT@GmOERXUjIt=(n}!&Gjowk80QE>0VfbD+NQIhWjbx!_?SM(T2e64A z0&JsP)Kq;)%3gEr83D^x; zihAgmfLZ!8;AwgraGd@P_=M!=0LSSm$|~d7idm%~@j`$XXh^vxIoBlT8Wre*@@+as z4=eXl{3_=b9lTrA2=4*Jzylk$Hqz8BR}PG6%ggrB$7bzf)fA7>vThnh-4k=@>x;H2 zri)|=&-HYxs5?cPEayeBD2k&Vwtl|q2^zP{6~h$H8DR+rh7nOs>8z`lM2(^ek*}6Y zdftri=BlQ-lQZhNqMSFkmJBbdxTHHJ;Z5N{5?5^J>AKfYe+tno3&%BVYp-zHTDP6D z?m?)V@2WL!TkA%tigb23@l%z|MPcfj5_9X5gteQrs^y>-P6?>xMU=uY7aUZ);MJ|e z3Se?ROX`Bqf~VK5t-4^bYI#OkNWN#}4b$)<(y=Y9&XlQ_D7WQ$qMQoUQ$gD3T;w;f z+bnvjXqtgtXg;f3SVhhzHCpv-zlfo5QLLMyz~u^^0i6||j=iK$ZWcsE%2EZ-c0!v8 zLoZpj>lp<%WQ8Gyn<^)q4Wl63V9Ow6>{F0otvEfGW{rYlyY{-58i#ZgE4$?yE=^vp z>ZVJzdiguYrTP3Ngc`;vCQX?XiQtWIqH7ZUUQij2MILGR;$1+Cs^FXWZt2XsY1mR9 z-9lQiwV)Cn2ed7r3!cM01bmu)KR+66kd8SGD&EGUFRQ{oHR_1Y!yJ2Ki_Tcj#gA0b zW!UiynzYt{2YzUJi@Ay1 zf&cvTe8a07W7iKTzj*%K%5{!?@uRB~Vgq;43V->lbB1+EpSQ&7c(*og>S)pK>fTDO z+WAW`LziET93CkAZFEzWVxDr3kM<1=QV_smA_#z!Y`l;$UT*mH=Z}8>^izr8a?63= z$GFDW-Vt7ceaVG!+nF%US>3Rx>=tZC2-)5OyIc3e&F*sS_4%RX@GXnzZlbF@!}o8x z*rj{;tjE6{&W{jnMy?E-v3_uuDMuFoCutGbG=6E#fu07O@_%*F&*OjF_IDre9v=St z<31sO?u1v5fJJ;qR^U}fUz|dxO!ugR~e96Qcm>a`0wFV zK}_}Dy4TZ-QYTH}Uq9u66XrY!+j00SQ$^0Pg^YCB|9JwA%V&*({Vn+U@X#n&o z@cY2iC4U`y{jkV_n@5aUXbi(nKxY^a?=bXcxt60?KNpfRG)+`e!`|Ats`WT{Z9l-! TaCX70|MUm2{lCeFz5@RRDhDe8 literal 0 HcmV?d00001 diff --git a/C# Classes/ValidateNodeRoleId/bin/Debug/netstandard2.1/ValidateNodeRoleId.pdb b/C# Classes/ValidateNodeRoleId/bin/Debug/netstandard2.1/ValidateNodeRoleId.pdb new file mode 100644 index 0000000000000000000000000000000000000000..fb8c66893168229f068577e7a756bb1969e9de3b GIT binary patch literal 8456 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 literal 0 HcmV?d00001 diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 0000000..348b87f --- /dev/null +++ b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.AssemblyInfo.cs b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.AssemblyInfo.cs new file mode 100644 index 0000000..1713e15 --- /dev/null +++ b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("ValidateNodeRoleId")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b879e06dbf11105d702faf1fe4830bc3d96e2920")] +[assembly: System.Reflection.AssemblyProductAttribute("ValidateNodeRoleId")] +[assembly: System.Reflection.AssemblyTitleAttribute("ValidateNodeRoleId")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.AssemblyInfoInputs.cache b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.AssemblyInfoInputs.cache new file mode 100644 index 0000000..fe4b308 --- /dev/null +++ b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +41255ad57c5ae932e84f76cfb09da08926fa97fb23e736aeb71d54b5699fd9a3 diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.GeneratedMSBuildEditorConfig.editorconfig b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..04b2851 --- /dev/null +++ b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,5 @@ +is_global = true +build_property.RootNamespace = ValidateNodeRoleId +build_property.ProjectDir = R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.assets.cache b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..096ebe0943fb5941b240c68fcf5791c55f64c581 GIT binary patch literal 955 zcmd5)J4*vW5RQ5=#<#{otZYQExM)NKyI_0-%>yqA;##b^(H!pW9k+Yxf!J7DSlEb# zKf&Hg5N&Pj{TmiG&c=(xh!3nB_*iE5W9HkLueh|3?uzPY}!q2U&Yf>Epx*galj9QH~{S;8IWf(y^(u z9Il&;wbV&b%2ci)qTzkxp(GC#l@LP-F=|4V--IZ-q6~jcNmjM0`mG^3hNtS=hKM8D z5giCM&Mt&1IQIK7A^Sc4!GzT>RVXQq6Yj>l9z-vq57CcEAnIcPlkU8~0J8XIgsl0^ z0uuGiHM9%vIa-}~SCPs}mWM?q(JRT1UP=Ds6)jI~h=oNHS&_9}W|b|;f(&e19L(rE zWdhn(KsamaOUs7%tm6jDPMI=IV!Qqf2x;-E NzYTv&H6Q-zU#~2<7{vep literal 0 HcmV?d00001 diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.AssemblyReference.cache b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..8e79ff7ce15bcec75cc1be1c4a745623ea79488c GIT binary patch literal 510 zcmZQ$WMp7qV61VriU}=FEh>)j%}mZnOwI9E56REZNsZCVD@{)=i77}-&Q45EEsiP3 zF9)j1NX^M9E=kNwNi0gy%gIbCN-V03G1W8FGmHW9V)9Z;V6sMf1~I{v#U-h^dcKKy zKqGQf^Gfs_OH1-|6H7Al^Yl`3a==bt*m3li!{TckjEsyj_%tvw1Ko=ZK<)68MgkJ@SLeWy)xvxE( zs{Qpa2W#v~Mh>8x4EI}vtu^yAWsJw?Z5@R$V7LPV%+^@X00eauoJ(^`N{do$^HNJo ziV|~l6aq?Q!7LAvr~Zz4U^K0ElkZ4Q;f|_QjJZ4b^!q+SD6V=zp;U_p(O(V D*RrLc literal 0 HcmV?d00001 diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.CoreCompileInputs.cache b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..5589fae --- /dev/null +++ b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +06ddf70c6dddd6a1a67b51cd9985f4ec481eab0799d886a807101132f3ba6a81 diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.FileListAbsolute.txt b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..d376269 --- /dev/null +++ b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\bin\Debug\netstandard2.1\ValidateNodeRoleId.deps.json +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\bin\Debug\netstandard2.1\ValidateNodeRoleId.dll +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\bin\Debug\netstandard2.1\ValidateNodeRoleId.pdb +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\obj\Debug\netstandard2.1\ValidateNodeRoleId.csproj.AssemblyReference.cache +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\obj\Debug\netstandard2.1\ValidateNodeRoleId.GeneratedMSBuildEditorConfig.editorconfig +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\obj\Debug\netstandard2.1\ValidateNodeRoleId.AssemblyInfoInputs.cache +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\obj\Debug\netstandard2.1\ValidateNodeRoleId.AssemblyInfo.cs +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\obj\Debug\netstandard2.1\ValidateNodeRoleId.csproj.CoreCompileInputs.cache +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\obj\Debug\netstandard2.1\ValidateNodeRoleId.sourcelink.json +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\obj\Debug\netstandard2.1\ValidateNodeRoleId.dll +R:\Development\NinjaOne\C# Classes\ValidateNodeRoleId\obj\Debug\netstandard2.1\ValidateNodeRoleId.pdb diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.dll b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.dll new file mode 100644 index 0000000000000000000000000000000000000000..40835d8996b2473af7789a952b9eb5d06b1298da GIT binary patch literal 5120 zcmeHKYit}>6+Scjh##?IH;&V)2_462+Q#m7*K0dAp~dgi)USFSC#II-+1=~Sq_Z=d znOVmMfzqZa1%UvGKOlsV5CSBSKq^s%idv-p;Sq@+l|V%m4^`q%B_!YnRKnpqcV>3S zcG`yitHibE%z58)&b@Q)-Puomgm_C8 zX4le1!__K|U2^oYR?scW_O!gvoT{Z6mNqe;)5>;Hq*_{e`oBQpMlf($;U!LY!8i?<5-V_X_dZ=siEFZv5sw}DcQT9 z9FP?ksW*KpR_%baw>4Hhgm=ewtaDrGQ4TlnW3}$xYR$3lvU=xsyhrKW-@rOgM|9Xl z@1dB-Z|A2F*at9&^w`EY$l{Pmixq*5>$z6zR{mbr?Tm6W|(W1AQSM5 z$fx_WME}COBL+O@IfhkoSz|x;bptZ$KAWSCeg2;8K67?@0@_%aZdAiH{O{_^omT@GmOERXUjIt=(n}!&Gjowk80QE>0VfbD+NQIhWjbx!_?SM(T2e64A z0&JsP)Kq;)%3gEr83D^x; zihAgmfLZ!8;AwgraGd@P_=M!=0LSSm$|~d7idm%~@j`$XXh^vxIoBlT8Wre*@@+as z4=eXl{3_=b9lTrA2=4*Jzylk$Hqz8BR}PG6%ggrB$7bzf)fA7>vThnh-4k=@>x;H2 zri)|=&-HYxs5?cPEayeBD2k&Vwtl|q2^zP{6~h$H8DR+rh7nOs>8z`lM2(^ek*}6Y zdftri=BlQ-lQZhNqMSFkmJBbdxTHHJ;Z5N{5?5^J>AKfYe+tno3&%BVYp-zHTDP6D z?m?)V@2WL!TkA%tigb23@l%z|MPcfj5_9X5gteQrs^y>-P6?>xMU=uY7aUZ);MJ|e z3Se?ROX`Bqf~VK5t-4^bYI#OkNWN#}4b$)<(y=Y9&XlQ_D7WQ$qMQoUQ$gD3T;w;f z+bnvjXqtgtXg;f3SVhhzHCpv-zlfo5QLLMyz~u^^0i6||j=iK$ZWcsE%2EZ-c0!v8 zLoZpj>lp<%WQ8Gyn<^)q4Wl63V9Ow6>{F0otvEfGW{rYlyY{-58i#ZgE4$?yE=^vp z>ZVJzdiguYrTP3Ngc`;vCQX?XiQtWIqH7ZUUQij2MILGR;$1+Cs^FXWZt2XsY1mR9 z-9lQiwV)Cn2ed7r3!cM01bmu)KR+66kd8SGD&EGUFRQ{oHR_1Y!yJ2Ki_Tcj#gA0b zW!UiynzYt{2YzUJi@Ay1 zf&cvTe8a07W7iKTzj*%K%5{!?@uRB~Vgq;43V->lbB1+EpSQ&7c(*og>S)pK>fTDO z+WAW`LziET93CkAZFEzWVxDr3kM<1=QV_smA_#z!Y`l;$UT*mH=Z}8>^izr8a?63= z$GFDW-Vt7ceaVG!+nF%US>3Rx>=tZC2-)5OyIc3e&F*sS_4%RX@GXnzZlbF@!}o8x z*rj{;tjE6{&W{jnMy?E-v3_uuDMuFoCutGbG=6E#fu07O@_%*F&*OjF_IDre9v=St z<31sO?u1v5fJJ;qR^U}fUz|dxO!ugR~e96Qcm>a`0wFV zK}_}Dy4TZ-QYTH}Uq9u66XrY!+j00SQ$^0Pg^YCB|9JwA%V&*({Vn+U@X#n&o z@cY2iC4U`y{jkV_n@5aUXbi(nKxY^a?=bXcxt60?KNpfRG)+`e!`|Ats`WT{Z9l-! TaCX70|MUm2{lCeFz5@RRDhDe8 literal 0 HcmV?d00001 diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.pdb b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.pdb new file mode 100644 index 0000000000000000000000000000000000000000..fb8c66893168229f068577e7a756bb1969e9de3b GIT binary patch literal 8456 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 literal 0 HcmV?d00001 diff --git a/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.sourcelink.json b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.sourcelink.json new file mode 100644 index 0000000..d1cb578 --- /dev/null +++ b/C# Classes/ValidateNodeRoleId/obj/Debug/netstandard2.1/ValidateNodeRoleId.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"R:\\Development\\NinjaOne\\*":"https://dev.azure.com/MSPsUK/NinjaOne/_apis/git/repositories/NinjaOne/items?api-version=1.0&versionType=commit&version=b879e06dbf11105d702faf1fe4830bc3d96e2920&path=/*"}} \ No newline at end of file diff --git a/C# Classes/ValidateNodeRoleId/obj/Release/netstandard2.1/ValidateNodeRoleId.AssemblyInfo.cs b/C# Classes/ValidateNodeRoleId/obj/Release/netstandard2.1/ValidateNodeRoleId.AssemblyInfo.cs index 5a6b2b7..e6e1a8e 100644 --- a/C# Classes/ValidateNodeRoleId/obj/Release/netstandard2.1/ValidateNodeRoleId.AssemblyInfo.cs +++ b/C# Classes/ValidateNodeRoleId/obj/Release/netstandard2.1/ValidateNodeRoleId.AssemblyInfo.cs @@ -14,7 +14,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("ValidateNodeRoleId")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+95ffe00f92432edd5afa99b995d6e9e3e2a3a7de")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b879e06dbf11105d702faf1fe4830bc3d96e2920")] [assembly: System.Reflection.AssemblyProductAttribute("ValidateNodeRoleId")] [assembly: System.Reflection.AssemblyTitleAttribute("ValidateNodeRoleId")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/C# Classes/ValidateNodeRoleId/obj/Release/netstandard2.1/ValidateNodeRoleId.AssemblyInfoInputs.cache b/C# Classes/ValidateNodeRoleId/obj/Release/netstandard2.1/ValidateNodeRoleId.AssemblyInfoInputs.cache index 06d2168..e9f316a 100644 --- a/C# Classes/ValidateNodeRoleId/obj/Release/netstandard2.1/ValidateNodeRoleId.AssemblyInfoInputs.cache +++ b/C# Classes/ValidateNodeRoleId/obj/Release/netstandard2.1/ValidateNodeRoleId.AssemblyInfoInputs.cache @@ -1 +1 @@ -d528d1bca552f80e0c86d032a5c6f38ab964bd941cf87415bd1373c1e1c44266 +6316affa1962707b65c93042272ae4e9d3f83bbb80546aca9b8cbf2bc80d0d4d diff --git a/C# Classes/ValidateNodeRoleId/obj/bin/Debug/netstandard2.1/ValidateNodeRoleId.deps.json b/C# Classes/ValidateNodeRoleId/obj/bin/Debug/netstandard2.1/ValidateNodeRoleId.deps.json new file mode 100644 index 0000000..3f71954 --- /dev/null +++ b/C# Classes/ValidateNodeRoleId/obj/bin/Debug/netstandard2.1/ValidateNodeRoleId.deps.json @@ -0,0 +1,42 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "ValidateNodeRoleId/1.0.0": { + "dependencies": { + "PowerShellStandard.Library": "5.1.1" + }, + "runtime": { + "ValidateNodeRoleId.dll": {} + } + }, + "PowerShellStandard.Library/5.1.1": { + "runtime": { + "lib/netstandard2.0/System.Management.Automation.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "5.1.1.0" + } + } + } + } + }, + "libraries": { + "ValidateNodeRoleId/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "PowerShellStandard.Library/5.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-e31xJjG+Kjbv6YF3Yq6D4Dl3or8v7LrNF41k3CXrWozW6hR1zcOe5KYuZJaGSiAgLnwP8wcW+I3+IWEzMPZKXQ==", + "path": "powershellstandard.library/5.1.1", + "hashPath": "powershellstandard.library.5.1.1.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/C# Classes/ValidateNodeRoleId/obj/bin/Debug/netstandard2.1/ValidateNodeRoleId.dll b/C# Classes/ValidateNodeRoleId/obj/bin/Debug/netstandard2.1/ValidateNodeRoleId.dll new file mode 100644 index 0000000000000000000000000000000000000000..074fed37ea04aacee9ba63d1cbe670d26a68ea4c GIT binary patch literal 5120 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 literal 0 HcmV?d00001 diff --git a/C# Classes/ValidateNodeRoleId/obj/bin/Release/netstandard2.1/ValidateNodeRoleId.deps.json b/C# Classes/ValidateNodeRoleId/obj/bin/Release/netstandard2.1/ValidateNodeRoleId.deps.json new file mode 100644 index 0000000..3f71954 --- /dev/null +++ b/C# Classes/ValidateNodeRoleId/obj/bin/Release/netstandard2.1/ValidateNodeRoleId.deps.json @@ -0,0 +1,42 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "ValidateNodeRoleId/1.0.0": { + "dependencies": { + "PowerShellStandard.Library": "5.1.1" + }, + "runtime": { + "ValidateNodeRoleId.dll": {} + } + }, + "PowerShellStandard.Library/5.1.1": { + "runtime": { + "lib/netstandard2.0/System.Management.Automation.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "5.1.1.0" + } + } + } + } + }, + "libraries": { + "ValidateNodeRoleId/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "PowerShellStandard.Library/5.1.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-e31xJjG+Kjbv6YF3Yq6D4Dl3or8v7LrNF41k3CXrWozW6hR1zcOe5KYuZJaGSiAgLnwP8wcW+I3+IWEzMPZKXQ==", + "path": "powershellstandard.library/5.1.1", + "hashPath": "powershellstandard.library.5.1.1.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/C# Classes/ValidateNodeRoleId/bin/Release/netstandard2.1/ValidateNodeRoleId.dll b/C# Classes/ValidateNodeRoleId/obj/bin/Release/netstandard2.1/ValidateNodeRoleId.dll similarity index 100% rename from C# Classes/ValidateNodeRoleId/bin/Release/netstandard2.1/ValidateNodeRoleId.dll rename to C# Classes/ValidateNodeRoleId/obj/bin/Release/netstandard2.1/ValidateNodeRoleId.dll diff --git a/C# Classes/ValidateNodeRoleId/bin/Release/netstandard2.1/ValidateNodeRoleId.pdb b/C# Classes/ValidateNodeRoleId/obj/bin/Release/netstandard2.1/ValidateNodeRoleId.pdb similarity index 100% rename from C# Classes/ValidateNodeRoleId/bin/Release/netstandard2.1/ValidateNodeRoleId.pdb rename to C# Classes/ValidateNodeRoleId/obj/bin/Release/netstandard2.1/ValidateNodeRoleId.pdb diff --git a/C# Classes/ValidateStringOrInt/ValidateStringOrInt.cs b/C# Classes/ValidateStringOrInt/ValidateStringOrInt.cs index 37ab62d..fc2e4a2 100644 --- a/C# Classes/ValidateStringOrInt/ValidateStringOrInt.cs +++ b/C# Classes/ValidateStringOrInt/ValidateStringOrInt.cs @@ -1,12 +1,10 @@ using System.Management.Automation; public class ValidateStringOrInt : ValidateEnumeratedArgumentsAttribute { protected override void ValidateElement(object element) { - if (element is null) - { + if (element is null) { throw new ValidationMetadataException("Element is null."); } - if (!(element is string) && !(element is int)) - { + if (!(element is string) && !(element is int)) { throw new ValidationMetadataException("Element is not a string or integer."); } } diff --git a/C# Classes/ValidateStringOrInt/obj/Debug/netstandard2.1/ValidateStringOrInt.AssemblyInfo.cs b/C# Classes/ValidateStringOrInt/obj/Debug/netstandard2.1/ValidateStringOrInt.AssemblyInfo.cs index af81661..622859b 100644 --- a/C# Classes/ValidateStringOrInt/obj/Debug/netstandard2.1/ValidateStringOrInt.AssemblyInfo.cs +++ b/C# Classes/ValidateStringOrInt/obj/Debug/netstandard2.1/ValidateStringOrInt.AssemblyInfo.cs @@ -1,7 +1,6 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -14,7 +13,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("ValidateStringOrInt")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+95ffe00f92432edd5afa99b995d6e9e3e2a3a7de")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b879e06dbf11105d702faf1fe4830bc3d96e2920")] [assembly: System.Reflection.AssemblyProductAttribute("ValidateStringOrInt")] [assembly: System.Reflection.AssemblyTitleAttribute("ValidateStringOrInt")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/C# Classes/ValidateStringOrInt/obj/Debug/netstandard2.1/ValidateStringOrInt.AssemblyInfoInputs.cache b/C# Classes/ValidateStringOrInt/obj/Debug/netstandard2.1/ValidateStringOrInt.AssemblyInfoInputs.cache index f54435d..106e159 100644 --- a/C# Classes/ValidateStringOrInt/obj/Debug/netstandard2.1/ValidateStringOrInt.AssemblyInfoInputs.cache +++ b/C# Classes/ValidateStringOrInt/obj/Debug/netstandard2.1/ValidateStringOrInt.AssemblyInfoInputs.cache @@ -1 +1 @@ -ff86ea5a1334e68facfb05e836fdb0af1ba36a7532364a8e4e010053df7e5a9e +0e98e4b4ae60bb472de60dcc67d634381f87b51fe1f14ff63335739957173b98 diff --git a/C# Classes/ValidateStringOrInt/obj/Release/netstandard2.1/ValidateStringOrInt.AssemblyInfo.cs b/C# Classes/ValidateStringOrInt/obj/Release/netstandard2.1/ValidateStringOrInt.AssemblyInfo.cs index 986b513..aa1adea 100644 --- a/C# Classes/ValidateStringOrInt/obj/Release/netstandard2.1/ValidateStringOrInt.AssemblyInfo.cs +++ b/C# Classes/ValidateStringOrInt/obj/Release/netstandard2.1/ValidateStringOrInt.AssemblyInfo.cs @@ -14,7 +14,7 @@ [assembly: System.Reflection.AssemblyCompanyAttribute("ValidateStringOrInt")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+95ffe00f92432edd5afa99b995d6e9e3e2a3a7de")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b879e06dbf11105d702faf1fe4830bc3d96e2920")] [assembly: System.Reflection.AssemblyProductAttribute("ValidateStringOrInt")] [assembly: System.Reflection.AssemblyTitleAttribute("ValidateStringOrInt")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/C# Classes/ValidateStringOrInt/obj/Release/netstandard2.1/ValidateStringOrInt.AssemblyInfoInputs.cache b/C# Classes/ValidateStringOrInt/obj/Release/netstandard2.1/ValidateStringOrInt.AssemblyInfoInputs.cache index ead0ecf..334d254 100644 --- a/C# Classes/ValidateStringOrInt/obj/Release/netstandard2.1/ValidateStringOrInt.AssemblyInfoInputs.cache +++ b/C# Classes/ValidateStringOrInt/obj/Release/netstandard2.1/ValidateStringOrInt.AssemblyInfoInputs.cache @@ -1 +1 @@ -a48eefae3b42b900fda074782b6d8464634b85374c085531074e2bbc6215928f +f60e2d1bb5327f49e5f20fa0ec003f615fe64a14cfbec0d30b0ae66cd1fbfd89 diff --git a/CHANGELOG.md b/CHANGELOG.md index 24130cd..f6e5d66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ Please note that backwards compatibility breaks are prefixed with `{"BC"}` (short for Breaking Change). +## 2024-02-16 - Version 2.0.0-RC3 + +* Fix broken ticket commandlet. +* Remove Client Credentials block on Ticketing GET endpoints (thanks Ninja team and Luke Whitelock!) +* Fix device search commandlet. +* Test suite improvements. +* Fix broken class preventing correct commandlet functionality. +* Start implementing native secret vault support. Present but not entirely functional + +## 2024-01-17 - Version 2.0.0-RC2 + +* Move classes to C# code and compile to DLLs for better portability and reliability. + ## 2024-01-16 - Version 2.0.0-RC1 * Add new commandlets: diff --git a/Source/Binaries/ValidateNodeRoleId.dll b/Source/Binaries/ValidateNodeRoleId.dll index d4d1b055b3448196378b96e369150f3756eed208..40835d8996b2473af7789a952b9eb5d06b1298da 100644 GIT binary patch delta 1356 zcmZuxZD?Cn7=F&V`A(WHYnn}0HBGv;Yht`fx+bwWwsob}O;*;`txVW*+oTk0vZcuo z!M0o7m^g9e=np|ee+Vl6D^?J}3H}lNIS@LWO#C?zKYplS@Hw|x8S1&5_q@;hyzld# zd+x__-*VsetB#vz_gq}P)+IBE)sLPDe%}uq1IGd2rm@=H5jYD3h=1A(oKW2|sis7) z%=^_PvG_nJL5AZ=P6;RS-N45lK&XR(+)_;TwE;f#TP;WKcx^k$-4WyMmjvMG-+zxV z{)46FfeusRb*eKx1S8xOK36h;8sWKxAjMxa8ey`@pwZ~$8g3eqrbvh#es^+?dGUYe z`HlB=ex&J0h)BSrwVt~#M{6WIjk;cIpOC1wvxzMkY4hsrFSfG#d4JpN`%~Y_o{4MR zaeNW@gKOBJKT)sERc06T`2<{mhkK4sP9W?CScdrM0}N{h?AXC z4I627&ajd{$}Z``v*?mO92If;zuA!up(DqojtH_YG=*v!k1q+f&`l1);A7c?by=YO zK|F!+sBUm&XT>g=+Cm2?P}@QyM3=UZ=H9T;SNKaFA$qJE9GfcKEF(U{i;5I{N>o;# zI>weh#4Q=aMU9byALFzgn4;Z<7ii<;Qb^!y+AQwS4&g5CF#e=HV#gaHmtI zzQD6a$_5E5pDUEi!5OQZPN&U%GdVL;E|$~f(m+0ITGQE?!eA*=$e8L?UoqpFJhcq* z^tgU0_%R^QZ#b|2AFUy{c5wD`u9I62sE7TrZS8;me#&#>!lBFU;>#;1r!K2;|NhNw zsW<(pREs|DY|*-l_e^^3bI&)gJoLfPX=m#{q?Yg28f4I?pV(^z9nn#8Zx&DxHw+M$?rIu!M5^F=Bp?b-y~ zpQ(0iWo)`|7<1r-8*CSjv5O9`91I-0+Qk?H**Z2vVFi^j)H@NM^BHsDd3m4nKF|A} z^PZfOZ$363`(&}{>rcIBYafMVHeS2*THrZlRkD!r*0X#ATT# z{v&eO7uF5lf41ZlA8fFGE}dzx7s#p&rgLW<_7m>P7s;+Ra&CQCDu&@fNeZ+P-KyI) zQvCuxqYI}sM*=?VCblC_?7}QDinocIaFv+GGI2Xrh(owf+~eqZ;t&pDix`5JIN`(- z^>_k(V!=@s9AyE_i;Gx~9?_)!cSY7k*hLS%M`Oeh<&l@-?(0$oJ;}iI%+ZmO{YJ%_ znk>HwHR##6%44B|GN#qHp2$Eq>I~foW143VQz;QAiDlS0PS?Lk;7(=O&Rzay=Z9lI zfA&=nKd8grE|&{Z2Gkkvn3Pa|cnhO`f#&`8lx@w~{L7PUO(eAeX@P`8Hkp}X(M~3d zW~wipvI~WbRkTcV+%z+VtZmw9J7uMG5Xc&PO=M7{*+|lgFp)wZUpYmk qK+Et3i*%DV?qG&$mRXaYrl*)q({t2qrP?ZTTmMp9@IO&YHa`NO{?hsY diff --git a/Source/Private/ConvertTo-UnixEpoch.ps1 b/Source/Private/ConvertTo-UnixEpoch.ps1 index ef77117..8a98639 100644 --- a/Source/Private/ConvertTo-UnixEpoch.ps1 +++ b/Source/Private/ConvertTo-UnixEpoch.ps1 @@ -5,6 +5,8 @@ function ConvertTo-UnixEpoch { .DESCRIPTION Takes a PowerShell DateTime object and returns a Unix Epoch timestamp representing the same date/time. .OUTPUTS + [System.Int] + The Unix Epoch timestamp. #> [CmdletBinding()] diff --git a/Source/Private/Get-NinjaOneKeyVaultInformation.ps1 b/Source/Private/Get-NinjaOneKeyVaultInformation.ps1 new file mode 100644 index 0000000..93b9124 --- /dev/null +++ b/Source/Private/Get-NinjaOneKeyVaultInformation.ps1 @@ -0,0 +1,12 @@ +function Get-NinjaOneKeyVaultInformation { + <# + .SYNOPSIS + Retrieves NinjaOne connection and authentication information from the given Azure Key Vault. + .DESCRIPTION + Handles the reading of NinjaOne connection and authentication information to the given Azure Key Vault. This function is intended to be used internally by the module and should not be called directly. + .OUTPUTS + [System.Void] + + Returns nothing. + #> +} \ No newline at end of file diff --git a/Source/Private/Get-TokenExpiry.ps1 b/Source/Private/Get-TokenExpiry.ps1 index 0bf9233..8a840c7 100644 --- a/Source/Private/Get-TokenExpiry.ps1 +++ b/Source/Private/Get-TokenExpiry.ps1 @@ -5,6 +5,8 @@ function Get-TokenExpiry { .DESCRIPTION Takes the expires in time for an auth token and returns a PowerShell date/time object containing the expiry date/time of the token. .OUTPUTS + [System.DateTime] + A powershell date/time object representing the token expiry. #> [CmdletBinding()] diff --git a/Source/Private/Invoke-NinjaOnePreFlightCheck.ps1 b/Source/Private/Invoke-NinjaOnePreFlightCheck.ps1 index 9f41b2a..c1e8fba 100644 --- a/Source/Private/Invoke-NinjaOnePreFlightCheck.ps1 +++ b/Source/Private/Invoke-NinjaOnePreFlightCheck.ps1 @@ -1,5 +1,23 @@ using namespace System.Management.Automation function Invoke-NinjaOnePreFlightCheck { + <# + .SYNOPSIS + Conducts pre-flight checks for the NinjaOne API. + .DESCRIPTION + Conducts pre-flight checks ensuring that the NinjaOne API connection information is present and that the user is authenticated. + .EXAMPLE + PS> Invoke-NinjaOnePreFlightCheck + + Conducts pre-flight checks for the NinjaOne API. + .EXAMPLE + PS> Invoke-NinjaOnePreFlightCheck -SkipConnectionChecks + + Conducts pre-flight checks for the NinjaOne API, skipping the connection checks. + .OUTPUTS + [System.Void] + + Returns nothing if the checks pass. Otherwise, throws an error. + #> [CmdletBinding()] param( # Skip the connection checks. @@ -22,8 +40,4 @@ function Invoke-NinjaOnePreFlightCheck { } else { Write-Verbose 'Skipping connection checks.' } - if ($PSEdition -eq 'Desktop') { - - - } } \ No newline at end of file diff --git a/Source/Private/Set-NinjaOneKeyVaultInformation.ps1 b/Source/Private/Set-NinjaOneKeyVaultInformation.ps1 new file mode 100644 index 0000000..2137f3a --- /dev/null +++ b/Source/Private/Set-NinjaOneKeyVaultInformation.ps1 @@ -0,0 +1,96 @@ +function Set-NinjaOneKeyVaultInformation { + <# + .SYNOPSIS + Saves NinjaOne connection and authentication information to the given Azure Key Vault. + .DESCRIPTION + Handles the saving of NinjaOne connection and authentication information to the given Azure Key Vault. This function is intended to be used internally by the module and should not be called directly. + .OUTPUTS + [System.Void] + + Returns nothing. + #> + [CmdletBinding()] + [OutputType([System.Void])] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Private function - no need to support.')] + # Suppress the PSSA warning about using ConvertTo-SecureString with -AsPlainText. There's no viable alternative. + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingConvertToSecureStringWithPlainText', '', Justification = 'No viable alternative.')] + param( + # The authentication mode to use. + [String]$AuthMode, + # The URL of the NinjaRMM instance. + [URI]$URL, + # The NinjaRMM instance name. + [String]$Instance, + # The client ID of the application. + [String]$ClientId, + # The client secret of the application. + [String]$ClientSecret, + # The port to listen on for the authentication callback. + [Int]$AuthListenerPort, + # The authentication scopes to request. + [String]$AuthScopes, + # The redirect URI to use for the authentication callback. + [URI]$RedirectURI, + # Use the Key Vault to store the connection information. + [Parameter(Mandatory)] + [Switch]$UseKeyVault, + # The name of the Key Vault to use. + [String]$VaultName, + # Whether to write updated connection information to Key Vault. + [Switch]$WriteToKeyVault, + # The type of the authentication token. + [String]$Type, + # The access token to use for authentication. + [String]$Access, + # The refresh token to use for authentication. + [String]$Refresh, + # The expiration time of the access token. + [DateTime]$Expires + ) + # Check if the Key Vault exists. + $KeyVault = Get-AzKeyVault -VaultName $VaultName -ErrorAction SilentlyContinue + if ($null -eq $KeyVault) { + Write-Error ('Key Vault {0} does not exist.' -f $VaultName) + exit 1 + } + # Make sure we've been told to write to Key Vault. + if ($false -eq $WriteToKeyVault) { + Write-Error 'WriteToKeyVault must be specified.' + exit 1 + } + # Write the connection information to Key Vault. + $Secrets = @{ + 'NinjaOneAuthMode' = $AuthMode + 'NinjaOneURL' = $URL + 'NinjaOneInstance' = $Instance + 'NinjaOneClientId' = $ClientId + 'NinjaOneClientSecret' = $ClientSecret + 'NinjaOneAuthListenerPort' = $AuthListenerPort + 'NinjaOneAuthScopes' = $AuthScopes + 'NinjaOneRedirectURI' = $RedirectURI + 'NinjaOneType' = $Type + 'NinjaOneAccess' = $Access + 'NinjaOneRefresh' = $Refresh + 'NinjaOneExpires' = $Expires + 'NinjaOneWriteToKeyVault' = $WriteToKeyVault.ToString() + 'NinjaOneUseKeyVault' = $UseKeyVault.ToString() + 'NinjaOneVaultName' = $VaultName + } + foreach ($Secret in $Secrets.GetEnumerator()) { + Write-Verbose ('Processing secret {0} for KeyVault storage.' -f $Secret.Key) + Write-Debug ('Secret {0} has type {1}.' -f $Secret.Key, $Secret.Value.GetType().Name) + Write-Debug ('Secret {0} has value {1}.' -f $Secret.Key, $Secret.Value.ToString()) + $SecretName = $Secret.Key + $SecretValue = $Secret.Value + if ([String]::IsNullOrEmpty($SecretValue) -or ($null -eq $SecretValue)) { + Write-Verbose ('Secret {0} is null. Skipping.' -f $SecretName) + continue + } + $SecretTags = @{ + 'Source' = 'NinjaOne' + } + $SecretValue = ConvertTo-SecureString -AsPlainText -Force -String $SecretValue + Set-AzKeyVaultSecret -VaultName $VaultName -Name $SecretName -SecretValue $SecretValue -Tag $SecretTags -ErrorAction Stop -Verbose:$false -Debug:$false + Write-Verbose ('Secret {0} written to KeyVault.' -f $SecretName) + } +} \ No newline at end of file diff --git a/Source/Private/Update-NinjaOneToken.ps1 b/Source/Private/Update-NinjaOneToken.ps1 index 57eafed..1f25dec 100644 --- a/Source/Private/Update-NinjaOneToken.ps1 +++ b/Source/Private/Update-NinjaOneToken.ps1 @@ -11,17 +11,25 @@ function Update-NinjaOneToken { ClientId = $Script:NRAPIConnectionInformation.ClientId ClientSecret = $Script:NRAPIConnectionInformation.ClientSecret UseClientAuth = $True - ShowTokens = $False + ShowTokens = $Script:NRAPIConnectionInformation.ShowTokens + UseKeyVault = $Script:NRAPIConnectionInformation.UseKeyVault + VaultName = $Script:NRAPIConnectionInformation.VaultName + WriteToKeyVault = $Script:NRAPIConnectionInformation.WriteToKeyVault } - } else { + } elseif ($null -ne $Script:NRAPIAuthenticationInformation.Refresh) { $ReauthParams = @{ Instance = $Script:NRAPIConnectionInformation.Instance ClientId = $Script:NRAPIConnectionInformation.ClientId ClientSecret = $Script:NRAPIConnectionInformation.ClientSecret RefreshToken = $Script:NRAPIAuthenticationInformation.Refresh UseTokenAuth = $True - ShowTokens = $False + ShowTokens = $Script:NRAPIConnectionInformation.ShowTokens + UseKeyVault = $Script:NRAPIConnectionInformation.UseKeyVault + VaultName = $Script:NRAPIConnectionInformation.VaultName + WriteToKeyVault = $Script:NRAPIConnectionInformation.WriteToKeyVault } + } else { + throw 'Unable to refresh authentication token information. Not using client credentials and/or refresh token is missing.' } Connect-NinjaOne @ReauthParams Write-Verbose 'Refreshed authentication token information from NinjaOne.' diff --git a/Source/Public/Connect-NinjaOne.ps1 b/Source/Public/Connect-NinjaOne.ps1 index 1c04101..2ea7ef0 100644 --- a/Source/Public/Connect-NinjaOne.ps1 +++ b/Source/Public/Connect-NinjaOne.ps1 @@ -26,33 +26,40 @@ function Connect-NinjaOne { Param ( # Use the "Authorisation Code" flow with your web browser. [Parameter( Mandatory, ParameterSetName = 'Authorisation Code')] + [Parameter( ParameterSetName = 'Key Vault Write' )] [Switch]$UseWebAuth, # Use the "Token Authentication" flow - useful if you already have a refresh token. [Parameter( Mandatory, ParameterSetName = 'Token Authentication' )] + [Parameter( ParameterSetName = 'Key Vault Write' )] [switch]$UseTokenAuth, # Use the "Client Credentials" flow - useful if you already have a client ID and secret. [Parameter( Mandatory, ParameterSetName = 'Client Credentials' )] + [Parameter( ParameterSetName = 'Key Vault Write' )] [switch]$UseClientAuth, # The NinjaOne instance to connect to. Choose from 'eu', 'oc' or 'us'. [Parameter( Mandatory, ParameterSetName = 'Authorisation Code' )] [Parameter( Mandatory, ParameterSetName = 'Token Authentication' )] [Parameter( Mandatory, ParameterSetName = 'Client Credentials' )] + [Parameter( Mandatory, ParameterSetName = 'Key Vault Write' )] [ValidateSet('eu', 'oc', 'us', 'ca', 'us2')] [string]$Instance, # The Client Id for the application configured in NinjaOne. [Parameter( Mandatory, ParameterSetName = 'Authorisation Code' )] [Parameter( Mandatory, ParameterSetName = 'Token Authentication' )] [Parameter( Mandatory, ParameterSetName = 'Client Credentials' )] + [Parameter( Mandatory, ParameterSetName = 'Key Vault Write' )] [String]$ClientId, # The Client Secret for the application configured in NinjaOne. [Parameter( Mandatory, ParameterSetName = 'Authorisation Code' )] [Parameter( Mandatory, ParameterSetName = 'Token Authentication' )] [Parameter( Mandatory, ParameterSetName = 'Client Credentials' )] + [Parameter( Mandatory, ParameterSetName = 'Key Vault Write' )] [String]$ClientSecret, # The API scopes to request, if this isn't passed the scope is assumed to be "all". Pass a string or array of strings. Limited by the scopes granted to the application in NinjaOne. [Parameter( ParameterSetName = 'Authorisation Code' )] [Parameter( ParameterSetName = 'Token Authentication' )] [Parameter( ParameterSetName = 'Client Credentials' )] + [Parameter( ParameterSetName = 'Key Vault Write' )] [ValidateSet('monitoring', 'management', 'control', 'offline_access')] [String[]]$Scopes, # The redirect URI to use. If not set defaults to 'http://localhost'. Should be a full URI e.g. https://redirect.example.uk:9090/auth @@ -63,26 +70,74 @@ function Connect-NinjaOne { [Int]$Port = 9090, # The refresh token to use for "Token Authentication" flow. [Parameter( ParameterSetName = 'Token Authentication' )] + [Parameter( ParameterSetName = 'Key Vault Write' )] [String]$RefreshToken, # Output the tokens - useful when using "Authorisation Code" flow - to use with "Token Authentication" flow. [Parameter( ParameterSetName = 'Authorisation Code' )] [Parameter( ParameterSetName = 'Token Authentication' )] [Parameter( ParameterSetName = 'Client Credentials' )] - [Switch]$ShowTokens + [Switch]$ShowTokens, + # Use Azure Key Vault to retrieve credentials and store tokens. + [Parameter( ParameterSetName = 'Authorisation Code' )] + [Parameter( ParameterSetName = 'Token Authentication' )] + [Parameter( ParameterSetName = 'Client Credentials' )] + [Parameter( Mandatory, ParameterSetName = 'Key Vault Write' )] + [Parameter( Mandatory, ParameterSetName = 'Key Vault Read' )] + [Switch]$UseKeyVault, + # The name of the Azure Key Vault to use. + [Parameter( ParameterSetName = 'Authorisation Code' )] + [Parameter( ParameterSetName = 'Token Authentication' )] + [Parameter( ParameterSetName = 'Client Credentials' )] + [Parameter( Mandatory, ParameterSetName = 'Key Vault Write' )] + [Parameter( Mandatory, ParameterSetName = 'Key Vault Read' )] + [String]$VaultName, + # Write updated credentials to Azure Key Vault. + [Parameter( ParameterSetName = 'Authorisation Code' )] + [Parameter( ParameterSetName = 'Token Authentication' )] + [Parameter( ParameterSetName = 'Client Credentials' )] + [Parameter( Mandatory, ParameterSetName = 'Key Vault Write' )] + [Parameter( ParameterSetName = 'Key Vault Read')] + [Switch]$WriteToKeyVault, + # Read the authentication information from Azure Key Vault. + [Parameter( ParameterSetName = 'Key Vault Read' )] + [Switch]$ReadFromKeyVault ) process { # Run the pre-flight check. Invoke-NinjaOnePreFlightCheck -SkipConnectionChecks + # Test for Azure Key Vault module. + if ($UseKeyVault) { + if (-not (Get-Module -Name 'Az.KeyVault' -ListAvailable)) { + Write-Error 'Azure Key Vault module not installed, please install the module and try again.' + exit 1 + } + # Test that we have an Azure context. + if (-not (Get-AzContext -Verbose:$false -Debug:$false)) { + Write-Error 'No Azure context found, please run Connect-AzAccount and try again.' + exit 1 + } else { + if ((Get-AzContext -Verbose:$false -Debug:$false).Account.Type -eq 'User') { + Write-Information 'Connected to Azure as a user, using Azure Key Vault to store credentials.' + } elseif ((Get-AzContext -Verbose:$false -Debug:$false).Account.Type -eq 'ManagedService') { + Write-Information 'Connected to Azure as a managed service, using Azure Key Vault to store credentials.' + } + } + if ($ReadFromKeyVault) { + Get-NinjaOneKeyVaultInformation -VaultName $VaultName + } + } # Set the default scopes if they're not passed. - if ($PSCmdlet.ParameterSetName -eq 'Client Credentials' -and $null -eq $Scopes) { + if ($UseClientAuth -and $null -eq $Scopes) { $Scopes = @('monitoring', 'management', 'control') - } elseif (($PSCmdlet.ParameterSetName -eq 'Authorisation Code' -or $PSCmdlet.ParameterSetName -eq 'Token Authentication') -and $null -eq $Scopes) { + } elseif (($UseWebAuth -or $UseTokenAuth) -and $null -eq $Scopes) { $Scopes = @('monitoring', 'management', 'control', 'offline_access') } # Convert scopes to space separated string if it's an array. if ($Scopes -is [System.Array]) { + Write-Verbose ('Scopes are an array, converting to space separated string.') $AuthScopes = $Scopes -Join ' ' } else { + Write-Verbose ('Scopes are a string, using as is.') $AuthScopes = $Scopes } # Get the NinjaOne instance URL. @@ -98,22 +153,46 @@ function Connect-NinjaOne { } else { $RedirectURI = New-Object System.UriBuilder -ArgumentList 'http', 'localhost', $Port } + # Determine the authentication mode. + if ($UseWebAuth -and $Scopes -notcontains 'offline_access') { + $AuthMode = 'Authorisation Code' + } elseif ($UseTokenAuth -or ($UseWebAuth -and $Scopes -contains 'offline_access')) { + $AuthMode = 'Token Authentication' + } elseif ($UseClientAuth) { + $AuthMode = 'Client Credentials' + } # Build a script-scoped variable to hold the connection information. - $ConnectionInformation = @{ - AuthMode = $PSCmdlet.ParameterSetName - URL = $URL - Instance = $Instance - ClientId = $ClientId - ClientSecret = $ClientSecret - AuthListenerPort = $Port - AuthScopes = $AuthScopes - RedirectURI = $RedirectURI + if ($null -eq $Script:NRAPIConnectionInformation) { + $ConnectionInformation = @{ + AuthMode = $AuthMode + URL = $URL + Instance = $Instance + ClientId = $ClientId + ClientSecret = $ClientSecret + AuthListenerPort = $Port + AuthScopes = $AuthScopes + RedirectURI = $RedirectURI + UseKeyVault = $UseKeyVault + VaultName = $VaultName + WriteToKeyVault = $WriteToKeyVault + } + Set-Variable -Name 'NRAPIConnectionInformation' -Value $ConnectionInformation -Visibility Private -Scope Script -Force } - Set-Variable -Name 'NRAPIConnectionInformation' -Value $ConnectionInformation -Visibility Private -Scope Script -Force Write-Verbose "Connection information set to: $($Script:NRAPIConnectionInformation | Format-List | Out-String)" - $AuthenticationInformation = [HashTable]@{} - # Set a script-scoped variable to hold authentication information. - Set-Variable -Name 'NRAPIAuthenticationInformation' -Value $AuthenticationInformation -Visibility Private -Scope Script -Force + if ($null -eq $Script:NRAPIAuthenticationInformation) { + $AuthenticationInformation = [HashTable]@{} + # Set a script-scoped variable to hold authentication information. + Set-Variable -Name 'NRAPIAuthenticationInformation' -Value $AuthenticationInformation -Visibility Private -Scope Script -Force + } + if ($Script.NRAPIConnectionInformation.AuthMode -eq 'Token Authentication' -and $null -eq $UseTokenAuth) { + $UseTokenAuth = $true + } + if ($Script.NRAPIConnectionInformation.AuthMode -eq 'Client Credentials' -and $null -eq $UseClientAuth) { + $UseClientAuth = $true + } + if ($Script.NRAPIConnectionInformation.AuthMode -eq 'Authorisation Code' -and $null -eq $UseWebAuth) { + $UseWebAuth = $true + } if ($UseWebAuth) { # NinjaOne authorisation request query params. $AuthRequestParams = @{ @@ -121,7 +200,7 @@ function Connect-NinjaOne { client_id = $Script:NRAPIConnectionInformation.ClientId client_secret = $Script:NRAPIConnectionInformation.ClientSecret redirect_uri = $Script:NRAPIConnectionInformation.RedirectURI.ToString() - state = $GUId + state = $GUID } if ($Script:NRAPIConnectionInformation.AuthScopes) { $AuthRequestParams.scope = $Script:NRAPIConnectionInformation.AuthScopes @@ -211,6 +290,28 @@ function Connect-NinjaOne { Write-Output $($Script:NRAPIAuthenticationInformation | Format-Table -AutoSize) Write-Output ' SAVE THESE IN A SECURE LOCATION ' } + # If we're using Azure Key Vault, store the authentication information we need. + if ($Script:NRAPIConnectionInformation.UseKeyVault -and $Script:NRAPIConnectionInformation.WriteToKeyVault) { + $KeyVaultParams = @{ + AuthMode = $Script:NRAPIConnectionInformation.AuthMode + URL = $Script:NRAPIConnectionInformation.URL + Instance = $Script:NRAPIConnectionInformation.Instance + ClientId = $Script:NRAPIConnectionInformation.ClientId + ClientSecret = $Script:NRAPIConnectionInformation.ClientSecret + AuthListenerPort = $Script:NRAPIConnectionInformation.AuthListenerPort + AuthScopes = $Script:NRAPIConnectionInformation.AuthScopes + RedirectURI = $Script:NRAPIConnectionInformation.RedirectURI.ToString() + UseKeyVault = $Script:NRAPIConnectionInformation.UseKeyVault + VaultName = $Script:NRAPIConnectionInformation.VaultName + WriteToKeyVault = $Script:NRAPIConnectionInformation.WriteToKeyVault + Type = $Script:NRAPIAuthenticationInformation.Type + Access = $Script:NRAPIAuthenticationInformation.Access + Expires = $Script:NRAPIAuthenticationInformation.Expires + Refresh = $Script:NRAPIAuthenticationInformation.Refresh + } + Write-Verbose 'Using Azure Key Vault to store credentials.' + $ConnectionInformation = Set-NinjaOneKeyVaultInformation @KeyVaultParams + } } catch { throw } diff --git a/Source/Public/Find/Find-NinjaOneDevices.ps1 b/Source/Public/Find/Find-NinjaOneDevices.ps1 index 418a698..34257d7 100644 --- a/Source/Public/Find/Find-NinjaOneDevices.ps1 +++ b/Source/Public/Find/Find-NinjaOneDevices.ps1 @@ -43,7 +43,7 @@ function Find-NinjaOneDevices { } process { try { - Write-Verbose ('Searching for upto {0} devices matching {1}.') -f $limit, $searchQuery + Write-Verbose ('Searching for upto {0} devices matching {1}.' -f $limit, $searchQuery) $QSCollection = New-NinjaOneQuery -CommandName $CommandName -Parameters $Parameters $Resource = 'v2/devices/search' $RequestParams = @{ diff --git a/Source/Public/Get/Backup/Get-NinjaOneBackupJobs.ps1 b/Source/Public/Get/Backup/Get-NinjaOneBackupJobs.ps1 index 456b7cf..e9f65c0 100644 --- a/Source/Public/Get/Backup/Get-NinjaOneBackupJobs.ps1 +++ b/Source/Public/Get/Backup/Get-NinjaOneBackupJobs.ps1 @@ -11,6 +11,58 @@ function Get-NinjaOneBackupJobs { PS> Get-NinjaOneBackupJobs Gets all backup jobs. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -status 'RUNNING' + + Gets all backup jobs with a status of 'RUNNING'. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -status 'RUNNING', 'COMPLETED' + + Gets all backup jobs with a status of 'RUNNING' or 'COMPLETED'. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -statusFilter 'status = RUNNING' + + Gets all backup jobs with a status of 'RUNNING'. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -statusFilter 'status in (RUNNING, COMPLETED)' + + Gets all backup jobs with a status of 'RUNNING' or 'COMPLETED'. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -planType 'IMAGE' + + Gets all backup jobs with a plan type of 'IMAGE'. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -planType 'IMAGE', 'FILE_FOLDER' + + Gets all backup jobs with a plan type of 'IMAGE' or 'FILE_FOLDER'. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -planTypeFilter 'planType = IMAGE' + + Gets all backup jobs with a plan type of 'IMAGE'. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -planTypeFilter 'planType in (IMAGE, FILE_FOLDER)' + + Gets all backup jobs with a plan type of 'IMAGE' or 'FILE_FOLDER'. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -startTimeBetween (Get-Date).AddDays(-1), (Get-Date) + + Gets all backup jobs with a start time between 24 hours ago and now. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -startTimeAfter (Get-Date).AddDays(-1) + + Gets all backup jobs with a start time after 24 hours ago. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -startTimeFilter 'startTime between(2024-01-01T00:00:00.000Z,2024-01-02T00:00:00.000Z)' + + Gets all backup jobs with a start time between 2024-01-01T00:00:00.000Z and 2024-01-02T00:00:00.000Z. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -startTimeFilter 'startTime after 2024-01-01T00:00:00.000Z' + + Gets all backup jobs with a start time after 2024-01-01T00:00:00.000Z. + .EXAMPLE + PS> Get-NinjaOneBackupJobs -deviceFilter all + + Gets all backup jobs for the all devices. Includes active and deleted devices. .OUTPUTS A powershell object containing the response. .LINK @@ -102,30 +154,7 @@ function Get-NinjaOneBackupJobs { } process { try { - Write-Verbose 'Getting organisation from NinjaOne API.' - $Organisation = Get-NinjaOneOrganisations -organisationId $organisationId - if ($Organisation) { - Write-Verbose 'Getting location from NinjaOne API.' - if ($locationId) { - $Location = Get-NinjaOneLocations -organisationId $organisationId | Where-Object -Property id -EQ -Value $locationId - if ($Location) { - Write-Verbose ('Getting backup usage for location {0} in organisation {1}.' -f $location.name, $organisation.name) - $Resource = ('v2/organization/{0}/locations/{1}/backup/usage' -f $organisationId, $locationId) - } else { - throw ('Location with id {0} not found in organisation {1}' -f $locationId, $Organisation.Name) - } - } else { - $Locations = Get-NinjaOneLocations -organisationId $organisationId - if ($Organisation -and $Locations) { - Write-Verbose ('Getting backup usage for all locations in organisation {0}.' -f $organisation.name) - $Resource = ('v2/organization/{0}/locations/backup/usage' -f $organisationId) - } else { - throw ('Organisation {0} does not have any locations.' -f $Organisation.Name) - } - } - } else { - throw ('Organisation with id {0} not found.' -f $organisationId) - } + $Resource = '/v2/backup/jobs' $RequestParams = @{ Resource = $Resource QSCollection = $QSCollection diff --git a/Source/Public/Get/Ticketing/Get-NinjaOneContacts.ps1 b/Source/Public/Get/Ticketing/Get-NinjaOneContacts.ps1 index e18e2ae..2030ba0 100644 --- a/Source/Public/Get/Ticketing/Get-NinjaOneContacts.ps1 +++ b/Source/Public/Get/Ticketing/Get-NinjaOneContacts.ps1 @@ -25,10 +25,6 @@ function Get-NinjaOneContacts { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', Justification = 'Uses dynamic parameter parsing.')] Param() begin { - if ($Script:NRAPIConnectionInformation.AuthMode -eq 'Client Credentials') { - throw ('This function is not available when using client_credentials authentication. If this is unexpected please report this to api@ninjarmm.com.') - exit 1 - } $CommandName = $MyInvocation.InvocationName $Parameters = (Get-Command -Name $CommandName).Parameters $QSCollection = New-NinjaOneQuery -CommandName $CommandName -Parameters $Parameters diff --git a/Source/Public/Get/Ticketing/Get-NinjaOneTicketBoards.ps1 b/Source/Public/Get/Ticketing/Get-NinjaOneTicketBoards.ps1 index fc91a6d..8a9b71f 100644 --- a/Source/Public/Get/Ticketing/Get-NinjaOneTicketBoards.ps1 +++ b/Source/Public/Get/Ticketing/Get-NinjaOneTicketBoards.ps1 @@ -25,10 +25,6 @@ function Get-NinjaOneTicketBoards { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', Justification = 'Uses dynamic parameter parsing.')] Param() begin { - if ($Script:NRAPIConnectionInformation.AuthMode -eq 'Client Credentials') { - throw ('This function is not available when using client_credentials authentication. If this is unexpected please report this to api@ninjarmm.com.') - exit 1 - } $CommandName = $MyInvocation.InvocationName $Parameters = (Get-Command -Name $CommandName).Parameters $QSCollection = New-NinjaOneQuery -CommandName $CommandName -Parameters $Parameters diff --git a/Source/Public/Get/Ticketing/Get-NinjaOneTicketForms.ps1 b/Source/Public/Get/Ticketing/Get-NinjaOneTicketForms.ps1 index 3f7ad16..48218b0 100644 --- a/Source/Public/Get/Ticketing/Get-NinjaOneTicketForms.ps1 +++ b/Source/Public/Get/Ticketing/Get-NinjaOneTicketForms.ps1 @@ -36,10 +36,6 @@ function Get-NinjaOneTicketForms { [Int]$ticketFormId ) begin { - if ($Script:NRAPIConnectionInformation.AuthMode -eq 'Client Credentials') { - throw ('This function is not available when using client_credentials authentication. If this is unexpected please report this to api@ninjarmm.com.') - exit 1 - } $CommandName = $MyInvocation.InvocationName $Parameters = (Get-Command -Name $CommandName).Parameters $QSCollection = New-NinjaOneQuery -CommandName $CommandName -Parameters $Parameters diff --git a/Source/Public/Get/Ticketing/Get-NinjaOneTicketLogEntries.ps1 b/Source/Public/Get/Ticketing/Get-NinjaOneTicketLogEntries.ps1 index d3f9e40..f9d4238 100644 --- a/Source/Public/Get/Ticketing/Get-NinjaOneTicketLogEntries.ps1 +++ b/Source/Public/Get/Ticketing/Get-NinjaOneTicketLogEntries.ps1 @@ -37,10 +37,6 @@ function Get-NinjaOneTicketLogEntries { [String]$type ) begin { - if ($Script:NRAPIConnectionInformation.AuthMode -eq 'Client Credentials') { - throw ('This function is not available when using client_credentials authentication. If this is unexpected please report this to api@ninjarmm.com.') - exit 1 - } $CommandName = $MyInvocation.InvocationName $Parameters = (Get-Command -Name $CommandName).Parameters # Workaround to prevent the query string processor from adding an 'ticketid=' parameter by removing it from the set parameters. diff --git a/Source/Public/Get/Ticketing/Get-NinjaOneTickets.ps1 b/Source/Public/Get/Ticketing/Get-NinjaOneTickets.ps1 index fed4730..cdcad6a 100644 --- a/Source/Public/Get/Ticketing/Get-NinjaOneTickets.ps1 +++ b/Source/Public/Get/Ticketing/Get-NinjaOneTickets.ps1 @@ -55,13 +55,12 @@ function Get-NinjaOneTickets { [Int]$pageSize, # The search criteria to apply to the request. [Parameter(ParameterSetName = 'Board', Position = 5)] - [String]$searchCriteria + [String]$searchCriteria, + # Include the metadata in the response. + [Parameter(ParameterSetName = 'Board', Position = 6)] + [Switch]$includeMetadata ) begin { - if ($Script:NRAPIConnectionInformation.AuthMode -eq 'Client Credentials') { - throw ('This function is not available when using client_credentials authentication. If this is unexpected please report this to api@ninjarmm.com.') - exit 1 - } } process { try { @@ -70,7 +69,7 @@ function Get-NinjaOneTickets { $Resource = ('v2/ticketing/ticket/{0}' -f $ticketId) $Method = 'GET' } else { - Write-Verbouse ('Getting tickets for board with id {0}.' -f $boardId) + Write-Verbose ('Getting tickets for board with id {0}.' -f $boardId) $Resource = ('v2/ticketing/trigger/board/{0}/run' -f $boardId) $Method = 'POST' } @@ -80,7 +79,7 @@ function Get-NinjaOneTickets { if ($QSCollection) { $RequestParams.QSCollection = $QSCollection } - if ($sort -or $filters -or $lastCursorId -or $searchCriteria) { + if ($PSCmdlet.ParameterSetName -eq 'Board') { $RequestParams.Body = [hashtable]@{} } if ($sort) { @@ -101,10 +100,12 @@ function Get-NinjaOneTickets { $Tickets = New-NinjaOnePOSTRequest @RequestParams } if ($Tickets) { - if ($includeMetadata) { + if ($includeMetadata -or $PSCmdlet.ParameterSetName -ne 'Board') { + Write-Verbose 'Returning full response.' return $Tickets } else { # Return just the `data` property which lists the tickets. + Write-Verbose 'Returning just the ticket data.' return $Tickets.data } } else { diff --git a/build.ps1 b/build.ps1 index a697831..81f8ba7 100644 --- a/build.ps1 +++ b/build.ps1 @@ -224,7 +224,7 @@ This page has been generated from the {0} PowerShell module source. To make chan } # Task: Build the PowerShell Module function Build { - Build-Module -Path (Resolve-Path -Path ('{0}\*\build.psd1' -f $PSScriptRoot)) -Semver $SemVer.ToString() + Build-Module -Path '.\Source' -SemVer $SemVer.ToString() } # Task: Copy PowerShell Module files to output folder for release on PSGallery function CopyModuleFiles { diff --git a/test.ps1 b/test.ps1 index 1866e8c..471f581 100644 --- a/test.ps1 +++ b/test.ps1 @@ -6,7 +6,7 @@ param( [switch]$IncludeVSCodeMarker ) Push-Location $PSScriptRoot -$ModuleName = Get-ChildItem -Path '.\Source' -Filter '*.psd1' | Select-Object -ExpandProperty BaseName +$ModuleName = Get-ChildItem -Path '.\Source\*' -Filter '*.psd1' -Exclude 'build.psd1' | Select-Object -ExpandProperty BaseName # Disable default parameters during testing, just in case $PSDefaultParameterValues += @{} $PSDefaultParameterValues['Disabled'] = $true