diff --git a/CloudAPIPowerShellManagement.psd1 b/CloudAPIPowerShellManagement.psd1 index 304906f..4e5607f 100644 --- a/CloudAPIPowerShellManagement.psd1 +++ b/CloudAPIPowerShellManagement.psd1 @@ -12,7 +12,7 @@ RootModule = 'CloudAPIPowerShellManagement.psm1' # Version number of this module. -ModuleVersion = '3.7.3' +ModuleVersion = '3.7.4' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/Documentation/ObjectInfo/#AppConfigOutlookDevice.json b/Documentation/ObjectInfo/#AppConfigOutlookDevice.json index 7c445f4..af6a61a 100644 --- a/Documentation/ObjectInfo/#AppConfigOutlookDevice.json +++ b/Documentation/ObjectInfo/#AppConfigOutlookDevice.json @@ -11,7 +11,7 @@ "entityKey": "configureEmail", "dataType": 0, "booleanActions": 109, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "Inputs.authenticationType", @@ -19,7 +19,7 @@ "entityKey": "com.microsoft.outlook.EmailProfile.AccountType", "dataType": 16, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "options": [ { "nameResourceKey": "Inputs.basicAuth", @@ -37,7 +37,7 @@ "entityKey": "com.microsoft.outlook.EmailProfile.EmailUPN", "dataType": 16, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "options": [ { "nameResourceKey": "userPrincipalNameOption", @@ -58,7 +58,7 @@ "entityKey": "com.microsoft.outlook.EmailProfile.AccountDomain", "dataType": 20, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "Condition": { "Expressions": [ { @@ -74,7 +74,7 @@ "entityKey": "com.microsoft.outlook.EmailProfile.EmailAddress", "dataType": 16, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "options": [ { "nameResourceKey": "userPrincipalNameOption", @@ -92,7 +92,7 @@ "entityKey": "com.microsoft.outlook.EmailProfile.ServerHostName", "dataType": 20, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "Condition": { "Expressions": [ { @@ -108,7 +108,7 @@ "entityKey": "com.microsoft.outlook.EmailProfile.EmailAccountName", "dataType": 20, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "Condition": { "Expressions": [ { @@ -124,7 +124,7 @@ "entityKey": "IntuneMAMAllowedAccountsOnly", "dataType": 16, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "Condition": { "Expressions": [ { @@ -158,7 +158,7 @@ "entityKey": "com.microsoft.outlook.Mail.FocusedInbox", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.allowBiometricsTitle", @@ -166,7 +166,7 @@ "entityKey": "com.microsoft.outlook.Auth.Biometric", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.allowUserChangeTitle", @@ -176,7 +176,7 @@ "booleanActions": 109, "unconfiguredValue": true, "allowMissing": true, - "category": 103, + "category": "TableHeaders.settings", "Condition": { "Expressions": [ { @@ -192,7 +192,7 @@ "entityKey": "com.microsoft.outlook.Contacts.LocalSyncEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.allowUserChangeTitle", @@ -202,7 +202,7 @@ "booleanActions": 109, "unconfiguredValue": true, "allowMissing": true, - "category": 103, + "category": "TableHeaders.settings", "Condition": { "Expressions": [ { @@ -218,7 +218,7 @@ "entityKey": "com.microsoft.outlook.Mail.officeFeedEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.allowSmartReplyTitle", @@ -226,7 +226,7 @@ "entityKey": "com.microsoft.outlook.Mail.SuggestedRepliesEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.allowUserChangeTitle", @@ -234,7 +234,7 @@ "entityKey": "com.microsoft.outlook.Mail.SuggestedRepliesEnabled.UserChangeAllowed", "dataType": 0, "booleanActions": 109, - "category": 103, + "category": "TableHeaders.settings", "unconfiguredValue": true, "allowMissing": true, "Condition": { @@ -252,7 +252,7 @@ "entityKey": "com.microsoft.outlook.Mail.ExternalRecipientsToolTipEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.allowDefaultAppSignatureTitle", @@ -260,7 +260,7 @@ "entityKey": "com.microsoft.outlook.Mail.DefaultSignatureEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.blockExternalImagesTitle", @@ -268,7 +268,7 @@ "entityKey": "com.microsoft.outlook.Mail.BlockExternalImagesEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.allowUserChangeTitle", @@ -278,7 +278,7 @@ "booleanActions": 109, "unconfiguredValue": true, "allowMissing": true, - "category": 103, + "category": "TableHeaders.settings", "Condition": { "Expressions": [ { @@ -294,7 +294,7 @@ "entityKey": "com.microsoft.outlook.Mail.OrganizeByThreadEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.playMyEmailsTitle", @@ -302,7 +302,7 @@ "entityKey": "com.microsoft.outlook.Mail.PlayMyEmailsEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.themesEnabledTitle", @@ -310,7 +310,7 @@ "entityKey": "com.microsoft.outlook.Settings.ThemesEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.textPredictionsTitle", @@ -318,7 +318,7 @@ "entityKey": "com.microsoft.outlook.Mail.TextPredictionsEnabled", "dataType": 0, "booleanActions": 120, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "OutlookAppConfig.allowUserChangeTitle", @@ -328,7 +328,7 @@ "booleanActions": 109, "unconfiguredValue": true, "allowMissing": true, - "category": 103, + "category": "TableHeaders.settings", "Condition": { "Expressions": [ { diff --git a/Documentation/ObjectInfo/#AutoPilot.json b/Documentation/ObjectInfo/#AutoPilot.json index 8994210..15a41e4 100644 --- a/Documentation/ObjectInfo/#AutoPilot.json +++ b/Documentation/ObjectInfo/#AutoPilot.json @@ -189,7 +189,7 @@ "nameResourceKey": "Autopilot.OOBE.ApplyComputerNameTemplate.label", "descriptionResourceKey": "Autopilot.OOBE.ApplyComputerNameTemplate.infoBalloon", "entityKey": "applyDeviceNameTemplate", - "dataType": 103, + "dataType": "TableHeaders.settings", "booleanActions": 109, "category": "Autopilot.OOBE.title", "ChildSettings": [ diff --git a/Documentation/ObjectInfo/#microsoft.graph.iosUpdateConfiguration.json b/Documentation/ObjectInfo/#microsoft.graph.iosUpdateConfiguration.json index 667c2fd..b981e13 100644 --- a/Documentation/ObjectInfo/#microsoft.graph.iosUpdateConfiguration.json +++ b/Documentation/ObjectInfo/#microsoft.graph.iosUpdateConfiguration.json @@ -5,7 +5,7 @@ "entityKey": "versionInfo", "dataType": 20, "booleanActions": 0, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "SoftwareUpdates.IosUpdatePolicy.Settings.Schedule.label", @@ -13,7 +13,7 @@ "entityKey": "updateScheduleType", "dataType": 16, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "options": [ { "nameResourceKey": "SoftwareUpdates.IosUpdatePolicy.Settings.Schedule.outsideActiveHours", @@ -39,7 +39,7 @@ }, { "dataType": 16, - "category": 103, + "category": "TableHeaders.settings", "nameResourceKey": "timeZoneName", "descriptionResourceKey": "timeZoneDescription", "childSettings": [ @@ -249,6 +249,6 @@ "entityKey": "timeWidows", "dataType": 20, "booleanActions": 0, - "category": 103 + "category": "TableHeaders.settings" } ] \ No newline at end of file diff --git a/Documentation/ObjectInfo/#microsoft.graph.windows10EnrollmentCompletionPageConfiguration.json b/Documentation/ObjectInfo/#microsoft.graph.windows10EnrollmentCompletionPageConfiguration.json index 4d4e3d6..2df130b 100644 --- a/Documentation/ObjectInfo/#microsoft.graph.windows10EnrollmentCompletionPageConfiguration.json +++ b/Documentation/ObjectInfo/#microsoft.graph.windows10EnrollmentCompletionPageConfiguration.json @@ -13,7 +13,7 @@ "entityKey": "showInstallationProgress", "dataType": 0, "booleanActions": 109, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "EnrollmentStatusScreen.timeout", @@ -21,7 +21,7 @@ "entityKey": "installProgressTimeoutInMinutes", "dataType": 14, "booleanActions": 0, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "EnrollmentStatusScreen.customMessageToggle", @@ -29,7 +29,7 @@ "entityKey": "showCustomErrorMessage", "dataType": 0, "booleanActions": 109, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "EnrollmentStatusScreen.customMessageTextBox", @@ -37,7 +37,7 @@ "entityKey": "customErrorMessage", "dataType": 20, "booleanActions": 0, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "EnrollmentStatusScreen.collectLogToggle", @@ -45,7 +45,7 @@ "entityKey": "allowLogCollectionOnInstallFailure", "dataType": 0, "booleanActions": 109, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "EnrollmentStatusScreen.enableForAutopilotOnlyToggle", @@ -53,7 +53,7 @@ "entityKey": "trackInstallProgressForAutopilotOnly", "dataType": 0, "booleanActions": 109, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "EnrollmentStatusScreen.blockToggle", @@ -61,7 +61,7 @@ "entityKey": "blockDeviceSetupRetryByUser", "dataType": 16, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "options": [ { "nameResourceKey": "SettingDetails.no", @@ -77,7 +77,7 @@ "entityKey": "allowDeviceResetOnInstallFailure", "dataType": 0, "booleanActions": 109, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "EnrollmentStatusScreen.allowToUseToggle", @@ -85,7 +85,7 @@ "entityKey": "allowDeviceUseOnInstallFailure", "dataType": 0, "booleanActions": 109, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "EnrollmentStatusScreen.Apps.useSelectedAppsToggleLabel", @@ -93,7 +93,7 @@ "entityKey": "waitForApps", "dataType": 14, "booleanActions": 0, - "category": 103 + "category": "TableHeaders.settings" } ] } diff --git a/Documentation/ObjectInfo/#microsoft.graph.windowsQualityUpdateProfile.json b/Documentation/ObjectInfo/#microsoft.graph.windowsQualityUpdateProfile.json index b41e4cc..b422b36 100644 --- a/Documentation/ObjectInfo/#microsoft.graph.windowsQualityUpdateProfile.json +++ b/Documentation/ObjectInfo/#microsoft.graph.windowsQualityUpdateProfile.json @@ -13,7 +13,7 @@ "entityKey": "deployableContentDisplayName", "dataType": 20, "booleanActions": 0, - "category": 103 + "category": "TableHeaders.settings" }, { "nameResourceKey": "WindowsQualityUpdateProfile.Details.DaysUntilForcedReboot.label", @@ -21,13 +21,13 @@ "entityKey": "expeditedUpdateSettings", "dataType": 6, "booleanActions": 0, - "category": 103, + "category": "TableHeaders.settings", "complexOptions": [ { "nameResourceKey": "WindowsQualityUpdateProfile.Details.DaysUntilForcedReboot.label", "descriptionResourceKey": "", "dataType": 16, - "category": 103, + "category": "TableHeaders.settings", "entityKey": "daysUntilForcedReboot", "booleanActions": 0, "options": [ diff --git a/Documentation/ObjectInfo/devicefirmwareconfigurationinterface_windows10devicefirmwareconfigurationinterface.json b/Documentation/ObjectInfo/devicefirmwareconfigurationinterface_windows10devicefirmwareconfigurationinterface.json deleted file mode 100644 index af950be..0000000 --- a/Documentation/ObjectInfo/devicefirmwareconfigurationinterface_windows10devicefirmwareconfigurationinterface.json +++ /dev/null @@ -1,815 +0,0 @@ -{ - "devicefirmwareconfigurationinterface_windows10devicefirmwareconfigurationinterface": [ - { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 136, - "nameResourceKey": "dfciHeaderName", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 108, - "enabled": true - }, - { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 136, - "nameResourceKey": "securityFeaturesName", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 108, - "enabled": true - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "changeUefiSettingsPermissionName", - "descriptionResourceKey": "changeUefiSettingsPermissionDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfiguredOnly", - "value": "notConfiguredOnly", - "enabled": true - }, - { - "nameResourceKey": "none", - "value": "none", - "enabled": true - } - ], - "entityKey": "changeUefiSettingsPermission", - "booleanActions": 0, - "defaultValue": "notConfiguredOnly", - "unconfiguredValue": "notConfiguredOnly", - "policyType": 108, - "enabled": true - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "virtualizationOfCpuAndIOName", - "descriptionResourceKey": "virtualizationOfCpuAndIODescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "virtualizationOfCpuAndIO", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": true - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "windowsPlatformBinaryTableName", - "descriptionResourceKey": "windowsPlatformBinaryTableDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "windowsPlatformBinaryTable", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "simultaneousMultiThreadingName", - "descriptionResourceKey": "simultaneousMultiThreadingDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "simultaneousMultiThreading", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 136, - "nameResourceKey": "builtInHardwareName", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 108, - "enabled": true - }, - { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 136, - "nameResourceKey": "dfciBuiltinHeaderDescName", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 108, - "enabled": true - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "camerasName", - "descriptionResourceKey": "camerasDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "cameras", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": true - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "frontCamerasName", - "descriptionResourceKey": "frontCamerasDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "frontCamera", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "rearCamerasName", - "descriptionResourceKey": "rearCamerasDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "rearCamera", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "infraredCamerasName", - "descriptionResourceKey": "infraredCamerasDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "infraredCamera", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "microphonesAndSpeakersName", - "descriptionResourceKey": "microphonesAndSpeakersDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "microphonesAndSpeakers", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": true - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "microphonesName", - "descriptionResourceKey": "microphonesDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "microphone", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "radiosName", - "descriptionResourceKey": "radiosDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "children": [ - { - "dataType": 10, - "category": 136, - "nameResourceKey": "radioWarningInfoBox", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 108, - "enabled": true - } - ], - "enabled": true - } - ], - "entityKey": "radios", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": true - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "bluetoothName", - "descriptionResourceKey": "bluetoothDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "bluetooth", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "wwanName", - "descriptionResourceKey": "wwanDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "wirelessWideAreaNetwork", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "nfcName", - "descriptionResourceKey": "nfcDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "nearFieldCommunication", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "wifiName", - "descriptionResourceKey": "wifiDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "wiFi", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 136, - "nameResourceKey": "bootOptionsName", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 108, - "enabled": true - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "bootFromExternalMediaName", - "descriptionResourceKey": "bootFromExternalMediaDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "bootFromExternalMedia", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": true - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "bootFromBuiltInNetworkAdaptersName", - "descriptionResourceKey": "bootFromBuiltInNetworkAdaptersDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "bootFromBuiltInNetworkAdapters", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": true - }, - { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 136, - "nameResourceKey": "portName", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "usbTypeAPortName", - "descriptionResourceKey": "usbTypeAPortDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "usbTypeAPort", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "usbTypeCPortName", - "descriptionResourceKey": "usbTypeCPortDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "usbTypeCPort", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "sdCardName", - "descriptionResourceKey": "sdCardDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "sdCard", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "wakeOnLANName", - "descriptionResourceKey": "wakeOnLANDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "wakeOnLAN", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - }, - { - "dataType": 16, - "category": 136, - "nameResourceKey": "wakeOnPowerName", - "descriptionResourceKey": "wakeOnPowerDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enabledOption", - "value": "enabled", - "enabled": true - }, - { - "nameResourceKey": "disabledOption", - "value": "disabled", - "enabled": true - } - ], - "entityKey": "wakeOnPower", - "booleanActions": 0, - "defaultValue": "notConfigured", - "unconfiguredValue": "notConfigured", - "policyType": 108, - "enabled": false - } - ] -} diff --git a/Documentation/ObjectInfo/vpnappsandtrafficrules_windows10vpn.json b/Documentation/ObjectInfo/vpnappsandtrafficrules_windows10vpn.json deleted file mode 100644 index b6e63be..0000000 --- a/Documentation/ObjectInfo/vpnappsandtrafficrules_windows10vpn.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - "vpnappsandtrafficrules_windows10vpn": [ - { - "dataType": 16, - "category": 124, - "nameResourceKey": "vPNWipOrAppsName", - "descriptionResourceKey": "vPNWipOrAppsDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "value": 0, - "enabled": true - }, - { - "nameResourceKey": "wipOption", - "value": 1, - "children": [ - { - "dataType": 20, - "category": 124, - "nameResourceKey": "wipName", - "descriptionResourceKey": "wipDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "windowsInformationProtectionDomain", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - ], - "enabled": true - }, - { - "nameResourceKey": "associateAppsOption", - "value": 2, - "children": [ - { - "dataType": 19, - "category": 124, - "nameResourceKey": "vPNPolicyOnlyTheseAppsCanUseVPNName", - "descriptionResourceKey": "vPNPolicyOnlyTheseAppsCanUseVPNDescription", - "childSettings": [ - { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 124, - "nameResourceKey": "appIdentifierName", - "descriptionResourceKey": "appIdentifierDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "identifier", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 16, - "category": 124, - "nameResourceKey": "eDPPolicyNetworkLocationsListTypeName", - "descriptionResourceKey": "empty", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "desktopOption", - "value": "desktop", - "enabled": true - }, - { - "nameResourceKey": "universalOption", - "value": "universal", - "enabled": true - } - ], - "entityKey": "appType", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 124, - "nameResourceKey": "vPNPolicyAssociatedAppsName", - "descriptionResourceKey": "vPNPolicyAssociatedAppsDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "associatedApps", - "booleanActions": 0, - "defaultValue": false, - "policyType": 89, - "enabled": true - } - ], - "options": [ - { - "nameResourceKey": "enableOption", - "value": true, - "enabled": true - }, - { - "nameResourceKey": "disableOption", - "value": false, - "enabled": true - } - ], - "entityKey": "onlyAssociatedAppsCanUseConnection", - "booleanActions": 0, - "defaultValue": false, - "policyType": 89, - "enabled": true - } - ], - "enabled": true - } - ], - "entityKey": "syntheticWipOrApps", - "booleanActions": 0, - "defaultValue": 0, - "unconfiguredValue": 0, - "policyType": 89, - "enabled": true - }, - { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 124, - "nameResourceKey": "ruleName", - "descriptionResourceKey": "empty", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "name", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 16, - "category": 124, - "nameResourceKey": "trafficRuleRoutingPolicyTypeName", - "descriptionResourceKey": "trafficRuleRoutingPolicyTypeDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "noneOption", - "value": "none", - "enabled": true - }, - { - "nameResourceKey": "splitTunnelOption", - "value": "splitTunnel", - "enabled": true - }, - { - "nameResourceKey": "forceTunnelOption", - "value": "forceTunnel", - "enabled": true - } - ], - "entityKey": "routingPolicyType", - "booleanActions": 0, - "defaultValue": "none", - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 14, - "category": 124, - "nameResourceKey": "protocolsName", - "descriptionResourceKey": "empty", - "childSettings": [ - { - "columns": [ - { - "metadata": { - "dataType": 14, - "category": 124, - "nameResourceKey": "lowerPortName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "proxyPortExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "lowerNumber", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 14, - "category": 124, - "nameResourceKey": "upperPortName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "proxyPortExampleUpper", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "upperNumber", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 124, - "nameResourceKey": "localPortRangesName", - "descriptionResourceKey": "localPortRangesDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "localPortRanges", - "booleanActions": 0, - "policyType": 89, - "enabled": true - }, - { - "columns": [ - { - "metadata": { - "dataType": 14, - "category": 124, - "nameResourceKey": "lowerPortName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "proxyPortExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "lowerNumber", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 14, - "category": 124, - "nameResourceKey": "upperPortName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "proxyPortExampleUpper", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "upperNumber", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 124, - "nameResourceKey": "remotePortRangesName", - "descriptionResourceKey": "remotePortRangesDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "remotePortRanges", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - ], - "options": [ - - ], - "entityKey": "protocols", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 20, - "category": 124, - "nameResourceKey": "trafficRuleAppName", - "descriptionResourceKey": "empty", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "appId", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 16, - "category": 124, - "nameResourceKey": "trafficRuleAppTypeName", - "descriptionResourceKey": "empty", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "desktopOption", - "value": "desktop", - "enabled": true - }, - { - "nameResourceKey": "universalOption", - "value": "universal", - "enabled": true - } - ], - "entityKey": "appType", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 124, - "nameResourceKey": "lowerIPv4AddressName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "proxyAddressExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "lowerAddress", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 20, - "category": 124, - "nameResourceKey": "upperIPv4AddressName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "proxyAddressExampleUpper", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "upperAddress", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 124, - "nameResourceKey": "localAddressRangesName", - "descriptionResourceKey": "localAddressRangesDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "localAddressRanges", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 124, - "nameResourceKey": "lowerIPv4AddressName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "proxyAddressExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "lowerAddress", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 20, - "category": 124, - "nameResourceKey": "upperIPv4AddressName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "proxyAddressExampleUpper", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "upperAddress", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 124, - "nameResourceKey": "remoteAddressRangesName", - "descriptionResourceKey": "remoteAddressRangesDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "remoteAddressRanges", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 124, - "nameResourceKey": "vPNPolicyNetworkTrafficRulesName", - "descriptionResourceKey": "vPNPolicyNetworkTrafficRulesDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "trafficRules", - "booleanActions": 0, - "defaultValue": false, - "policyType": 89, - "enabled": true - } - ] -} diff --git a/Documentation/ObjectInfo/vpnconditionalaccess_windows10vpn.json b/Documentation/ObjectInfo/vpnconditionalaccess_windows10vpn.json deleted file mode 100644 index 44ecaf5..0000000 --- a/Documentation/ObjectInfo/vpnconditionalaccess_windows10vpn.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "vpnconditionalaccess_windows10vpn": { - "dataType": 19, - "category": 125, - "nameResourceKey": "enableConditionalAccessName", - "descriptionResourceKey": "enableConditionalAccessDescription", - "childSettings": [ - { - "dataType": 19, - "category": 125, - "nameResourceKey": "enableSingleSignOnName", - "descriptionResourceKey": "enableSingleSignOnDescription", - "childSettings": [ - { - "complexOptions": [ - { - "dataType": 20, - "category": 125, - "nameResourceKey": "eDPPolicyAppsListNameName", - "descriptionResourceKey": "eDPPolicyAppsListNameDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "name", - "booleanActions": 0, - "policyType": 89, - "enabled": true - }, - { - "dataType": 20, - "category": 125, - "nameResourceKey": "sCEPPolicyObjectIdentifierColumnName", - "descriptionResourceKey": "sCEPPolicyObjectIdentifierColumnDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "objectIdentifier", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - ], - "dataType": 6, - "category": 125, - "nameResourceKey": "sCEPPolicyExtendedKeyUsageName", - "descriptionResourceKey": "empty", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "singleSignOnEku", - "booleanActions": 0, - "policyType": 89, - "enabled": true - }, - { - "dataType": 20, - "category": 125, - "nameResourceKey": "issuerHashName", - "descriptionResourceKey": "issuerHashDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "singleSignOnIssuerHash", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - ], - "options": [ - { - "nameResourceKey": "enableOption", - "value": true, - "enabled": true - }, - { - "nameResourceKey": "disableOption", - "value": false, - "enabled": true - } - ], - "entityKey": "enableSingleSignOnWithAlternateCertificate", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - ], - "options": [ - { - "nameResourceKey": "enableOption", - "value": true, - "enabled": true - }, - { - "nameResourceKey": "disableOption", - "value": false, - "enabled": true - } - ], - "entityKey": "enableConditionalAccess", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } -} diff --git a/Documentation/ObjectInfo/vpndnstriggers_windows10vpn.json b/Documentation/ObjectInfo/vpndnstriggers_windows10vpn.json deleted file mode 100644 index 68a9ce8..0000000 --- a/Documentation/ObjectInfo/vpndnstriggers_windows10vpn.json +++ /dev/null @@ -1,438 +0,0 @@ -{ - "vpndnstriggers_windows10vpn": [ - { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "vPNPolicyDNSSuffixesName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "dNSSuffixExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "unusedForSingleItems", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 126, - "nameResourceKey": "vPNPolicyDNSSuffixSearchListName", - "descriptionResourceKey": "vPNPolicyDNSSuffixSearchListDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "dnsSuffixes", - "booleanActions": 0, - "policyType": 89, - "enabled": true - }, - { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "dNSName", - "descriptionResourceKey": "dNSNameDescription1809", - "emptyValueResourceKey": "dNSNameExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "name", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "dNSServer", - "descriptionResourceKey": "dNSServerDescription", - "emptyValueResourceKey": "vPNAddressExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "unusedForSingleItems", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 126, - "nameResourceKey": "dNSServer", - "descriptionResourceKey": "enterOnlyOneForDns", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "servers", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "proxy", - "descriptionResourceKey": "vPNProxyDescription1809", - "emptyValueResourceKey": "proxyDNSExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "proxyServerUri", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 19, - "category": 126, - "nameResourceKey": "vPNDnsAutoTriggerName", - "descriptionResourceKey": "vPNDnsAutoTriggerDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "enabledOption", - "value": true, - "enabled": true - }, - { - "nameResourceKey": "notConfigured", - "value": false, - "enabled": true - } - ], - "entityKey": "autoTrigger", - "booleanActions": 0, - "defaultValue": false, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 19, - "category": 126, - "nameResourceKey": "vPNDnsPersistentName", - "descriptionResourceKey": "vPNDnsPersistentDescription", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "enabledOption", - "value": true, - "enabled": true - }, - { - "nameResourceKey": "notConfigured", - "value": false, - "enabled": true - } - ], - "entityKey": "persistent", - "booleanActions": 0, - "defaultValue": false, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 126, - "nameResourceKey": "vPNPolicyNameResolutionPolicyTableRulesName", - "descriptionResourceKey": "vPNPolicyNameResolutionPolicyTableRulesDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "dnsRules", - "booleanActions": 0, - "defaultValue": false, - "policyType": 89, - "enabled": true - }, - { - "columns": [ - { - "metadata": { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 126, - "nameResourceKey": "vPNPolicyNameResolutionPolicyTableRulesName", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "dNSName", - "descriptionResourceKey": "dNSNameDescription1809", - "emptyValueResourceKey": "dNSNameExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "name", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 126, - "nameResourceKey": "enterOnlyOneForDns", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "dNSServer", - "descriptionResourceKey": "dNSServerDescription", - "emptyValueResourceKey": "vPNAddressExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "unusedForSingleItems", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 126, - "nameResourceKey": "dNSServer", - "descriptionResourceKey": "empty", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "servers", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "proxy", - "descriptionResourceKey": "vPNProxyDescription1809", - "emptyValueResourceKey": "proxyDNSExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "proxyServerUri", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 126, - "nameResourceKey": "vPNPolicyNameResolutionPolicyTableRulesName", - "descriptionResourceKey": "vPNPolicyNameResolutionPolicyTableRulesDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "dnsRules", - "booleanActions": 0, - "defaultValue": false, - "policyType": 89, - "enabled": false - }, - { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "dNSName", - "descriptionResourceKey": "dNSNameDescription", - "emptyValueResourceKey": "dNSNameExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "name", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 126, - "nameResourceKey": "enterOnlyOneForDns", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "dNSServer", - "descriptionResourceKey": "dNSServerDescription", - "emptyValueResourceKey": "vPNAddressExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "unusedForSingleItems", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 126, - "nameResourceKey": "dNSServer", - "descriptionResourceKey": "empty", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "servers", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 20, - "category": 126, - "nameResourceKey": "proxy", - "emptyValueResourceKey": "proxyDNSExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "proxyServerUri", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 126, - "nameResourceKey": "vPNPolicyDNSNamesAndServersName", - "descriptionResourceKey": "vPNPolicyDNSNamesAndServersName", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "dnsRules", - "booleanActions": 0, - "defaultValue": false, - "policyType": 89, - "enabled": false - } - ] -} diff --git a/Documentation/ObjectInfo/vpnproxy_windows10vpn.json b/Documentation/ObjectInfo/vpnproxy_windows10vpn.json deleted file mode 100644 index c960596..0000000 --- a/Documentation/ObjectInfo/vpnproxy_windows10vpn.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "vpnproxy_windows10vpn": [ - { - "isSettingDescription": false, - "showAsSectionHeader": false, - "dataType": 8, - "category": 128, - "nameResourceKey": "vPNPolicyUseProxyServerName", - "descriptionResourceKey": "vPNPolicyUseProxyServerDescription", - "childSettings": [ - - ], - "options": [ - - ], - "booleanActions": 0, - "policyType": 89, - "enabled": true - }, - { - "complexOptions": [ - { - "dataType": 20, - "category": 128, - "nameResourceKey": "vPNPolicyAutomaticConfigurationScriptName", - "descriptionResourceKey": "vPNPolicyAutomaticConfigurationScriptDescription", - "emptyValueResourceKey": "vPNScriptExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "automaticConfigurationScriptUrl", - "booleanActions": 0, - "policyType": 89, - "enabled": true - }, - { - "dataType": 20, - "category": 128, - "nameResourceKey": "vPNPolicyAddressName", - "descriptionResourceKey": "vPNPolicyAddressDescription", - "emptyValueResourceKey": "vPNAddressExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "address", - "booleanActions": 0, - "policyType": 89, - "enabled": true - }, - { - "dataType": 14, - "category": 128, - "nameResourceKey": "vPNPolicyPortNumberName", - "descriptionResourceKey": "empty", - "emptyValueResourceKey": "proxyPortExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "port", - "booleanActions": 0, - "policyType": 89, - "enabled": true - }, - { - "dataType": 16, - "category": 128, - "nameResourceKey": "vPNPolicyBypassProxySettingsForLocalAddressesName", - "descriptionResourceKey": "empty", - "childSettings": [ - - ], - "options": [ - { - "nameResourceKey": "notConfigured", - "enabled": true - }, - { - "nameResourceKey": "enableOption", - "value": "true", - "enabled": true - }, - { - "nameResourceKey": "disableOption", - "value": "false", - "enabled": true - } - ], - "entityKey": "bypassProxyServerForLocalAddress", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - ], - "dataType": 6, - "category": 128, - "nameResourceKey": "vPNPolicyUseProxyServerName", - "descriptionResourceKey": "vPNPolicyUseProxyServerDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "proxyServer", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - ] -} diff --git a/Documentation/ObjectInfo/vpnsplittunneling_windows10vpn.json b/Documentation/ObjectInfo/vpnsplittunneling_windows10vpn.json deleted file mode 100644 index 9da88c5..0000000 --- a/Documentation/ObjectInfo/vpnsplittunneling_windows10vpn.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "vpnsplittunneling_windows10vpn": { - "dataType": 19, - "category": 123, - "nameResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNName", - "descriptionResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNDescription", - "childSettings": [ - { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 123, - "nameResourceKey": "vPNPolicyDestinationPrefixName", - "descriptionResourceKey": "vPNPolicyDestinationPrefixName", - "emptyValueResourceKey": "proxyAddressExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "destinationPrefix", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - }, - { - "metadata": { - "dataType": 14, - "category": 123, - "nameResourceKey": "vPNPolicyPrefixSizeName", - "descriptionResourceKey": "vPNPolicyPrefixSizeName", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "prefixSize", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 123, - "nameResourceKey": "vPNPolicyRoutesForThisConnectionName", - "descriptionResourceKey": "vPNPolicyRoutesForThisConnectionDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "routes", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - ], - "options": [ - { - "nameResourceKey": "enableOption", - "value": true, - "enabled": true - }, - { - "nameResourceKey": "disableOption", - "value": false, - "enabled": true - } - ], - "entityKey": "enableSplitTunneling", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } -} diff --git a/Documentation/ObjectInfo/vpntrustednetwork_windows10vpn.json b/Documentation/ObjectInfo/vpntrustednetwork_windows10vpn.json deleted file mode 100644 index ba2dc34..0000000 --- a/Documentation/ObjectInfo/vpntrustednetwork_windows10vpn.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "vpntrustednetwork_windows10vpn": { - "columns": [ - { - "metadata": { - "dataType": 20, - "category": 129, - "nameResourceKey": "vPNPolicyTrustedNetworkDomainColumnName", - "descriptionResourceKey": "", - "emptyValueResourceKey": "VPNPolicyTrustedNetworkDomainExample", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "trustedNetworkDomains", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } - } - ], - "dataType": 21, - "category": 129, - "nameResourceKey": "vPNPolicyTrustedNetworkDomainName", - "descriptionResourceKey": "vPNPolicyTrustedNetworkDomainDescription", - "childSettings": [ - - ], - "options": [ - - ], - "entityKey": "trustedNetworkDomains", - "booleanActions": 0, - "policyType": 89, - "enabled": true - } -} diff --git a/Extensions/Compare.psm1 b/Extensions/Compare.psm1 index 308312a..37398be 100644 --- a/Extensions/Compare.psm1 +++ b/Extensions/Compare.psm1 @@ -11,7 +11,7 @@ Objects can be compared based on Properties or Documentatation info. function Get-ModuleVersion { - '1.0.9' + '1.0.10' } function Invoke-InitializeModule @@ -422,8 +422,8 @@ function Invoke-BulkCompareNamedObjects Write-Log "Compare $($item.ObjectType.Title) objects" Write-Log "----------------------------------------------------------------" - $graphObjects = @(Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType) - + [array]$graphObjects = Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType + $nameProp = ?? $item.ObjectType.NameProperty "displayName" foreach($graphObj in ($graphObjects | Where { $_.Object."$($nameProp)" -imatch [regex]::Escape($sourcePattern) })) @@ -561,7 +561,7 @@ function Start-BulkCompareExportObjects { Save-Setting "" "LastUsedFullPath" $folder - $graphObjects = @(Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType) + [array]$graphObjects = Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType foreach ($fileObj in @(Get-GraphFileObjects $folder -ObjectType $item.ObjectType)) { diff --git a/Extensions/Copy.psm1 b/Extensions/Copy.psm1 index 44d224f..9813d6e 100644 --- a/Extensions/Copy.psm1 +++ b/Extensions/Copy.psm1 @@ -1,6 +1,6 @@ function Get-ModuleVersion { - '1.0.1' + '1.0.2' } function Invoke-InitializeModule @@ -106,7 +106,7 @@ function Start-BulkCopyObjects Write-Log "Copy $($item.ObjectType.Title) objects" Write-Log "----------------------------------------------------------------" - $graphObjects = @(Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType) + [array]$graphObjects = Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType $nameProp = ?? $item.ObjectType.NameProperty "displayName" diff --git a/Extensions/DocumentationWord.psm1 b/Extensions/DocumentationWord.psm1 index fb1d015..cd8a588 100644 --- a/Extensions/DocumentationWord.psm1 +++ b/Extensions/DocumentationWord.psm1 @@ -3,7 +3,7 @@ #https://docs.microsoft.com/en-us/office/vba/api/overview/word function Get-ModuleVersion { - '1.3.0' + '1.4.0' } function Invoke-InitializeModule @@ -610,6 +610,7 @@ function Invoke-WordProcessItem $settingProps += ("Settings." + $objProp) } } + $params.Add("AddCategories", $true) } else { @@ -649,6 +650,7 @@ function Invoke-WordProcessItem if($fi.Exists) { $script:doc.Application.Selection.InlineShapes.AddOLEObject("",$fi.FullName,$false,$true,"$($env:WinDir)\System32\Notepad.exe",0,$fi.Name) + $script:doc.Application.Selection.TypeParagraph() try { $fi.Delete() } catch {} # Cleanup } } @@ -666,12 +668,18 @@ function Set-DocTableSettingsItems $secondColumn = $firstColumn + 1 - $script:docTable.Cell(1, $firstColumn).Range.Text = (Invoke-WordTranslateColumnHeader "Settings") + $script:docTable.Cell(1, $firstColumn).Range.Text = (Invoke-DocTranslateColumnHeader "Settings") $script:docTable.Cell(1, $secondColumn).Range.Text = "" $row = 2 foreach($itemObj in $items) { + #if($script:docTable.Rows($row).Cells.Count -eq 1) { $row++;continue } # Category / Sub-category + while($script:docTable.Cell($row,1).Next.RowIndex -gt $row) + { + # Category / Sub-category + $row++; + } $script:docTable.Cell($row, $firstColumn).Range.Text = "" $script:docTable.Cell($row, $secondColumn).Range.Text = "" $script:docTable.Cell($row, $firstColumn).Split($properties.Count,1) @@ -680,7 +688,7 @@ function Set-DocTableSettingsItems $cellRow = $row foreach($settingProp in $properties) { - $script:docTable.Cell($cellRow, $firstColumn).Range.Text = (Invoke-WordTranslateColumnHeader ($settingProp.Split('.')[-1])) + $script:docTable.Cell($cellRow, $firstColumn).Range.Text = (Invoke-DocTranslateColumnHeader ($settingProp.Split('.')[-1])) $propArr = $settingProp.Split('.') $tmpObj = $itemObj @@ -690,7 +698,8 @@ function Set-DocTableSettingsItems $tmpObj = $tmpObj."$($propArr[$x])" } - $script:docTable.Cell($cellRow, $secondColumn).Column.Cells($cellRow).Range.Text = "$($tmpObj.$propName)" + #$script:docTable.Cell($cellRow, $secondColumn).Column.Cells($cellRow).Range.Text = "$($tmpObj.$propName)" + $script:docTable.Cell($cellRow, $secondColumn).Range.Text = "$($tmpObj.$propName)" $cellRow++ } diff --git a/Extensions/EndpointManager.psm1 b/Extensions/EndpointManager.psm1 index 2c0ad46..74ddf7f 100644 --- a/Extensions/EndpointManager.psm1 +++ b/Extensions/EndpointManager.psm1 @@ -11,7 +11,7 @@ This module is for the Endpoint Manager/Intune View. It manages Export/Import/Co #> function Get-ModuleVersion { - '3.7.3' + '3.7.4' } function Invoke-InitializeModule @@ -141,6 +141,7 @@ function Invoke-InitializeModule API = "/identityGovernance/termsOfUse/agreements" Permissons=@("Agreement.ReadWrite.All") PreImportCommand = { Start-PreImportTermsOfUse @args } + PostExportCommand = { Start-PostExportTermsOfUse @args } GroupId = "ConditionalAccess" }) } @@ -166,6 +167,7 @@ function Invoke-InitializeModule PostListCommand = { Start-PostListEndpointSecurity @args } PostExportCommand = { Start-PostExportEndpointSecurity @args } PostFileImportCommand = { Start-PostFileImportEndpointSecurity @args } + PostGetCommand = { Start-PostGetEndpointSecurity @args } #PreCopyCommand = { Start-PreCopyEndpointSecurity @args } PostCopyCommand = { Start-PostCopyEndpointSecurity @args } PreUpdateCommand = { Start-PreUpdateEndpointSecurity @args } @@ -254,6 +256,7 @@ function Invoke-InitializeModule PreReplaceCommand = { Start-PreReplaceEnrollmentRestrictions @args } # Note: Uses same PreReplaceCommand as restrictions PostReplaceCommand = { Start-PostReplaceEnrollmentRestrictions @args } # Note: Uses same PostReplaceCommand as restrictions PreFilesImportCommand = { Start-PreFilesImportEnrollmentRestrictions @args } # Note: Uses same PreFilesImportCommand as restrictions + PreImportAssignmentsCommand = { Start-PreImportAssignmentsEnrollmentRestrictions @args } # Note: Uses same PreFilesImportCommand as restrictions PostListCommand = { Start-PostListESP @args } #PreUpdateCommand = { Start-PreUpdateEnrollmentRestrictions @args } # Note: Uses same PreUpdateCommand as restrictions #QUERYLIST = "`$filter=endsWith(id,'Windows10EnrollmentCompletionPageConfiguration')" @@ -277,6 +280,7 @@ function Invoke-InitializeModule PostReplaceCommand = { Start-PostReplaceEnrollmentRestrictions @args } PreFilesImportCommand = { Start-PreFilesImportEnrollmentRestrictions @args } PostListCommand = { Start-PostListEnrollmentRestrictions @args } + PreImportAssignmentsCommand = { Start-PreImportAssignmentsEnrollmentRestrictions @args } #PreUpdateCommand = { Start-PreUpdateEnrollmentRestrictions @args } PropertiesToRemoveForUpdate = @('priority') Permissons=@("DeviceManagementServiceConfig.ReadWrite.All") @@ -448,6 +452,8 @@ function Invoke-InitializeModule PreUpdateCommand = { Start-PreUpdateApplication @args } PreImportCommand = { Start-PreImportCommandApplication @args } DetailExtension = { Add-DetailExtensionApplications @args } + PreImportAssignmentsCommand = { Start-PreImportAssignmentsApplications @args } + PreDeleteCommand = { Start-PreDeleteApplications @args } GroupId = "Apps" ScopeTagsReturnedInList = $false }) @@ -863,7 +869,7 @@ function Set-EMViewPanel $global:btnLoadAllPages.add_click({ Write-Status "Loading $($global:curObjectType.Title) objects" - $graphObjects = @(Get-GraphObjects -property $global:curObjectType.ViewProperties -objectType $global:curObjectType -AllPages) + [array]$graphObjects = Get-GraphObjects -property $global:curObjectType.ViewProperties -objectType $global:curObjectType -AllPages $graphObjects | ForEach-Object { $global:dgObjects.ItemsSource.AddNewItem($_) | Out-Null } $global:dgObjects.ItemsSource.CommitNew() Set-GraphPagesButtonStatus @@ -873,7 +879,7 @@ function Set-EMViewPanel $global:btnLoadNextPage.add_click({ Write-Status "Loading $($global:curObjectType.Title) objects" - $graphObjects = @(Get-GraphObjects -property $global:curObjectType.ViewProperties -objectType $global:curObjectType -SinglePage) + [array]$graphObjects = Get-GraphObjects -property $global:curObjectType.ViewProperties -objectType $global:curObjectType -SinglePage $graphObjects | ForEach-Object { $global:dgObjects.ItemsSource.AddNewItem($_) | Out-Null } $global:dgObjects.ItemsSource.CommitNew() Set-GraphPagesButtonStatus @@ -1000,17 +1006,19 @@ function Start-PostListEndpointSecurity if(-not $script:baseLineTemplates) { return } foreach($obj in $objList) - { + { if(-not $obj.Object.templateId) { continue } if($obj.Object.templateId -ne $baseLineTemplate.Id) { $baseLineTemplate = $script:baseLineTemplates | Where Id -eq $obj.Object.templateId } + if($baseLineTemplate) { $obj | Add-Member -MemberType NoteProperty -Name "Type" -Value $baseLineTemplate.displayName $obj | Add-Member -MemberType NoteProperty -Name "Category" -Value (?: ($baseLineTemplate.templateSubtype -eq "none") $baseLineTemplate.templateType $baseLineTemplate.templateSubtype) } + } $objList } @@ -1028,7 +1036,7 @@ function Start-PostExportEndpointSecurity $settings = Invoke-GraphRequest -Url "$($objectType.API)/$($obj.id)/settings" $settingsJson = "{ `"settings`": $((ConvertTo-Json $settings.value -Depth 20 ))`n}" $fileName = "$path\$((Remove-InvalidFileNameChars $fileName))_Settings.json" - $settingsJson | Out-File -LiteralPath $fileName -Force + Save-GraphObjectToFile $settingsJson $fileName } function Start-PostFileImportEndpointSecurity @@ -1039,7 +1047,7 @@ function Start-PostFileImportEndpointSecurity if($settings) { Start-GraphPreImport $settings - Invoke-GraphRequest -Url "$($objectType.API)/$($obj.id)/updateSettings" -Body ($settings | ConvertTo-Json -Depth 20) -Method "POST" + Invoke-GraphRequest -Url "$($objectType.API)/$($obj.id)/updateSettings" -Body ($settings | ConvertTo-Json -Depth 50) -Method "POST" } } @@ -1123,6 +1131,18 @@ function Start-PreUpdateEndpointSecurity Remove-Property $obj "templateId" } +function Start-PostGetEndpointSecurity +{ + param($obj, $objectType) + + Add-EndpointSecurityInfo $obj +} + +function local:Add-EndpointSecurityInfo +{ + param($obj, $baseLineTemplate = $null) + +} #endregion #region @@ -1133,7 +1153,7 @@ function Start-PostFileImportDeviceConfiguration if($obj.'@OData.Type' -like "#microsoft.graph.windows10GeneralConfiguration") { - $tmpObj = Get-Content -LiteralPath $importFile | ConvertFrom-Json + $tmpObj = Get-GraphObjectFromFile $importFile if(($tmpObj.privacyAccessControls | measure).Count -gt 0) { @@ -1829,15 +1849,23 @@ function Start-PostFileImportApplications { param($obj, $objectType, $file) - $tmpObj = Get-Content -LiteralPath $file | ConvertFrom-Json + $tmpObj = Get-GraphObjectFromFile $file if(-not ($obj.PSObject.Properties | Where Name -eq '@odata.type')) { # Add @odata.type property if it is missing. Required by app package import $obj | Add-Member -MemberType NoteProperty -Name '@odata.type' -Value $objectType.'@odata.type' } + + $fi = [IO.FileInfo]$file + $tmpFilName = $fi.DirectoryName + "\" + $obj.FileName + + if([IO.File]::Exists($tmpFilName) -eq $false) + { + $tmpFilName = $null + } - Start-ImportApp $obj + Start-ImportApp $obj $tmpFilName } function local:Start-ImportApp @@ -1982,6 +2010,30 @@ function Add-DetailExtensionApplications } } + +function Start-PreImportAssignmentsApplications +{ + param($obj, $objectType, $file, $assignments) + + if($obj.'@odata.type' -eq "#microsoft.graph.windowsMicrosoftEdgeApp") + { + foreach($assignment in $assignments) + { + Remove-Property $assignment.target "deviceAndAppManagementAssignmentFilterId" + Remove-Property $assignment.target "deviceAndAppManagementAssignmentFilterType" + } + @{"Assignments"=$assignments} + } +} + +function Start-PreDeleteApplications +{ + if($obj.'@odata.type' -eq "#microsoft.graph.microsoftStoreForBusinessApp") + { + # Don't delete Microsoft Store for Business Apps + @{ "Delete" = $false } + } +} #endregion #region Group Policy/Administrative Templates functions @@ -2187,7 +2239,7 @@ function Start-PostExportAdministrativeTemplate } $fileName = "$path\$((Remove-InvalidFileNameChars $fileName))_Settings.json" - ConvertTo-Json $settings -Depth 20 | Out-File -LiteralPath $fileName -Force + Save-GraphObjectToFile $settings $fileName } function Start-PostCopyAdministrativeTemplate @@ -2208,7 +2260,7 @@ function Start-PostFileImportAdministrativeTemplate $settings = Get-EMSettingsObject $obj $objectType $file -settingsProperty "definitionValues" -SettingsArray if($settings) { - $tmpObj = (Get-Content -LiteralPath $file) | ConvertFrom-Json + $tmpObj = Get-GraphObjectFromFile $file Import-GPOSetting $obj $settings -CustomADMX:($tmpObj.policyConfigurationIngestionType -eq "Custom") } @@ -2222,8 +2274,8 @@ function Start-LoadAdministrativeTemplate $fi = [IO.FileInfo]$fileName if($fi.Exists -eq $false) { return } - - $obj = Get-Content -LiteralPath $fi.FullName | ConvertFrom-Json + + $obj = Get-GraphObjectFromFile $fi.FullName if($obj.definitionValues) { @@ -2234,7 +2286,7 @@ function Start-LoadAdministrativeTemplate if([IO.File]::Exists($settingsFile)) { - $definitionValues = Get-Content -LiteralPath $settingsFile | ConvertFrom-Json + $definitionValues = Get-GraphObjectFromFile $settingsFile $obj | Add-Member Noteproperty -Name "definitionValues" -Value $definitionValues -Force } @@ -2444,7 +2496,7 @@ function Start-PostExportRoleDefinitions $fileName = "$path\$((Remove-InvalidFileNameChars $fileName)).json" if([IO.File]::Exists($fileName)) { - $tmpObj = Get-Content -LiteralPath $fileName | ConvertFrom-Json + $tmpObj = Get-GraphObjectFromFile $fileName } else { @@ -2468,7 +2520,7 @@ function Start-PostExportRoleDefinitions if($roleAssignmentsArr.Count -gt 0) { $tmpObj.RoleAssignments = $roleAssignmentsArr - $tmpObj | ConvertTo-Json -Depth 20 | Out-File -LiteralPath $fileName + Save-GraphObjectToFile $tmpObj $fileName } } } @@ -2485,7 +2537,7 @@ function Start-PostFileImportRoleDefinitions { param($obj, $objectType, $file) - $tmpObj = Get-Content -LiteralPath $file | ConvertFrom-Json + $tmpObj = Get-GraphObjectFromFile $file $loadedScopeTags = $global:LoadedDependencyObjects["ScopeTags"] if(($tmpObj.RoleAssignments | measure).Count -gt 0 -and ($loadedScopeTags | measure).Count -gt 0) @@ -2551,7 +2603,7 @@ function Start-PostFileImportNotifications { param($obj, $objectType, $file) - $tmpObj = Get-Content -LiteralPath $file | ConvertFrom-Json + $tmpObj = Get-GraphObjectFromFile $file foreach($localizedNotificationMessage in $tmpObj.localizedNotificationMessages) { @@ -2705,6 +2757,17 @@ function Start-PostListEnrollmentRestrictions } } +function Start-PreImportAssignmentsEnrollmentRestrictions +{ + param($obj, $objectType, $file, $assignments) + + if($obj.Priority -eq 0) + { + # Skip Assignment for Default Policy + @{ "Import" = $false } + } +} + #endregion #region @@ -2815,7 +2878,7 @@ function Save-EMDefaultPolicy # Clean up from old version of the script that used the wrong name for Default policies try { [IO.File]::Delete($oldFile) | Out-Null } Catch {} } - $obj | ConvertTo-Json -Depth 20 | Out-File -LiteralPath "$path\$((Remove-InvalidFileNameChars $fileName)).json" + Save-GraphObjectToFile $obj "$path\$((Remove-InvalidFileNameChars $fileName)).json" } } catch {} @@ -2831,7 +2894,7 @@ function Get-EMSettingsObject if($fi.Exists) { # Settings property removed during import so lets try exported file first - $tmpObj = (Get-Content -LiteralPath $fi.FullName) | ConvertFrom-Json + $tmpObj = Get-GraphObjectFromFile $fi.FullName if($SettingsArray -eq $true) { # Only the an array of settings is expected @@ -2855,9 +2918,8 @@ function Get-EMSettingsObject { Write-Log "Settings file '$($fiSettings.FullName)' was not found" 2 return - } - - (Get-Content -LiteralPath $fiSettings.FullName) | ConvertFrom-Json + } + Get-GraphObjectFromFile $fiSettings.FullName } else { @@ -2880,7 +2942,7 @@ function Add-EMAssignmentsToExportFile Write-Log "File not found: $fileName. Could not add assignments to file" 3 return } - $tmpObj = Get-Content -LiteralPath $fileName | ConvertFrom-Json + $tmpObj = Get-GraphObjectFromFile $fileName if(-not $url) { @@ -2897,7 +2959,7 @@ function Add-EMAssignmentsToExportFile { $tmpObj.Assignments = $assignments } - ConvertTo-Json $tmpObj -Depth 20 | Out-File -LiteralPath $fileName -Force + Save-GraphObjectToFile $tmpObj $fileName } } @@ -3094,12 +3156,32 @@ function Start-PreImportTermsOfUse return } + Write-Log "Add file data: $pdfFile" + $bytes = [IO.File]::ReadAllBytes($pdfFile) $file.fileData = [PSCustomObject]@{ data = [Convert]::ToBase64String($bytes) } } } + +function Start-PostExportTermsOfUse +{ + param($obj, $objectType, $path) + + foreach($file in $obj.Files) + { + $url = "agreements/$($obj.id)/file/localizations('$($file.id)')/fileData/data" + $data = (Invoke-GraphRequest -Url $url -ODataMetadata "Minimal").Value + if($data) + { + Write-Log "Save file $($file.FileName)" + $fileName = "$path\$($file.FileName)" + [IO.File]::WriteAllBytes($fileName, [System.Convert]::FromBase64String($data)) + } + } +} + #endregion #region ADMXFiles @@ -3174,7 +3256,6 @@ function Start-PreDeleteADMXFiles @{ "Delete" = $false } } - -#nedregion +#endregion Export-ModuleMember -alias * -function * \ No newline at end of file diff --git a/Extensions/IntuneAppManagement.psm1 b/Extensions/IntuneAppManagement.psm1 index a9230d0..1b5cc7f 100644 --- a/Extensions/IntuneAppManagement.psm1 +++ b/Extensions/IntuneAppManagement.psm1 @@ -10,7 +10,7 @@ This module manages Application objects in Intune e.g. uploading application fil #> function Get-ModuleVersion { - '3.4.0' + '3.7.4' } ######################################################################################### @@ -362,21 +362,32 @@ function Send-IntuneFileToAzureStorage $currentChunk = $chunk + 1 - Write-Status "Uploading file to Azure Storage`n`nUploading chunk $currentChunk of $chunks ($(($currentChunk / $chunks*100))%)" + Write-Status "Uploading file to Azure Storage`n`nUploading chunk $currentChunk of $chunks ($(("{0:N2}" -f ($currentChunk / $chunks*100)))%)" - Write-AzureStorageChunk $sasUri $id $bytes + if((Write-AzureStorageChunk $sasUri $id $bytes) -eq $false) + { + Write-Log "Upload failed. Abourting..." 3 + break + } if ($currentChunk -lt $chunks -and $sasRenewalTimer.ElapsedMilliseconds -ge 450000) { Request-RenewAzureStorageUpload $fileUri $sasRenewalTimer.Restart() } - } - $reader.Close() + } } + catch + { + Write-Log "Failed to send file to Intune. $($_.Exception.Message)" 3 + } finally { - if ($reader -ne $null) { $reader.Dispose() } + if ($reader -ne $null) + { + $reader.Close() + $reader.Dispose() + } } # Finalize the upload. @@ -443,15 +454,39 @@ function Write-AzureStorageChunk $curProgressPreference = $ProgressPreference $ProgressPreference = 'SilentlyContinue' - try - { - $response = Invoke-WebRequest $uri -Method Put -Headers $headers -Body $encodedBody - } - catch - { - Write-Log "Failed to upload file chunk. $($_.Exception.Message)" 3 - } + + $success = $false + $retryCount = 0 + while($true) + { + + try + { + $response = Invoke-WebRequest $uri -Method Put -Headers $headers -Body $encodedBody + if($retryCount -gt 0) + { + Write-Log "Chunk uploaded successfully" + } + $success = $true + break + } + catch + { + if($_.Exception.HResult -eq -2146233079 -and $retryCount -lt 6) + { + Write-Log "Failed to upload file chunk. Retry in 10 s" 2 + $retryCount++ + Start-Sleep -Seconds 10 + } + else + { + Write-Log "Failed to upload file chunk. $($_.Exception.Message)" 3 + break + } + } + } $ProgressPreference = $curProgressPreference + $success } function Get-IntuneKey diff --git a/Extensions/MSALAuthentication.psm1 b/Extensions/MSALAuthentication.psm1 index bdc2769..b172bee 100644 --- a/Extensions/MSALAuthentication.psm1 +++ b/Extensions/MSALAuthentication.psm1 @@ -10,7 +10,7 @@ This module manages Authentication for the application with MSAL. It is also res #> function Get-ModuleVersion { - '3.7.2' + '3.7.4' } $global:msalAuthenticator = $null @@ -231,7 +231,7 @@ function Get-MSALUserInfo $global:Me = $tmpMe Write-Log "Get profile picture" $global:profilePhoto = "$($env:LOCALAPPDATA)\CloudAPIPowerShellManagement\$($global:Me.Id).jpeg" - MSGraph\Invoke-GraphRequest "me/photos/48x48/`$value" -OutFile $global:profilePhoto -SkipAuthentication | Out-Null + MSGraph\Invoke-GraphRequest "me/photos/48x48/`$value" -OutFile $global:profilePhoto -SkipAuthentication -NoError | Out-Null } Write-Log "Get organization info" diff --git a/Extensions/MSGraph.psm1 b/Extensions/MSGraph.psm1 index 59bc3ce..419eec8 100644 --- a/Extensions/MSGraph.psm1 +++ b/Extensions/MSGraph.psm1 @@ -10,7 +10,7 @@ This module manages Microsoft Grap fuctions like calling APIs, managing graph ob #> function Get-ModuleVersion { - '3.7.2' + '3.7.4' } $global:MSGraphGlobalApps = @( @@ -451,7 +451,25 @@ function Invoke-GraphRequest } else { - Write-LogError "Failed to invoke MS Graph with URL $Url (Request ID: $requestId). Status code: $($_.Exception.Response.StatusCode)" $_.Excption + $extMessage = $null + try + { + $reader = New-Object System.IO.StreamReader($_.Exception.Response.GetResponseStream()) + $reader.BaseStream.Position = 0 + $reader.DiscardBufferedData() + $response = $reader.ReadToEnd() | ConvertFrom-Json + if($response.Error.Message) + { + $message = $response.Error.Message | ConvertFrom-Json + if($message.Message) + { + $extMessage = ". Response message: $($message.Message)" + } + } + } + catch{} + + Write-LogError "Failed to invoke MS Graph with URL $Url (Request ID: $requestId). Status code: $($_.Exception.Response.StatusCode)$extMessage" $_.Excption } } } while($retryRequest -eq $true) @@ -559,21 +577,31 @@ function Get-GraphObjects if($graphObjects -and ($graphObjects | GM -Name Value -MemberType NoteProperty)) { - $retObjects = $graphObjects.Value + $retObjects = $graphObjects.Value } else { $retObjects = $graphObjects } - $graphObjects = Add-GraphObjectProperties $retObjects $objectType $property $exclude $SortProperty - - if($SingleObject -ne $true -and $objectType.PostListCommand) + if($retObjects) { - $graphObjects = & $objectType.PostListCommand $graphObjects $objectType + $graphObjects = Add-GraphObjectProperties $retObjects $objectType $property $exclude $SortProperty + + if($SingleObject -ne $true -and $objectType.PostListCommand) + { + $graphObjects = & $objectType.PostListCommand $graphObjects $objectType + } + } + else + { + $graphObjects = $null } - $graphObjects + if(($graphObjects | measure).Count -gt 0) + { + $graphObjects + } } function Add-GraphObjectProperties @@ -693,12 +721,12 @@ function Show-GraphObjects $script:nextGraphPage = $null - $graphObjects = @(Get-GraphObjects -property $global:curObjectType.ViewProperties -objectType $global:curObjectType -SinglePage -Filter $filter) + [array]$graphObjects = Get-GraphObjects -property $global:curObjectType.ViewProperties -objectType $global:curObjectType -SinglePage -Filter $filter $dgObjects.AutoGenerateColumns = $false $dgObjects.Columns.Clear() - if(($graphObjects | measure).Count -gt 0) + if($graphObjects) { $tmpObj = $graphObjects | Select -First 1 @@ -1335,7 +1363,7 @@ function Start-GraphObjectExport $folder = Expand-FileName $folder Write-Status "Get a list of all $($item.ObjectType.Title) objects" -SkipLog -Force - $objects = @(Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType) + [array]$objects = Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType if((Get-SettingValue "UseBatchAPI") -eq $true) { @@ -1345,6 +1373,7 @@ function Start-GraphObjectExport $total = ($batchObjects | measure).Count foreach($batchResult in $batchObjects) { + if(-not $batchResult.Object) { continue } $objName = Get-GraphObjectName $batchResult.Object $batchResult.ObjectType Write-Status "Export $($item.Title): $objName ($($i)/$($total))" -Force Export-GraphObject $batchResult.Object $batchResult.ObjectType $folder -IsFullObject @@ -1621,7 +1650,7 @@ function Show-GraphImportForm $navigationPropObjects = @() foreach ($fileObj in $filesToImport) { - if($allowUpdate -and $global:cbImportType.SelectedValue -ne "alwaysImport" -and (Reset-GraphObjet $fileObj $global:dgObjects.ItemsSource)) + if($allowUpdate -and $global:cbImportType.SelectedValue -ne "alwaysImport" -and (Reset-GraphObject $fileObj $global:dgObjects.ItemsSource)) { continue } @@ -1839,7 +1868,7 @@ function Start-GraphObjectImport try { Write-Status "Get $($item.Title) objects" -Force - $graphObjects = @(Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType) + [array]$graphObjects = Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType } catch {} } @@ -1864,7 +1893,7 @@ function Start-GraphObjectImport continue } - if($allowUpdate -and $global:cbImportType.SelectedValue -ne "alwaysImport" -and $graphObjects -and (Reset-GraphObjet $fileObj $graphObjects)) + if($allowUpdate -and $global:cbImportType.SelectedValue -ne "alwaysImport" -and $graphObjects -and (Reset-GraphObject $fileObj $graphObjects)) { $importedObjects++ continue @@ -2048,7 +2077,7 @@ function Show-GraphBulkDeleteForm Write-Log "Start bulk delete" Write-Log "****************************************************************" - foreach($item in ($global:dgBulkDeleteObjects.ItemsSource | Where Selected -eq $true)) + foreach($item in ($global:dgBulkDeleteObjects.ItemsSource | Where Selected -eq $true | sort-object -property @{e={$_.ObjectType.ImportOrder}} -Descending)) { Write-Log "----------------------------------------------------------------" Write-Log "Delete $($item.ObjectType.Title) objects" @@ -2060,8 +2089,8 @@ function Show-GraphBulkDeleteForm try { - Write-Status "Get $($item.Title) objects" -Force - $objects = @(Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType) + Write-Status "Get $($item.ObjectType.Title) objects" -Force + [array]$objects = Get-GraphObjects -property $item.ObjectType.ViewProperties -objectType $item.ObjectType foreach($obj in $objects) { $objName = Get-GraphObjectName $obj.Object $obj.ObjectType @@ -2071,7 +2100,7 @@ function Show-GraphBulkDeleteForm continue } - Write-Status "Delete $($item.Title): $objName" -Force -SkipLog + Write-Status "Delete $($item.ObjectType.Title): $objName" -Force -SkipLog Remove-GraphObject $obj.Object $obj.ObjectType $folder } } @@ -2113,12 +2142,7 @@ function Get-GraphFileObjects } else { - $json = Get-Content -LiteralPath $file.FullName -Raw - if($global:Organization.Id) - { - $json = $json -replace "%OrganizationId%",$global:Organization.Id - } - $graphObj = (ConvertFrom-Json $json) + $graphObj = Get-GraphObjectFromFile $file.FullName } $obj = New-Object PSObject -Property @{ @@ -2194,7 +2218,7 @@ function Import-GraphFile } } -function Reset-GraphObjet +function Reset-GraphObject { param($fileObj, $objectList) @@ -2369,10 +2393,12 @@ function Import-GraphObjectAssignment if($preConfig["Import"] -eq $false) { return } # Assignment managed manually so skip further processing - $api = ?? $preConfig["API"] "$($objectType.API)/$($newObj.Id)/assign" + $api = ?? $preConfig["API"] "$($objectType.API)/$($obj.Id)/assign" $method = ?? $preConfig["Method"] "POST" + $clonedAssignments = ?? $preConfig["Assignments"] $clonedAssignments + $keepProperties = ?? $objectType.AssignmentProperties @("target") $keepTargetProperties = ?? $objectType.AssignmentTargetProperties @("@odata.type","groupId","deviceAndAppManagementAssignmentFilterId","deviceAndAppManagementAssignmentFilterType") @@ -2417,8 +2443,7 @@ function Import-GraphObjectAssignment if($objectType.PostImportAssignmentsCommand) { & $objectType.PostImportAssignmentsCommand $obj $objectType $fromFile $objAssign - } - + } } #endregion @@ -2572,7 +2597,7 @@ function Add-GroupMigrationObject if(-not $groupObj) { # Get group info - $groupObj = Invoke-GraphRequest "/groups/$groupId" -ODataMetadata "none" + $groupObj = Invoke-GraphRequest "/groups/$groupId" -ODataMetadata "none" -NoError } if($groupObj) @@ -2587,9 +2612,13 @@ function Add-GroupMigrationObject $grouspPath = Join-Path $path "Groups" if(-not (Test-Path $grouspPath)) { mkdir -Path $grouspPath -Force -ErrorAction SilentlyContinue | Out-Null } $fileName = "$grouspPath\$((Remove-InvalidFileNameChars $groupObj.displayName)).json" - ConvertTo-Json $groupObj -Depth 50 | Out-File $fileName -Force + Save-GraphObjectToFile $groupObj $fileName } } + else + { + Write-Log "No group found with ID $($groupId). It might be deleted." 2 + } } function Add-GraphMigrationObject @@ -2626,7 +2655,7 @@ function Add-GraphMigrationObject $grouspPath = Join-Path $path "Groups" if(-not (Test-Path $grouspPath)) { mkdir -Path $grouspPath -Force -ErrorAction SilentlyContinue | Out-Null } $fileName = "$grouspPath\$((Remove-InvalidFileNameChars $graphObj.displayName)).json" - ConvertTo-Json $graphObj -Depth 50 | Out-File $fileName -Force + Save-GraphObjectToFile $graphObj $fileName } } } @@ -2769,7 +2798,7 @@ function Get-GraphMigrationObjectsFromFile { # ToDo: Create group from Json (could be a dynamic group) # Warn if synched group - $groupObj = (Get-Content -LiteralPath $groupFi.FullName) | ConvertFrom-Json + $groupObj = Get-GraphObjectFromFile $groupFi.FullName #isAssignableToRole - For Role assignment groupd. $keepProps = @("displayName","description","mailEnabled","mailNickname","securityEnabled","membershipRule","groupTypes", "membershipRuleProcessingState") @@ -3017,7 +3046,7 @@ function Export-GraphObject [switch]$SkipAddID, [switch]$PassThru) - if(-not $exportFolder) { return } + if(-not $exportFolder -or -not $objToExport -or -not $objectType) { return } Write-Status "Export $((Get-GraphObjectName $objToExport $objectType))" @@ -3057,14 +3086,7 @@ function Export-GraphObject } $fullPath = ([IO.Path]::Combine($exportFolder, (Remove-InvalidFileNameChars "$($fileName).json"))) - $json = $obj | ConvertTo-Json -Depth 50 - - if($global:Organization.Id) - { - $json = $json -replace $global:Organization.Id, "%OrganizationId%" - } - - $json | Out-File -LiteralPath $fullPath -Force + Save-GraphObjectToFile $obj $fullPath if($objectType.PostExportCommand) { @@ -3097,12 +3119,11 @@ function Set-GraphNavigationPropertiesFromFile } # Reload data from file. Some object properties was removed before import... - $objFileInfo = (ConvertFrom-Json (Get-Content -LiteralPath $navPropObject.File.FileInfo.FullName -Raw)) + $objFileInfo = Get-GraphObjectFromFile $navPropObject.File.FileInfo.FullName if(-not ($objFileInfo.PSObject.Properties | Where { $_.Name -like "#CustomRef_*" })) { return } Set-GraphNavigationProperties $navPropObject.ImportedObject $objFileInfo $navPropObject.File.ObjectType - } function Set-GraphNavigationProperties @@ -3264,6 +3285,7 @@ function Get-GraphBatchObjects $batchArr = @() $batchTotal = 0 $objectType = $null + foreach($obj in $objects) { $objectType = $obj.ObjectType @@ -3460,7 +3482,11 @@ function Import-GraphObject $newObj = (Invoke-GraphRequest -Url $strAPI -Content $json -HttpMethod $method @params) - if($newObj -and $method -eq "POST") + if($newObj -is [Boolean] -and $newObj -and $method -eq "PATCH") + { + $newObj = (Get-GraphObject -obj $obj -objectType $objectType -SkipAssignments).Object + } + elseif($newObj -and $method -eq "POST") { Write-Log "$($objectType.Title) object imported successfully with id: $($newObj.Id)" } @@ -4120,3 +4146,45 @@ function Get-GraphEntityTypeProperties $properties } + +function Get-GraphObjectFromFile +{ + param($fileName) + + if(-not $fileName) { return } + + if([System.IO.File]::Exists($fileName) -eq $false) + { + Write-LogDebug "File $fileName not found" 2 + return + } + + $json = Get-Content -LiteralPath $fileName -Raw + if($global:Organization.Id) + { + $json = $json -replace "%OrganizationId%",$global:Organization.Id + } + + $json | ConvertFrom-Json +} + +function Save-GraphObjectToFile +{ + param($obj, $fileName) + + $json = $obj | ConvertTo-Json -Depth 50 + + if($global:Organization.Id) + { + $json = $json -replace $global:Organization.Id, "%OrganizationId%" + } + + try + { + $json | Out-File -LiteralPath $fileName -Force -ErrorAction Stop + } + catch + { + Write-LogError "Failed to save file $fileName" $_.Exception + } +} diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 37ffa84..40790a5 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,4 +1,38 @@ # Release Notes +## 3.7.4 - 2022-11-17 + +**Fixes** + +Lots of these issues are based on [Issue 94](https://github.com/Micke-K/IntuneManagement/issues/94)
+Thank you **Dominique** for all the amazing help with testing!
+ + +- **Import/Export**
+ - Added support for Export of TermsOfUse PDF files
+ Based on [Issue 27](https://github.com/Micke-K/IntuneManagement/issues/27)
+ - Fixed an issue where it failed to import .intunewin files during bulk import
+ - Fixed issue with importing Edge app assignments
+ - Changed the order for Bulk delete to make sure policies are deleted in the correct order
+ - Lots of logging fixes for Bulk Export - Logged error when exporting object types not used
+ - Business Store Apps will not be delete - Not supported
+ - No import of assignments for default policies (Enrollment Status Page and Enrolment Restrictions)
+ - Lots of logging fixes for Bulk Delete - Errors if deleting default policies, trying to delete object types that were not used etc.
+ +- **Documentation**
+ - Added intent for Win32 Assignments
+ Based on [Issue 98](https://github.com/Micke-K/IntuneManagement/issues/98)
+ - Fixed an error when documenting Assignments for Win32 apps - Invoke-WordTranslateColumnHeader was missing/removed
+ Based on [Issue 99](https://github.com/Micke-K/IntuneManagement/issues/99)
+
+ + +- **Logging**
+ - Added additional response error information if it failed to call a Graph API
+ - Missing groups will now only generate a warning instead of Graph API error
+ - No error for users without a profile photo
+ +
+
## 3.7.3 - 2022-10-24 **Fixes**