Compare commits

..
55 Commits
Author SHA1 Message Date
Mikael Karlsson fb819949f5 Restore LF line endings in Core.psm1 and EndpointManager.psm1
The commit for issue #428 re-saved both files with CRLF, so every line showed
as changed against master, which stores them with LF like the rest of the
repository. Content is untouched; only the line endings return to LF.
2026-09-23 19:53:35 +10:00
Mikael Karlsson f96037a9d0 3.11.0: system browser sign-in, update check limited to 3.x, GitHub templates 2026-09-23 19:48:02 +10:00
Mikael Karlsson 0492b784a1 Added support for System Broswer login 2026-08-14 21:56:06 +10:00
Mikael Karlsson 65ef411e20 Fixed Issue #428 2026-08-14 21:40:48 +10:00
Mikael Karlsson b6b9e9e34c 3.10.3.1 2026-05-12 19:40:20 +10:00
Mikael Karlsson bd84a61522 3.10.3 2026-05-12 19:39:29 +10:00
Mikael Karlsson e09b3f71fa 3.10.1.19
Added support for importing Win32 app with Install/Uninstall script.
2026-04-11 15:09:39 +10:00
Mikael Karlsson 836c8a0c2e 3.10.1.18
Fixed issues: 402, 403 and 404
Added support for Install/Uninstall Script on Win32 apps
Rebuilt Strings
2026-03-07 14:01:52 +11:00
Mikael Karlsson b6c94e78d5 3.10.1.17
Issue 400 - Country names when documenting named locations
2026-02-22 20:40:45 +11:00
Mikael Karlsson e242865ef4 3.10.1.16
Issue 378 - Fixed issue when "Sort Json Properties" is enabled. Arrays were broken e.g. empty array ended up as null and single item ended up as string. This broke export/import of Conditional Access policies.
2026-01-26 22:08:24 +11:00
Mikael Karlsson f7043ae4a2 3.10.1.15
Issue 306 - Add additional support for clearing cache during Export/Import
2025-12-14 19:15:17 +11:00
Mikael Karlsson 71bb111a00 3.10.1.14
Issue 387 - Add support for Windows Update Profiles
2025-12-13 17:06:17 +11:00
Mikael Karlsson 9ca756bfed 3.10.1.13
Issue 383 - Fixed issue with document bool values in App Config with XML settings.
2025-12-07 21:23:01 +11:00
Mikael Karlsson 4053b5c672 3.10.1.12
Issue 380 - XML formatting
2025-11-25 21:25:26 +11:00
Mikael Karlsson 469408d29f 3.10.1.11
Issue 380 - Additional format of XML for ADMX and Reg value
2025-11-25 20:14:00 +11:00
Mikael Karlsson 7b87325776 3.10.1.10
Issue 380 - ADMX Import / Reg Values fails because of XML format.
2025-11-24 21:56:42 +11:00
Mikael Karlsson 7657fac645 3.10.1.9
Issue 378 - Add support for sorting exported json files.
2025-11-23 17:08:27 +11:00
Mikael Karlsson 37700847b5 3.10.1.8
Issue 381 - Fix issue with Device Categories and Expand Assignments enabled.
2025-11-20 22:32:54 +11:00
Mikael Karlsson e37a44dd87 3.10.1.7
Issue 375 - Additional error handling in the Word output provider.
2025-11-13 20:24:03 +11:00
Mikael Karlsson cd26450a10 3.10.1.6
Issues 375 - Add support for Strict Open XML document
2025-11-11 18:59:35 +11:00
Mikael Karlsson f1fdf5c078 3.10.1.5
Issue 367
2025-10-15 09:54:33 +11:00
Mikael Karlsson 03b27b1775 3.10.1.4
Issue 364 - Paging issues
Issue 367 - Login with App in UI
2025-10-11 13:40:24 +11:00
Mikael Karlsson 9bb966015e 3.10.1.3
Issue 364 - Conditional Access policies does not support paging.
2025-09-28 14:20:28 +10:00
Mikael Karlsson 286f238fde 3.10.1.1
Issue 364 - Failed to create group caused by wrong mailNickname
2025-09-23 20:18:22 +10:00
Mikael Karlsson 8368af379f 3.10.1.1
Fix Issue 364 - Conditional Access does not return Next page. Fall back to default for now.
2025-09-14 18:57:39 +10:00
Mikael Karlsson 485a9de855 3.10.1 2025-09-14 14:15:15 +10:00
Mikael Karlsson 951b583dd2 3.10.0.11
Added full support for BIOS Config polices eg export and edit file + documentation
2025-08-09 13:30:51 +10:00
Mikael Karlsson f27175d543 3.10.0.10
Added support for BIOS Confiuration policies
2025-08-06 20:19:13 +10:00
Mikael Karlsson 1ab13bf2dd 3.10.0.9
Fixed issue with Not Configured for Custom Compliance script.
Added option to skip date when generating MD document.
2025-08-03 20:42:46 +10:00
Mikael Karlsson 8952e2894a 3.10.0.8
Fix renaming Settings Catalog policies
2025-08-03 20:12:34 +10:00
Mikael Karlsson a0bac61ba4 Merge pull request #339 from MrR0bert/FixExportDirectoryNaming
Add Trim() to sanitize the organization displayName property
2025-08-03 19:12:08 +10:00
Mikael Karlsson 8fab983b25 Merge pull request #347 from brefra/Fix-Upload
Fix .intunewin uploads when using powershell 7.4+
2025-08-03 19:06:36 +10:00
Frank 6f6eba6959 Fix content upload at powershell 7.4+ 2025-07-29 21:08:56 +02:00
Mikael Karlsson b69cc227a4 3.10.0.7
Fixed issue with ADMX import and different enum format
Fixed issue with skipping Not Configured for Compliance Policies
Added support for documenting Compliance Policy V2 (Linux)
2025-07-28 21:11:17 +10:00
Mikael Karlsson 4253901249 3.10.0.6
Fixed import order for Compliance Scripts
2025-07-16 04:23:32 +10:00
Robert Kooistra cfb0e5f6e4 Moved trim of org displayName to the moment it is loaded instead of where it's used 2025-06-24 10:07:17 +02:00
MrR0b3rt 125d2e2b44 Forgot brackets before calling Trim() 2025-06-23 15:10:33 +02:00
MrR0b3rt 95c38a2b3d Add Trim() to sanitize the organization displayName property 2025-06-23 14:29:07 +02:00
Mikael Karlsson 9586ffb3fa 3.10.0.5
Removed deviceStates property for Conditional Access policy import. The property is depricated
2025-06-17 02:04:35 +10:00
Mikael Karlsson 5984acfca0 3.10.0.4
Fixed issue with Word Interop not loading
Added support for PDF output
2025-05-25 21:07:57 +10:00
Mikael Karlsson e1328ac7dd 3.10.0.3
Added documenting for file content eg MacOS Custom Settings
2025-05-03 15:42:03 +10:00
Mikael Karlsson 968fb4866c 3.10.0.2
Fixed issue with importing Security Baseline 24H2.
2025-04-19 14:53:57 +10:00
Mikael Karlsson 2169e91c9c 3.10.0
Fixed bad trimming
2025-03-16 20:59:19 +11:00
Mikael Karlsson ad5d6df95e 3.10.0
Added additional logging
2025-03-16 20:59:01 +11:00
Mikael Karlsson 9232769d5b Fixed Compare Issues
Fixed issues with Compare and Settings Catalog
2025-03-09 19:57:41 +11:00
Mikael Karlsson 06ab2c2023 Paging issues
Device settings does not return next page so get top 500
Found a rare issue where Settings Catalog could return next page after all items were returned. This caused the app to crash when scrolling the list.
2025-03-01 12:08:16 +11:00
Mikael Karlsson 8601a5b38e Initial 3.10.0 upload 2025-02-22 21:52:13 +11:00
Mikael Karlsson 17e9b786be Merge pull request #296 from Mykhailo-Roit/master
feat: replace_with_assignments import type
2025-01-12 17:20:36 +11:00
Mikael Karlsson e2c40b0a67 Merge pull request #290 from Systems-Liam/patch-1
Update DocumentationWordOptions.xaml
2025-01-12 17:17:14 +11:00
Mykhailo-Roit 381967c8cf fix conditions 2025-01-09 15:40:21 +02:00
Mykhailo-Roit 28022615a1 feat: add tooltip description for 'Replace with assignments' option in import forms 2025-01-08 18:58:36 +02:00
Mykhailo-Roit ff539f9ec1 feat: replace_with_assignments import type 2025-01-08 18:45:48 +02:00
Liam 7bab923a1f Update DocumentationWordOptions.xaml
Update typo on line 251.  Ducument to Document
2025-01-04 21:36:09 +00:00
Mikael Karlsson 4deea9a051 Updated release date 2024-10-12 12:54:40 +11:00
Mikael Karlsson c6fcf58d4d 3.9.8 2024-10-12 12:53:24 +11:00
123 changed files with 117171 additions and 121180 deletions
+39
View File
@@ -0,0 +1,39 @@
title: ""
body:
- type: markdown
attributes:
value: |
Ideas is for shaping something before it becomes a request. Say what you
are trying to achieve rather than the control you picture, and it will be
clear whether the application should grow a feature or already has one.
- type: dropdown
id: version
attributes:
label: Which version are you using?
options:
- 4.0 beta
- 3.x
- Neither yet, just looking
validations:
required: true
- type: textarea
id: goal
attributes:
label: What are you trying to achieve?
validations:
required: true
- type: textarea
id: idea
attributes:
label: How do you picture it working?
- type: textarea
id: scale
attributes:
label: How often, and at what scale?
description: >
How many tenants, how many policies, how often you do it. Scale changes
the answer more than anything else here.
+64
View File
@@ -0,0 +1,64 @@
title: "[Question] "
labels: ["needs-triage"]
body:
- type: markdown
attributes:
value: |
Most questions here turn out to be one of four things: a sign-in method
the embedded window cannot complete, a list that looks short because the
version you are on stops paging, a permission the app registration does
not hold, or an object type that has no public Graph endpoint. The fields
below let that be spotted straight away.
- type: dropdown
id: version
attributes:
label: Version
options:
- 4.0 beta
- 3.x
validations:
required: true
- type: dropdown
id: signin
attributes:
label: How do you sign in?
options:
- Interactive, embedded window (the default in v3)
- Interactive, Web Account Manager (WAM)
- Interactive, system browser (the default in v4)
- Device code
- Application and secret
- Application and certificate
- Managed identity or federated credential
- Bring your own token
validations:
required: true
- type: dropdown
id: cloud
attributes:
label: Cloud
options:
- Public (commercial)
- US Government (GCC High)
- US Government (DoD)
- China (21Vianet)
validations:
required: true
- type: textarea
id: question
attributes:
label: What are you trying to do?
validations:
required: true
- type: textarea
id: tried
attributes:
label: What have you tried, and what happened?
description: >
Paste any error text here. **Remove tenant identifiers, user names and
tokens first.**
+4
View File
@@ -0,0 +1,4 @@
# GitHub renders this as the "Sponsor" button on the repository page
# (public repositories, default branch). Buy Me a Coffee takes the
# username, not the URL: https://buymeacoffee.com/MickeK
buy_me_a_coffee: MickeK
+116
View File
@@ -0,0 +1,116 @@
name: Bug report (version 3.x)
description: Something is wrong in the current release. Windows only.
title: "[3.x] "
labels: ["bug", "v3", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Version 3 stays supported until 4.0 leaves beta.
Before filing, check whether 4.0 already fixes it. Several long-standing
reports here are addressed there: sign-in with passkeys and other
phishing-resistant methods, lists that stopped at 20, 100 or a few
hundred objects, sovereign cloud sign-in, and running without a user
present. The 4.0 beta lives on the `v4` branch.
- type: checkboxes
id: preflight
attributes:
label: Before reporting
options:
- label: >
If my sign-in involves a passkey, security key, Windows Hello or a
phishing-resistant policy: I know the embedded sign-in window cannot
complete those, and I have said so below rather than reporting it as
a broken login.
required: true
- label: >
I searched existing issues and discussions, including closed ones.
required: true
- type: input
id: version
attributes:
label: Version
placeholder: 3.10.3
validations:
required: true
- type: dropdown
id: signin
attributes:
label: How did you sign in?
options:
- Interactive, embedded window (the default)
- Interactive, other
- Application and secret
- Application and certificate
- Not signed in / sign-in is the problem
validations:
required: true
- type: dropdown
id: cloud
attributes:
label: Cloud
options:
- Public (commercial)
- US Government (GCC High)
- US Government (DoD)
- China (21Vianet)
validations:
required: true
- type: input
id: powershell
attributes:
label: PowerShell version
description: Run `$PSVersionTable.PSVersion`.
placeholder: "5.1.22621.4391"
validations:
required: true
- type: dropdown
id: area
attributes:
label: Which part of the application?
options:
- Sign-in and authentication
- Export
- Import
- Copy
- Compare
- Documentation output
- Assignments, groups or filters
- Bulk or silent operations
- ADMX or tools
- The user interface itself
- Something else
validations:
required: true
- type: textarea
id: what
attributes:
label: What happened, and what did you expect instead?
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
validations:
required: true
- type: textarea
id: log
attributes:
label: Log
description: >
The relevant lines, or the error text. **Remove tenant identifiers, user
names, access tokens and secrets before pasting.**
render: text
validations:
required: true
+154
View File
@@ -0,0 +1,154 @@
name: Bug report (version 4.0 beta)
description: Something is wrong in 4.0. Runs on Windows, macOS and Linux.
title: "[4.0] "
labels: ["bug", "v4", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Thanks for testing the beta. Four fields below do most of the work:
**how you signed in**, **which cloud**, **which operating system** and
**the log**. Reports without them usually need a round trip before
anything can happen.
- type: checkboxes
id: preflight
attributes:
label: Before reporting
description: These three cover the majority of beta reports so far.
options:
- label: >
I read the release notes for this beta, including the breaking changes.
required: true
- label: >
If my sign-in involves a passkey, security key, Windows Hello or any
phishing-resistant policy: I enabled **Use Web Account Manager (WAM)
for login** or **Use system browser for login** in Settings, and tried
again. The embedded window cannot complete those methods.
required: true
- label: >
My problem is not Inventory Policies returning 403. That endpoint is
not published on the public Graph API, so the application cannot read
it with a normal sign-in. It is a Microsoft limitation, not a bug.
A bring-your-own-token sign-in can reach it.
required: true
- type: input
id: version
attributes:
label: Version
description: The About dialog, or the ModuleVersion in IntuneManagement.psd1.
placeholder: 4.0.0-beta1
validations:
required: true
- type: dropdown
id: signin
attributes:
label: How did you sign in?
description: >
The single most useful field in this form. Roughly a third of all reports
on this project have turned out to be sign-in behaviour rather than the
feature being reported.
options:
- Interactive, embedded window
- Interactive, Web Account Manager (WAM)
- Interactive, system browser (the default)
- Device code
- Application and secret
- Application and certificate
- Managed identity or federated credential
- Bring your own token
- Not signed in / sign-in is the problem
validations:
required: true
- type: dropdown
id: cloud
attributes:
label: Cloud
options:
- Public (commercial)
- US Government (GCC High)
- US Government (DoD)
- China (21Vianet)
validations:
required: true
- type: dropdown
id: os
attributes:
label: Operating system
description: 4.0 runs the full application outside Windows, so this now matters.
options:
- Windows
- macOS (Apple Silicon)
- macOS (Intel)
- Linux
validations:
required: true
- type: input
id: powershell
attributes:
label: PowerShell edition and version
description: Run `$PSVersionTable.PSVersion` and `$PSVersionTable.PSEdition`.
placeholder: "7.4.6, Core"
validations:
required: true
- type: dropdown
id: area
attributes:
label: Which part of the application?
options:
- Sign-in and authentication
- Export
- Import
- Copy
- Compare
- Documentation output
- Assignments, groups or filters
- Bulk operations
- ADMX or tools
- The user interface itself
- Automation through the PowerShell commands
- Something else
validations:
required: true
- type: input
id: objecttype
attributes:
label: Which object type, if it is specific to one
placeholder: Settings Catalog, Conditional Access, Win32 app, ...
- type: textarea
id: what
attributes:
label: What happened, and what did you expect instead?
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: |
1. Sign in to ...
2. Open ...
3. Click ...
validations:
required: true
- type: textarea
id: log
attributes:
label: Log
description: >
The relevant lines from the log file, or the error text. **Remove tenant
identifiers, user names, access tokens and secrets before pasting.** If
an exported policy file is needed, redact it or use one from a lab tenant.
render: text
validations:
required: true
+17
View File
@@ -0,0 +1,17 @@
# Turns off the "open a blank issue" escape hatch, so every report arrives
# through a form with the fields that make it answerable. Questions go to
# Discussions, which is where most of them already end up.
blank_issues_enabled: false
contact_links:
- name: Question, or not sure it is a bug
url: https://github.com/Micke-K/IntuneManagement/discussions/categories/q-a
about: Ask in Q&A. Most "it does not show my policies" reports are answered there in a day.
- name: Feature idea worth discussing first
url: https://github.com/Micke-K/IntuneManagement/discussions/categories/ideas
about: Ideas that are still taking shape belong here. A concrete request can go straight to an issue.
- name: Version 4.0 beta feedback
url: https://github.com/Micke-K/IntuneManagement/discussions/categories/announcements
about: Testing the 4.0 beta? Start at the pinned announcement, which lists what to try first.
- name: Security vulnerability
url: https://github.com/Micke-K/IntuneManagement/security/advisories/new
about: Never report a security problem in a public issue. Use private reporting.
+71
View File
@@ -0,0 +1,71 @@
name: Feature request
description: Something the application should do and does not.
title: "[Request] "
labels: ["enhancement", "needs-triage"]
body:
- type: markdown
attributes:
value: |
If the idea is still taking shape, [Ideas in
Discussions](https://github.com/Micke-K/IntuneManagement/discussions/categories/ideas)
is the better room. Use this form when you can describe the outcome you
want.
- type: dropdown
id: version
attributes:
label: Which version is this for?
description: >
This one is read by a human, not by automation, so say what you mean.
A request that 4.0 already covers is worth checking against the release
notes first.
options:
- Version 4.0
- Version 3.x
- Either
validations:
required: true
- type: textarea
id: problem
attributes:
label: What are you trying to do?
description: >
The situation, not the solution. "I move policies between two tenants
every month and have to redo the assignments by hand" tells more than
"add a button".
validations:
required: true
- type: textarea
id: proposal
attributes:
label: What would you like it to do?
validations:
required: true
- type: textarea
id: workaround
attributes:
label: How do you handle it today?
description: Including "not at all", which is useful to know.
- type: dropdown
id: area
attributes:
label: Which part of the application?
options:
- Export
- Import
- Copy
- Compare
- Documentation output
- Assignments, groups or filters
- Bulk operations
- ADMX or tools
- The user interface
- Automation through the PowerShell commands
- A policy type that is not supported yet
- Something else
validations:
required: true
+47
View File
@@ -0,0 +1,47 @@
<!--
Target branch
Fixing version 3? target Development
Fixing version 4? target v4
A pull request opened against the default branch is retargeted to
Development before review. Use the Edit button next to the title.
-->
<!--
How version 4 changes are applied during the beta
Version 4 is developed elsewhere and the v4 branch is published as one
snapshot per release, not as a running history. An accepted change is
applied upstream and appears in the next release, so your commit will not
show up in this branch. You are credited in the release notes instead.
Nothing is lost, and nothing needs doing on your side.
-->
## What does this change?
<!-- One or two sentences. What was wrong, or what is now possible. -->
## Related issue
<!-- "Fixes #123", or "none" if there isn't one. -->
## How was it tested?
<!--
Which version, which cloud, and which operating system, since 4.0 runs on
three. If it touches sign-in, say which method you used: embedded window,
Web Account Manager, system browser, device code, or an application identity.
-->
- Version:
- Cloud:
- Operating system and PowerShell version:
- Tests run:
## Anything a reviewer should know
<!--
Behaviour that changes for existing users, a setting that moves, a file format
that shifts. Say so here rather than leaving it to be discovered.
-->
+3
View File
@@ -8,5 +8,8 @@
/*.new
/*.old
/Extensions/*.zip
Extensions_dev/
.gitignore
CloudAPIPowerShellManagement.log
AGENTS.md
CLAUDE.md
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -12,7 +12,7 @@
RootModule = 'CloudAPIPowerShellManagement.psm1'
# Version number of this module.
ModuleVersion = '3.9.7'
ModuleVersion = '3.11.0'
# Supported PSEditions
# CompatiblePSEditions = @()
+53 -1
View File
@@ -85,7 +85,12 @@ function Initialize-CloudAPIManagement
[string]
$secret,
[string]
$certificate
$certificate,
[string]
$GraphEnvironment,
[string]
$GCCType
)
$PSModuleAutoloadingPreference = "none"
@@ -102,10 +107,57 @@ function Initialize-CloudAPIManagement
if($tenantId)
{
Write-Host "Using Tenant Id: $tenantId"
$global:AzureAppId = $appId
$global:ClientSecret = $secret
$global:ClientCert = $certificate
$global:UseGraphEnvironment = $GraphEnvironment
$global:UseGCCType = $GCCType
if($global:AzureAppId)
{
Write-Host "Using Azure App Id: $($global:AzureAppId)"
}
else
{
Write-Warning "Azure App Id is missing. Use -AppId <AppID> on the command line"
}
if($global:ClientSecret -or $global:ClientCert)
{
if($global:ClientSecret)
{
Write-Host "Using Azure App Secret"
}
else
{
Write-Host "Using Azure App Certificate"
}
}
else
{
Write-Warning "Azure App Secret or Certificate is missing. Use -Secret <Secret> or -Certificate <Certificate> on the command line"
}
if($global:UseGraphEnvironment)
{
Write-Host "Using Azure Graph Environment: $($global:UseGraphEnvironment)"
}
if($global:UseGCCType)
{
Write-Host "Using Graph Environment type: $($global:UseGCCType)"
}
}
elseif($secret)
{
$global:ClientSecret = $secret
}
if($certificate)
{
$global:ClientCert = $certificate
}
if($global:hideUI -ne $true)
{
+108 -41
View File
@@ -86,8 +86,12 @@ function Start-CoreApp
Write-Log "#####################################################################################"
Write-Log "PowerShell version: $($PSVersionTable.PSVersion.ToString())"
if($PSVersionTable.BuildVersion) {
Write-Log "PowerShell build: $($PSVersionTable.BuildVersion.ToString())"
}
if($PSVersionTable.CLRVersion) {
Write-Log "PowerShell CLR: $($PSVersionTable.CLRVersion.ToString())"
}
Write-Log "PowerShell edition: $($PSVersionTable.PSEdition)"
try
@@ -344,6 +348,14 @@ function Write-LogError
}
Write-Log $Text 3
if((Get-SettingValue "ShowStackTrace") -eq $true)
{
Write-Log "Stack trace:`n $($Exception.StackTrace)"
Write-Log "Script stack trace:`n $($Exception.ScriptStackTrace)"
}
}
function Write-Status
@@ -648,7 +660,7 @@ function Show-AboutDialog
Set-XamlProperty $script:dlgAbout "lstModules" "ItemsSource" $loadedItems
Add-XamlEvent $script:dlgAbout "linkSource" "Add_RequestNavigate" ({ [System.Diagnostics.Process]::Start($_.Uri.AbsoluteUri); $_.Handled = $true })
Add-XamlEvent $script:dlgAbout "linkSource" "Add_RequestNavigate" ({ Start-Process $_.Uri.AbsoluteUri; $_.Handled = $true })
Show-ModalForm "About" $script:dlgAbout
}
@@ -665,6 +677,8 @@ function Show-UpdatesDialog
Show-ModalObject
}
Add-XamlEvent $script:dlgUpdates "linkSource" "Add_RequestNavigate" ({ Start-Process $_.Uri.AbsoluteUri; $_.Handled = $true })
$fileContent = Get-Content -Raw -Path ($global:AppRootFolder + "\ReleaseNotes.md")
try
{
@@ -685,7 +699,11 @@ function Show-UpdatesDialog
$params.Add("UseBasicParsing", $true)
}
$content = Invoke-RestMethod "https://api.github.com/repos/Micke-K/IntuneManagement/contents/ReleaseNotes.md" @params
# The notes at the newest 3.x release tag, never at the default branch: that
# branch will carry version 4 once the branches are renamed.
$latestVer = Get-LatestGitHubVersion $params
$notesRef = if($latestVer) { "?ref=$($latestVer.ToString())" } else { "" }
$content = Invoke-RestMethod "https://api.github.com/repos/Micke-K/IntuneManagement/contents/ReleaseNotes.md$notesRef" @params
if($content)
{
$txt = [System.Text.Encoding]::UTF8.GetString(([System.Convert]::FromBase64String($content.content)))
@@ -710,6 +728,37 @@ function Show-UpdatesDialog
Show-ModalForm "Release Notes" $script:dlgUpdates -HideButtons
}
# Newest published 3.x release on GitHub, or $null.
#
# releases/latest answers the newest release of ANY version. The day 4.0.0 is
# published it would tell every 3.x installation to upgrade to a breaking
# change, and reading the manifest on the default branch stops working once the
# branches are renamed for version 4. The releases list filtered to this major
# is the one source that survives both. Pre-releases and drafts are skipped.
function Get-LatestGitHubVersion
{
param($Params = @{})
$latest = $null
try
{
$releases = Invoke-RestMethod "https://api.github.com/repos/Micke-K/IntuneManagement/releases?per_page=100" @Params
foreach($release in @($releases))
{
if($release.draft -or $release.prerelease) { continue }
$ver = $null
try { $ver = [version](([string]$release.tag_name) -replace '^v','') } catch { continue }
if($ver.Major -ne 3) { continue }
if($null -eq $latest -or $ver -gt $latest) { $latest = $ver }
}
}
catch
{
Write-Log "Failed to list GitHub releases: $($_.Exception.Message)" 2
}
return $latest
}
function Get-IsLatestVersion
{
if($global:MainAppStarted -ne $true)
@@ -728,35 +777,7 @@ function Get-IsLatestVersion
$params.Add("UseBasicParsing", $true)
}
$content = Invoke-RestMethod "https://api.github.com/repos/Micke-K/IntuneManagement/releases/latest" @params
if($content.Name)
{
try
{
$gitHubVer = [version]$content.Name
}
catch {}
}
if($null -eq $gitHubVer)
{
$params = @{}
$proxyURI = Get-ProxyURI
if($proxyURI)
{
$params.Add("proxy", $proxyURI)
$params.Add("UseBasicParsing", $true)
}
$content = Invoke-RestMethod "https://api.github.com/repos/Micke-K/IntuneManagement/contents/CloudAPIPowerShellManagement.psd1" @params
$gitHubText = [System.Text.Encoding]::UTF8.GetString(([System.Convert]::FromBase64String($content.content)))
$gitHubInfo = Get-ModuleDataTable $gitHubText
try
{
$gitHubVer = [version]$gitHubInfo.ModuleVersion
}
catch {}
}
$gitHubVer = Get-LatestGitHubVersion $params
if(-not $gitHubVer)
{
@@ -1069,7 +1090,7 @@ function Get-Folder
{
if($global:WindowsAPICodePackLoaded -eq $false)
{
$apiCodec = Join-Path $global:AppRootFolder "Microsoft.WindowsAPICodePack.Shell.dll"
$apiCodec = Join-Path $global:AppRootFolder "Bin\Microsoft.WindowsAPICodePack.Shell.dll"
if([IO.File]::Exists($apiCodec))
{
Add-Type -Path $apiCodec | Out-Null
@@ -1100,7 +1121,7 @@ function Get-Folder
{
$dlgCOFD.InitialDirectory = $path
}
if($dlgCOFD.ShowDialog($window) = [Microsoft.WindowsAPICodePack.Dialogs.CommonFileDialogResult]::Ok)
if($dlgCOFD.ShowDialog($window) -eq [Microsoft.WindowsAPICodePack.Dialogs.CommonFileDialogResult]::Ok)
{
$dlgCofd.FileName
}
@@ -1398,7 +1419,7 @@ function Remove-Setting
try
{
$temp = Get-Item -LiteralPath $regPath -ErrorAction SilentlyContinue
if(($temp.Property -contains $Key))
if(($temp -and $temp.Property -contains $Key))
{
Remove-ItemProperty -Path $regPath -Name $Key -Force -ErrorAction Stop
}
@@ -1412,7 +1433,7 @@ function Remove-Setting
function Get-Setting
{
param($SubPath = "", $Key = "", $defautValue)
param($SubPath = "", $Key = "", $defaultValue)
if(-not $key)
{
@@ -1477,7 +1498,7 @@ function Get-Setting
if(-not $val)
{
$defautValue
$defaultValue
}
else
{
@@ -1700,7 +1721,11 @@ function Add-SettingsItem
{
if($settingValue.Description)
{
$descriptionInfo = "<Rectangle Style=`"{DynamicResource InfoIcon}`" ToolTip=`"$($settingValue.Description)`" Margin=`"5,0,0,0`" />"
$descriptionInfo = "<Rectangle Style=`"{DynamicResource InfoIcon}`" Margin=`"5,0,0,0`">" +
"<Rectangle.ToolTip><TextBlock>" +
$settingValue.Description +
"</TextBlock></Rectangle.ToolTip>" +
"</Rectangle>"
}
$xaml = @"
@@ -1990,6 +2015,14 @@ function Add-DefaultSettings
DefaultValue = $true
}) "General"
Add-SettingsObject (New-Object PSObject -Property @{
Title = "Show stack error"
Key = "ShowStackTrace"
Type = "Boolean"
Description = "Write exception stack trace info to the log."
DefaultValue = $false
}) "General"
Add-SettingsObject (New-Object PSObject -Property @{
Title = "Debug"
Key = "Debug"
@@ -2461,9 +2494,9 @@ function Get-MainWindow
{
$script:welcomeForm = Get-XamlObject ($global:AppRootFolder + "\Xaml\Welcome.xaml") -AddVariables
Add-XamlEvent $script:welcomeForm "gitHubLink" "Add_RequestNavigate" ({ [System.Diagnostics.Process]::Start($_.Uri.AbsoluteUri); $_.Handled = $true })
Add-XamlEvent $script:welcomeForm "licenseLink" "Add_RequestNavigate" ({ [System.Diagnostics.Process]::Start($_.Uri.AbsoluteUri); $_.Handled = $true })
Add-XamlEvent $script:welcomeForm "addCustomApp" "Add_RequestNavigate" ({ [System.Diagnostics.Process]::Start($_.Uri.AbsoluteUri); $_.Handled = $true })
Add-XamlEvent $script:welcomeForm "gitHubLink" "Add_RequestNavigate" ({ Start-Process $_.Uri.AbsoluteUri; $_.Handled = $true })
Add-XamlEvent $script:welcomeForm "licenseLink" "Add_RequestNavigate" ({ Start-Process $_.Uri.AbsoluteUri; $_.Handled = $true })
Add-XamlEvent $script:welcomeForm "addCustomApp" "Add_RequestNavigate" ({ Start-Process $_.Uri.AbsoluteUri; $_.Handled = $true })
Add-XamlEvent $script:welcomeForm "chkAcceptConditions" "add_click" {
$global:btnAcceptConditions.IsEnabled = ($this.IsChecked -eq $true)
@@ -2498,7 +2531,7 @@ function Get-MainWindow
if($appIdChangeInformed -ne "true") {
$script:oldAzureAppForm = Get-XamlObject ($global:AppRootFolder + "\Xaml\OldAzureApp.xaml")
Add-XamlEvent $script:oldAzureAppForm "addCustomApp" "Add_RequestNavigate" ({ [System.Diagnostics.Process]::Start($_.Uri.AbsoluteUri); $_.Handled = $true })
Add-XamlEvent $script:oldAzureAppForm "addCustomApp" "Add_RequestNavigate" ({ Start-Process $_.Uri.AbsoluteUri; $_.Handled = $true })
Add-XamlEvent $script:oldAzureAppForm "btnOK" "add_click" {
if((Get-XamlProperty $script:oldAzureAppForm "chkChangeApp" "IsChecked") -eq $true) {
@@ -2737,6 +2770,27 @@ function Format-XML
$StringWriter.ToString()
}
function Update-XmlFormatting {
[CmdletBinding()]
param(
[Parameter(Mandatory, ValueFromPipeline)]
[string]$Xml
)
process {
$Xml = $Xml -replace '<([^\s/>]+)([^>]*)\s/>' , '<$1$2/>'
$Xml = ($Xml -split "`r?`n") |
Where-Object { $_.Trim().Length -gt 0 } |
ForEach-Object { $_ } |
Out-String
$Xml = $Xml -replace "`r`n", "`n"
return $Xml.Trim()
}
}
function Show-LogView
{
if($script:LogViewObject -and -not $script:LogViewObject.ViewPanel)
@@ -2890,6 +2944,19 @@ function Get-DataGridValues
($dataGrid.ItemsSource | Select -Property $properties)
}
function Get-GUIDs
{
param($text)
$regExpGuid = "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"
$uniqueGuids = New-Object System.Collections.Generic.HashSet[String]
# Use regular expressions to extract the GUIDs
[regex]::Matches($text, $regExpGuid) | ForEach-Object { $uniqueGuids.Add($_.Value) | Out-Null }
$uniqueGuids
}
New-Alias -Name ?? -value Invoke-Coalesce
New-Alias -Name ?: -value Invoke-IfTrue
+69
View File
@@ -101,6 +101,75 @@ The json files contains a definition of each property to document. This includes
The `DocumentationCustom.psm1` file also takes care of custom documentation for some object types e.g. Conditional Access. App Configuration policies etc. These objects are documented via a PowerShell function in the script.
**dataTypes Reference**
The following `dataType` values are supported in property-based ObjectInfo json files:
| Value | Name | Description |
|---|---|---|
| `0` | Boolean | Translated via the `booleanActions` field |
| `1` | Base64 | Certificate or binary data decoded to a UTF-8 string; filename used if `filenameEntityKey` is set |
| `2` | Multiline String | Multiline text or XML decoded from Base64 if needed; stored to a payload file if `filenameEntityKey` is set |
| `3` | Image | Binary image; outputs "Image file" when a value is present |
| `4` | Linked Certificate | Certificate resolved via OData navigation link |
| `5` | Complex Options | Iterates child `complexOptions` as a sub-section |
| `6` | Complex Option (sub-property) | Iterates `complexOptions` resolved via `entityKey` sub-property |
| `7` | OMA DateTime | Raw OMA DateTime string |
| `8` | Sub-category | Sets the current sub-category label from `nameResourceKey` |
| `9` | Label / OData Type | Skipped — UI label or `@odata.type` property |
| `10` | Information Box | Skipped — UI-only information box |
| `11` | App Picker | Application picker |
| `12` | Multiline String Array | Array of strings joined with the object separator |
| `13` | Multi Option | Multiple selection; translated via `Invoke-TranslateMultiOption` |
| `14` | Int32 | 32-bit integer |
| `15` | Int64 | 64-bit integer |
| `16` | Option | Single-select option; translated via `Invoke-TranslateOption` |
| `19` | Option (variant) | Single-select option; translated via `Invoke-TranslateOption` |
| `20` | String | Plain string |
| `21` | Table | Sub-table; translated via `Invoke-TranslateTable` |
| `22` | Scale Value | Numeric value combined with a unit from `scaleOptions` (e.g. "4 Years") |
| `99` | Reserved | No-op placeholder |
| `100` | Duration | Custom `Edm.Duration` formatting via `Invoke-TranslateDuration` |
| `101` | Static Label | Language string taken from the `value` field |
| `102` | Culture Name | Language/culture name string |
| `103` | Boolean (hide on false) | Boolean via `booleanActions`; hides child properties when `false` |
| `104` | Multi Option Boolean | Multi-option via boolean; hides children when `false` |
| `105` | Multi Option Boolean (inverted) | Like `104` but treats `false` as the selected state |
| `106` | Language Array | Array of culture/language names joined with the object separator |
| `107` | Static Value | Literal string taken directly from the `value` field |
| `108` | String with Format | String formatted using the `formatStringKey` language template |
| `200` | Multi Option (language key) | Translated string looked up via `entityKey` as a language string ID |
**booleanActions Reference**
The `booleanActions` field controls the text shown for `true`/`false` values when `dataType` is `0`, `103`, `104`, or `105`.
Values `0`–`9` and `107`–`108` only display a custom label when `true`; a `false` value falls through to *Not Configured*.
| Value | `true` → | `false` → |
|---|---|---|
| `0` | Allow | *(Not Configured)* |
| `1` | Require | *(Not Configured)* |
| `2` | Enable | *(Not Configured)* |
| `3` | Block | *(Not Configured)* |
| `4` | Configured | *(Not Configured)* |
| `5` | Disable | *(Not Configured)* |
| `6` | Limit | *(Not Configured)* |
| `7` | Show | *(Not Configured)* |
| `8` | Hide | *(Not Configured)* |
| `9` | Yes | *(Not Configured)* |
| `100` | Block | Allow |
| `101` | Require | Not Required |
| `102` | Enable | Disable |
| `107` | Show | *(Not Configured)* |
| `108` | Hide | *(Not Configured)* |
| `109` | Yes | No |
| `110` | No | Yes |
| `120` | On | Off |
| `200` | Allow | Block |
| `201` | Not Required | Require |
| `220` | Off | On |
**Language Support**
The Settings based objects get their language strings from Graph APIs with a few exceptions.
+3 -1
View File
@@ -151,5 +151,7 @@
"149": "WiredNetwork",
"150": "DefenderAntivirus",
"151": "CustomCompliance",
"152": "IosDefenderAtp"
"152": "IosDefenderAtp",
"153": "WSLCompliance",
"154": "WindowsZtdns"
}
+28 -1
View File
@@ -314,6 +314,15 @@
]
},
{
"ObjectType": "#microsoft.graph.androidWorkProfileMigrationConfiguration",
"PolicyType": "AndroidForWorkMigrationPolicy",
"PolicyTypeLanguageId": "androidForWorkMigrationPolicy",
"PlatformLanguageId": "AndroidForWork",
"Categories": [
]
},
{
"ObjectType": "#microsoft.graph.androidForWorkVpnConfiguration",
"PolicyType": "AndroidForWorkVpn",
@@ -470,7 +479,7 @@
]
},
{
"ObjectType": "#microsoft.graph.hardwareConfiguration",
"ObjectType": "#microsoft.graph.hardwareConfigurations",
"PolicyType": "HardwareConfigurations",
"PolicyTypeLanguageId": "hardwareConfigurations",
"PlatformLanguageId": "Windows10",
@@ -625,6 +634,15 @@
]
},
{
"ObjectType": "#microsoft.graph.iosWiredNetworkConfiguration",
"PolicyType": "IosWiredNetwork",
"PolicyTypeLanguageId": "wiredNetwork",
"PlatformLanguageId": "Ios",
"Categories": [
]
},
{
"ObjectType": "#microsoft.graph.iosEnterpriseWiFiConfiguration",
"PolicyType": "IosWiFi",
@@ -1197,6 +1215,15 @@
"HealthMonitoring"
]
},
{
"ObjectType": "#microsoft.graph.windowsZtdnsConfiguration",
"PolicyType": "Windows10Ztdns",
"PolicyTypeLanguageId": "windowsZeroTrustDns",
"PlatformLanguageId": "Windows10",
"Categories": [
]
},
{
"ObjectType": "#microsoft.graph.windows10XWifiConfiguration",
"PolicyType": "Windows10XWifi",
+102
View File
@@ -855,22 +855,124 @@
]
},
"complexOptions": [
{
"nameResourceKey": "Win32Program.installerTypeText",
"descriptionResourceKey": "",
"entityKey": "installerType",
"dataType": 20,
"booleanActions": 0,
"category": "Win32Program.selectorLabel",
"Children": [
{
"nameResourceKey": "Win32Program.installCommand",
"descriptionResourceKey": "",
"entityKey": "installCommandLine",
"dataType": 20,
"booleanActions": 0,
"category": "Win32Program.selectorLabel",
"Condition": {
"Expressions": [
{
"property": "installCommandLine"
}
]
}
},
{
"nameResourceKey": "Win32Program.installScript",
"descriptionResourceKey": "",
"entityKey": "activeInstallScript",
"dataType": 6,
"booleanActions": 0,
"category": "Win32Program.selectorLabel",
"complexOptions": [
{
"nameResourceKey": "TableHeaders.scriptName",
"descriptionResourceKey": "",
"entityKey": "scriptName",
"dataType": 20,
"booleanActions": 0,
"category": "Win32Program.selectorLabel"
},
{
"nameResourceKey": "Win32Requirements.AdditionalRequirements.Script.enforceSignatureCheck",
"descriptionResourceKey": "Win32Requirements.AdditionalRequirements.Script.enforceSignatureCheckTooltip",
"entityKey": "enforceSignatureCheck",
"dataType": 0,
"booleanActions": 109,
"category": "Win32Program.selectorLabel"
},
{
"nameResourceKey": "DetectionRules.CustomScript.runAs32Bit",
"descriptionResourceKey": "DetectionRules.CustomScript.runAs32BitTooltip",
"entityKey": "runAs32Bit",
"dataType": 0,
"booleanActions": 109,
"category": "Win32Program.selectorLabel"
}
]
}
]
},
{
"nameResourceKey": "Win32Program.uninstallerTypeText",
"descriptionResourceKey": "",
"entityKey": "uninstallerType",
"dataType": 20,
"booleanActions": 0,
"category": "Win32Program.selectorLabel",
"Children": [
{
"nameResourceKey": "Win32Program.uninstallCommand",
"descriptionResourceKey": "",
"entityKey": "uninstallCommandLine",
"dataType": 20,
"booleanActions": 0,
"category": "Win32Program.selectorLabel",
"Condition": {
"Expressions": [
{
"property": "uninstallCommandLine"
}
]
}
},
{
"nameResourceKey": "Win32Program.uninstallScript",
"descriptionResourceKey": "",
"entityKey": "activeUninstallScript",
"dataType": 6,
"booleanActions": 0,
"category": "Win32Program.selectorLabel",
"complexOptions": [
{
"nameResourceKey": "TableHeaders.scriptName",
"descriptionResourceKey": "",
"entityKey": "scriptName",
"dataType": 20,
"booleanActions": 0,
"category": "Win32Program.selectorLabel"
},
{
"nameResourceKey": "Win32Requirements.AdditionalRequirements.Script.enforceSignatureCheck",
"descriptionResourceKey": "Win32Requirements.AdditionalRequirements.Script.enforceSignatureCheckTooltip",
"entityKey": "enforceSignatureCheck",
"dataType": 0,
"booleanActions": 109,
"category": "Win32Program.selectorLabel"
},
{
"nameResourceKey": "DetectionRules.CustomScript.runAs32Bit",
"descriptionResourceKey": "DetectionRules.CustomScript.runAs32BitTooltip",
"entityKey": "runAs32Bit",
"dataType": 0,
"booleanActions": 109,
"category": "Win32Program.selectorLabel"
}
]
}
]
},
{
"nameResourceKey": "",
"descriptionResourceKey": "",
@@ -0,0 +1,34 @@
[
{
"nameResourceKey": "TableHeaders.configurationType",
"descriptionResourceKey": "",
"entityKey": "PolicyType.hardwareConfigurations",
"dataType": 200,
"booleanActions": 0,
"category": 1000
},
{
"nameResourceKey": "HardwareConfig.Settings.Tab.Configurations.hardware",
"descriptionResourceKey": "",
"entityKey": "vendor",
"dataType": 20,
"booleanActions": 0,
"category": "SettingDetails.configurations"
},
{
"nameResourceKey": "HardwareConfig.Settings.Tab.Configurations.perDevicePassword",
"descriptionResourceKey": "",
"entityKey": "perDevicePasswordDisabled",
"dataType": 109,
"booleanActions": 9,
"category": "SettingDetails.configurations"
},
{
"nameResourceKey": "HardwareConfig.Settings.Tab.Configurations.file",
"descriptionResourceKey": "",
"entityKey": "fileName",
"dataType": 20,
"booleanActions": 0,
"category": "SettingDetails.configurations"
}
]
@@ -11,14 +11,22 @@
"nameResourceKey": "EnrollmentStatusScreen.progressToggle",
"descriptionResourceKey": "",
"entityKey": "showInstallationProgress",
"dataType": 0,
"dataType": 16,
"booleanActions": 109,
"category": "TableHeaders.settings"
"category": "TableHeaders.settings",
"options": [
{
"nameResourceKey": "SettingDetails.no",
"value": "false"
},
{
"nameResourceKey": "BooleanActions.yes",
"value": "true",
"Children": [
{
"nameResourceKey": "EnrollmentStatusScreen.timeout",
"descriptionResourceKey": "",
"entityKey": "installProgressTimeoutInMinutes",
"entityKey": "InstallProgressTimeout",
"dataType": 14,
"booleanActions": 0,
"category": "TableHeaders.settings"
@@ -27,10 +35,18 @@
"nameResourceKey": "EnrollmentStatusScreen.customMessageToggle",
"descriptionResourceKey": "",
"entityKey": "showCustomErrorMessage",
"dataType": 0,
"dataType": 16,
"booleanActions": 109,
"category": "TableHeaders.settings"
"category": "TableHeaders.settings",
"options": [
{
"nameResourceKey": "SettingDetails.no",
"value": "false"
},
{
"nameResourceKey": "BooleanActions.yes",
"value": "true",
"Children": [
{
"nameResourceKey": "EnrollmentStatusScreen.customMessageTextBox",
"descriptionResourceKey": "",
@@ -38,6 +54,10 @@
"dataType": 20,
"booleanActions": 0,
"category": "TableHeaders.settings"
}
]
}
]
},
{
"nameResourceKey": "EnrollmentStatusScreen.collectLogToggle",
@@ -93,10 +113,24 @@
"entityKey": "waitForApps",
"dataType": 14,
"booleanActions": 0,
"category": "TableHeaders.settings",
"Children": [
{
"nameResourceKey": "EnrollmentStatusScreen.Apps.allowNonBlockingAppInstallation",
"descriptionResourceKey": "",
"entityKey": "allowNonBlockingAppInstallation",
"dataType": 0,
"booleanActions": 109,
"category": "TableHeaders.settings"
}
]
}
]
}
]
}
]
}
]
}
]
@@ -85,11 +85,37 @@
"enabled": true
},
{
"dataType": 0,
"dataType": 16,
"category": 2,
"nameResourceKey": "publicPlayStoreEnabledName",
"descriptionResourceKey": "publicPlayStoreEnabledDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "publicPlayStoreSelectionNotConfigured",
"value": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "publicPlayStoreSelectionAllowList",
"value": "allowList",
"enabled": true
},
{
"nameResourceKey": "publicPlayStoreSelectionBlockList",
"value": "blockList",
"enabled": true
}
],
"entityKey": "playStoreMode",
"booleanActions": 0,
"defaultValue": "notConfigured",
"unconfiguredValue": "notConfigured",
"policyType": 2,
"enabled": true
},
{
"dataType": 10,
"category": 2,
@@ -103,16 +129,6 @@
"booleanActions": 0,
"policyType": 2,
"enabled": true
}
],
"options": [
],
"entityKey": "publicPlayStoreEnabled",
"booleanActions": 0,
"defaultValue": false,
"policyType": 2,
"enabled": true
},
{
"columns": [
@@ -1,5 +1,11 @@
{
"customcompliance_compliancewindows10": {
"dataType": 0,
"category": 151,
"nameResourceKey": "AdminConfiguredComplianceSettingName",
"descriptionResourceKey": "CustomComplianceToolTip",
"childSettings": [
{
"dataType": 25,
"category": 151,
"childSettings": [
@@ -8,8 +14,19 @@
"options": [
],
"entityKey": "customCompliance",
"booleanActions": 0,
"policyType": 35,
"enabled": true
}
],
"options": [
],
"entityKey": "customComplianceRequired",
"booleanActions": 1,
"defaultValue": false,
"policyType": 35,
"enabled": true
}
}
@@ -1,17 +1,9 @@
{
"deviceexperience_androiddeviceownergeneral": {
"isSettingDescription": false,
"showAsSectionHeader": true,
"dataType": 8,
"category": 46,
"nameResourceKey": "fullyManagedAndDedicatedAndroidEnrollmentTypesHeaderName",
"descriptionResourceKey": "fullyManagedAndDedicatedAndroidEnrollmentTypesHeaderDescription",
"childSettings": [
{
"dataType": 16,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeName",
"descriptionResourceKey": "enrollmentProfileTypeDescription",
"nameResourceKey": "deviceExperienceTypeName",
"descriptionResourceKey": "deviceExperienceTypeDescription",
"childSettings": [
],
@@ -22,7 +14,7 @@
"enabled": true
},
{
"nameResourceKey": "enrollmentProfileTypeDedicatedDevice",
"nameResourceKey": "deviceExperienceTypeKioskMode",
"value": "dedicatedDevice",
"children": [
{
@@ -75,6 +67,20 @@
"nameResourceKey": "kioskModeSingle",
"value": "singleAppMode",
"children": [
{
"dataType": 10,
"category": 46,
"nameResourceKey": "kioskSingleInfoBoxText",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 2,
"enabled": true
},
{
"complexOptions": [
{
@@ -311,7 +317,7 @@
"descriptionResourceKey": "kioskDropOutDescription",
"childSettings": [
{
"dataType": 20,
"dataType": 17,
"category": 46,
"nameResourceKey": "kioskModeExitCodeName",
"descriptionResourceKey": "kioskModeExitCodeDescription",
@@ -544,7 +550,6 @@
],
"entityKey": "kioskModeScreenSaverDisplayTimeInSeconds",
"booleanActions": 0,
"defaultValue": 0,
"policyType": 2,
"enabled": true
},
@@ -562,7 +567,6 @@
],
"entityKey": "kioskModeScreenSaverStartDelayInSeconds",
"booleanActions": 0,
"defaultValue": 30,
"policyType": 2,
"enabled": true
},
@@ -593,6 +597,14 @@
"policyType": 2,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": true,
"dataType": 8,
"category": 46,
"nameResourceKey": "dedicatedAndroidEnrollmentTypesHeaderName",
"descriptionResourceKey": "dedicatedAndroidEnrollmentTypesHeaderDescription",
"childSettings": [
{
"dataType": 0,
"category": 46,
@@ -720,7 +732,6 @@
],
"entityKey": "kioskModeManagedHomeScreenInactiveSignOutDelayInSeconds",
"booleanActions": 0,
"defaultValue": 300,
"policyType": 2,
"enabled": true
},
@@ -738,7 +749,6 @@
],
"entityKey": "kioskModeManagedHomeScreenInactiveSignOutNoticeInSeconds",
"booleanActions": 0,
"defaultValue": 60,
"policyType": 2,
"enabled": true
}
@@ -763,6 +773,14 @@
"enabled": true
}
],
"options": [
],
"booleanActions": 0,
"policyType": 2,
"enabled": true
}
],
"enabled": true
}
],
@@ -775,7 +793,7 @@
"enabled": true
},
{
"nameResourceKey": "enrollmentProfileTypeFullyManaged",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncher",
"value": "fullyManaged",
"children": [
{
@@ -783,7 +801,7 @@
"showAsSectionHeader": false,
"dataType": 8,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedConfigureMicrosoftLauncher",
"nameResourceKey": "deviceExperienceTypeConfigureMicrosoftLauncher",
"childSettings": [
],
@@ -797,8 +815,8 @@
{
"dataType": 0,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedMakeMicrosoftLauncherDefaultName",
"descriptionResourceKey": "enrollmentProfileTypeFullyManagedMakeMicrosoftLauncherDefaultDescription",
"nameResourceKey": "deviceExperienceTypeMakeMicrosoftLauncherDefaultName",
"descriptionResourceKey": "deviceExperienceTypeMakeMicrosoftLauncherDefaultDescription",
"childSettings": [
],
@@ -814,15 +832,15 @@
{
"dataType": 0,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureCustomWallpaperName",
"descriptionResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureCustomWallpaperDescription",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureCustomWallpaperName",
"descriptionResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureCustomWallpaperDescription",
"childSettings": [
{
"dataType": 20,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureCustomWallpaperUrlName",
"descriptionResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureCustomWallpaperUrlDescription",
"emptyValueResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureCustomWallpaperUrlEmptyValueKey",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureCustomWallpaperUrlName",
"descriptionResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureCustomWallpaperUrlDescription",
"emptyValueResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureCustomWallpaperUrlEmptyValueKey",
"childSettings": [
],
@@ -837,8 +855,8 @@
{
"dataType": 0,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureCustomWallpaperAllowUserModifyName",
"descriptionResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureCustomWallpaperAllowUserModifyDescription",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureCustomWallpaperAllowUserModifyName",
"descriptionResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureCustomWallpaperAllowUserModifyDescription",
"childSettings": [
],
@@ -864,14 +882,14 @@
{
"dataType": 0,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherFeedName",
"descriptionResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherFeedDescription",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherFeedName",
"descriptionResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherFeedDescription",
"childSettings": [
{
"dataType": 0,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherFeedAllowUserModifyName",
"descriptionResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherFeedAllowUserModifyDescription",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherFeedAllowUserModifyName",
"descriptionResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherFeedAllowUserModifyDescription",
"childSettings": [
],
@@ -897,14 +915,14 @@
{
"dataType": 16,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherDockPresenceName",
"descriptionResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherDockPresenceDescription",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherDockPresenceName",
"descriptionResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherDockPresenceDescription",
"childSettings": [
{
"dataType": 0,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherDockPresenceAllowUserModifyName",
"descriptionResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherDockPresenceAllowUserModifyDescription",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherDockPresenceAllowUserModifyName",
"descriptionResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherDockPresenceAllowUserModifyDescription",
"childSettings": [
],
@@ -924,17 +942,17 @@
"enabled": true
},
{
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureDockPresenceShow",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureDockPresenceShow",
"value": "show",
"enabled": true
},
{
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureDockPresenceHide",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureDockPresenceHide",
"value": "hide",
"enabled": true
},
{
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureDockPresenceDisabled",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureDockPresenceDisabled",
"value": "disabled",
"enabled": true
}
@@ -947,8 +965,8 @@
{
"dataType": 16,
"category": 46,
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherSearchBarPlacementName",
"descriptionResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureEnableLauncherSearchBarPlacementDescription",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherSearchBarPlacementName",
"descriptionResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureEnableLauncherSearchBarPlacementDescription",
"childSettings": [
],
@@ -958,17 +976,17 @@
"enabled": true
},
{
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureSearchBarPlacementTop",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureSearchBarPlacementTop",
"value": "top",
"enabled": true
},
{
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureSearchBarPlacementBottom",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureSearchBarPlacementBottom",
"value": "bottom",
"enabled": true
},
{
"nameResourceKey": "enrollmentProfileTypeFullyManagedMicrosoftLauncherConfigureSearchBarPlacementHide",
"nameResourceKey": "deviceExperienceTypeMicrosoftLauncherConfigureSearchBarPlacementHide",
"value": "hide",
"enabled": true
}
@@ -988,12 +1006,4 @@
"policyType": 2,
"enabled": true
}
],
"options": [
],
"booleanActions": 0,
"policyType": 2,
"enabled": true
}
}
@@ -1,5 +1,22 @@
{
"devicehealth_complianceandroiddeviceowner": [
{
"dataType": 0,
"category": 39,
"nameResourceKey": "complianceRootedAllowedName",
"descriptionResourceKey": "complianceRootedAllowedDescription",
"childSettings": [
],
"options": [
],
"entityKey": "securityBlockJailbrokenDevices",
"booleanActions": 3,
"defaultValue": false,
"policyType": 31,
"enabled": true
},
{
"dataType": 16,
"category": 39,
@@ -12,7 +12,7 @@
"dataType": 16,
"category": 42,
"nameResourceKey": "requiredPasswordTypeName",
"descriptionResourceKey": "androidEnterpriseRequiredPasswordTypeDescription",
"descriptionResourceKey": "androidEnterpriseConfigurationRequiredPasswordTypeDescription",
"emptyValueResourceKey": "passwordExpirationInDaysEmptyValueKey",
"childSettings": [
@@ -4,7 +4,7 @@
"dataType": 16,
"category": 42,
"nameResourceKey": "requiredPasswordTypeName",
"descriptionResourceKey": "androidEnterpriseRequiredPasswordTypeDescription",
"descriptionResourceKey": "aospConfigurationRequiredPasswordTypeDescription",
"emptyValueResourceKey": "passwordExpirationInDaysEmptyValueKey",
"childSettings": [
@@ -1150,8 +1150,8 @@
"showAsSectionHeader": true,
"dataType": 8,
"category": 44,
"nameResourceKey": "dedicatedAndroidEnrollmentTypesHeaderName",
"descriptionResourceKey": "dedicatedAndroidEnrollmentTypesHeaderDescription",
"nameResourceKey": "fullyManagedAndDedicatedAndroidEnrollmentTypesWithKioskHeaderName",
"descriptionResourceKey": "fullyManagedAndDedicatedAndroidEnrollmentTypesWithKioskHeaderDescription",
"childSettings": [
{
"dataType": 0,
@@ -1267,7 +1267,23 @@
"defaultValue": false,
"policyType": 2,
"enabled": false
}
],
"options": [
],
"booleanActions": 0,
"policyType": 2,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": true,
"dataType": 8,
"category": 44,
"nameResourceKey": "dedicatedAndroidEnrollmentTypesHeaderName",
"descriptionResourceKey": "dedicatedAndroidEnrollmentTypesHeaderDescription",
"childSettings": [
{
"dataType": 0,
"category": 44,
@@ -105,8 +105,8 @@
{
"dataType": 16,
"category": 44,
"nameResourceKey": "WifiTypeName",
"descriptionResourceKey": "WiFiTypeDescription",
"nameResourceKey": "wiFiPolicySecurityTypeName",
"descriptionResourceKey": "wiFiPolicySecurityTypeDescription",
"childSettings": [
],
@@ -274,7 +274,7 @@
"entityKey": "proxySettings",
"booleanActions": 0,
"defaultValue": "none",
"unconfiguredValue": "noneOption",
"unconfiguredValue": "none",
"policyType": 9,
"enabled": true
},
@@ -1421,7 +1421,7 @@
"entityKey": "proxySettings",
"booleanActions": 0,
"defaultValue": "none",
"unconfiguredValue": "noneOption",
"unconfiguredValue": "none",
"policyType": 9,
"enabled": true
},
@@ -1,5 +1,32 @@
{
"importedpfx_macimportedpfx": {
"importedpfx_macimportedpfx": [
{
"dataType": 16,
"category": 69,
"nameResourceKey": "MacOSDeploymentChannelName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "MacOSDeploymentChannelUserChannel",
"value": "userChannel",
"enabled": true
},
{
"nameResourceKey": "MacOSDeploymentChannelDeviceChannel",
"value": "deviceChannel",
"enabled": true
}
],
"entityKey": "deploymentChannel",
"booleanActions": 0,
"defaultValue": "deviceChannel",
"policyType": 62,
"enabled": true
},
{
"dataType": 16,
"category": 69,
"nameResourceKey": "PFXImportPolicyIntendedPurpose",
@@ -33,4 +60,5 @@
"policyType": 62,
"enabled": true
}
]
}
@@ -1,36 +1,5 @@
{
"password_androidgeneral": [
{
"dataType": 0,
"category": 90,
"nameResourceKey": "requireEncryptionName",
"descriptionResourceKey": "requireEncryptionDescription",
"childSettings": [
],
"options": [
],
"entityKey": "storageRequireDeviceEncryption",
"booleanActions": 1,
"defaultValue": false,
"policyType": 20,
"enabled": true
},
{
"dataType": 10,
"category": 90,
"nameResourceKey": "androidTenDeprecationInfoBox",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 20,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": true,
@@ -62,6 +31,23 @@
"policyType": 20,
"enabled": true
},
{
"dataType": 0,
"category": 90,
"nameResourceKey": "knoxRequireEncryptionName",
"descriptionResourceKey": "requireEncryptionDescription",
"childSettings": [
],
"options": [
],
"entityKey": "storageRequireDeviceEncryption",
"booleanActions": 1,
"defaultValue": false,
"policyType": 20,
"enabled": true
},
{
"dataType": 16,
"category": 90,
@@ -203,14 +189,14 @@
"showAsSectionHeader": true,
"dataType": 8,
"category": 90,
"nameResourceKey": "androidNineAndBelowPasswordHeader",
"nameResourceKey": "knoxFifteenAndroidNineAndBelowPasswordHeader",
"childSettings": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 90,
"nameResourceKey": "androidNineAndBelowPasswordHeaderDescription",
"nameResourceKey": "knoxFifteenAndroidNineAndBelowPasswordHeaderDescription",
"childSettings": [
],
@@ -438,7 +438,7 @@
"dataType": 4,
"category": 93,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -412,7 +412,7 @@
"dataType": 4,
"category": 93,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -279,7 +279,7 @@
"dataType": 4,
"category": 93,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -438,7 +438,7 @@
"dataType": 4,
"category": 93,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
+299 -3
View File
@@ -1,5 +1,17 @@
{
"pkcs_macospkcs": [
"pkcs_macospkcs": {
"dataType": 16,
"category": 93,
"nameResourceKey": "MacOSDeploymentChannelName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "MacOSDeploymentChannelUserChannel",
"value": "userChannel",
"children": [
{
"dataType": 14,
"category": 93,
@@ -227,6 +239,281 @@
}
],
"enabled": true
}
],
"entityKey": "certificateStore",
"booleanActions": 0,
"defaultValue": "user",
"policyType": 64,
"enabled": true
},
{
"dataType": 0,
"category": 93,
"nameResourceKey": "MacOSAllowAllAppsAccess",
"descriptionResourceKey": "MacOSAllowAllAppsAccess",
"emptyValueResourceKey": "macOSAllowAllAppsAccessEmptyValueKey",
"childSettings": [
],
"options": [
],
"entityKey": "allowAllAppsAccess",
"booleanActions": 2,
"policyType": 64,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "MacOSDeploymentChannelDeviceChannel",
"value": "deviceChannel",
"children": [
{
"dataType": 14,
"category": 93,
"nameResourceKey": "sCEPPolicyRenewalThresholdName",
"descriptionResourceKey": "sCEPPolicyRenewalThresholdDescription",
"childSettings": [
],
"options": [
],
"entityKey": "renewalThresholdPercentage",
"booleanActions": 0,
"policyType": 64,
"enabled": true
},
{
"scaleOptions": [
{
"nameResourceKey": "days",
"value": "days",
"enabled": true
},
{
"nameResourceKey": "months",
"value": "months",
"enabled": true
},
{
"nameResourceKey": "years",
"value": "years",
"enabled": true
}
],
"scaleEntityKey": "certificateValidityPeriodScale",
"defaultScale": "years",
"dataType": 22,
"category": 93,
"nameResourceKey": "sCEPPolicyCertificateValidityPeriodName",
"descriptionResourceKey": "sCEPPolicyCertificateValidityPeriodDescription",
"childSettings": [
],
"options": [
],
"entityKey": "certificateValidityPeriodValue",
"booleanActions": 0,
"policyType": 64,
"enabled": true
},
{
"dataType": 20,
"category": 93,
"nameResourceKey": "pKCSPolicyCertificationAuthorityName",
"descriptionResourceKey": "pKCSPolicyCertificationAuthorityNameDescription",
"childSettings": [
],
"options": [
],
"entityKey": "certificationAuthority",
"booleanActions": 0,
"defaultValue": "",
"policyType": 64,
"enabled": true
},
{
"dataType": 20,
"category": 93,
"nameResourceKey": "pKCSPolicyCertificationAuthorityNameName",
"descriptionResourceKey": "pKCSPolicyCertificationAuthorityNameNameDescription",
"childSettings": [
],
"options": [
],
"entityKey": "certificationAuthorityName",
"booleanActions": 0,
"defaultValue": "",
"policyType": 64,
"enabled": true
},
{
"dataType": 20,
"category": 93,
"nameResourceKey": "pKCSPolicyCertificateTemplateNameName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "certificateTemplateName",
"booleanActions": 0,
"defaultValue": "",
"policyType": 64,
"enabled": true
},
{
"dataType": 16,
"category": 93,
"nameResourceKey": "SCEPPolicyWindowsCertificateStoreName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "SCEPPolicyWindowsCertificateStoreUser",
"value": "user",
"children": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 93,
"nameResourceKey": "MacOSDeploymentChannelWarningBanner",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 64,
"enabled": true
},
{
"value": "custom",
"dataType": 9,
"category": 93,
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormat",
"booleanActions": 0,
"policyType": 64,
"enabled": true
},
{
"dataType": 20,
"category": 93,
"nameResourceKey": "SCEPPolicySubjectNameFormatName",
"descriptionResourceKey": "sCEPPolicyCustomSubjectNameWithAadFormatDescription",
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormatString",
"booleanActions": 0,
"defaultValue": "CN={{UserName}},E={{EmailAddress}}",
"policyType": 64,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 16,
"category": 93,
"nameResourceKey": "attribute",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "PolicyEmailAddress",
"value": "emailAddress",
"enabled": true
},
{
"nameResourceKey": "PolicyUserPrincipalName",
"value": "userPrincipalName",
"enabled": true
},
{
"nameResourceKey": "PolicyDomainNameService",
"value": "domainNameService",
"enabled": true
},
{
"nameResourceKey": "PolicyUniversalResourceIdentifier",
"value": "universalResourceIdentifier",
"enabled": true
},
{
"nameResourceKey": "SCEPPolicyCustomAADAttribute",
"value": "customAzureADAttribute",
"enabled": true
}
],
"entityKey": "sanType",
"booleanActions": 0,
"policyType": 64,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 93,
"nameResourceKey": "value",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "name",
"booleanActions": 0,
"policyType": 64,
"enabled": true
}
}
],
"dataType": 21,
"category": 93,
"nameResourceKey": "PolicySubjectAlternativeName",
"descriptionResourceKey": "PolicySubjectAlternativeNameDescription",
"childSettings": [
],
"options": [
],
"entityKey": "customSubjectAlternativeNames",
"booleanActions": 0,
"policyType": 64,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "SCEPPolicyWindowsCertificateStoreMachine",
@@ -348,7 +635,7 @@
],
"entityKey": "certificateStore",
"booleanActions": 0,
"defaultValue": "user",
"defaultValue": "machine",
"policyType": 64,
"enabled": true
},
@@ -369,5 +656,14 @@
"policyType": 64,
"enabled": true
}
]
],
"enabled": true
}
],
"entityKey": "deploymentChannel",
"booleanActions": 0,
"defaultValue": "deviceChannel",
"policyType": 64,
"enabled": true
}
}
@@ -492,7 +492,7 @@
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -462,7 +462,7 @@
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -239,7 +239,7 @@
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -462,7 +462,7 @@
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -558,7 +558,7 @@
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -1,5 +1,17 @@
{
"scepproperties_macscep": [
"scepproperties_macscep": {
"dataType": 16,
"category": 103,
"nameResourceKey": "MacOSDeploymentChannelName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "MacOSDeploymentChannelUserChannel",
"value": "userChannel",
"children": [
{
"dataType": 16,
"category": 103,
@@ -120,118 +132,6 @@
}
],
"enabled": true
},
{
"nameResourceKey": "SCEPPolicyWindowsCertificateStoreMachine",
"value": "machine",
"children": [
{
"value": "custom",
"dataType": 9,
"category": 103,
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormat",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"dataType": 20,
"category": 103,
"nameResourceKey": "sCEPPolicySubjectNameFormatName",
"descriptionResourceKey": "sCEPPolicySubjectNameFormatDescription",
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormatString",
"booleanActions": 0,
"defaultValue": "CN={{AAD_Device_ID}}",
"policyType": 63,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 16,
"category": 103,
"nameResourceKey": "attribute",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "PolicyEmailAddress",
"value": "emailAddress",
"enabled": true
},
{
"nameResourceKey": "PolicyUserPrincipalName",
"value": "userPrincipalName",
"enabled": true
},
{
"nameResourceKey": "PolicyDomainNameService",
"value": "domainNameService",
"enabled": true
},
{
"nameResourceKey": "PolicyUniversalResourceIdentifier",
"value": "universalResourceIdentifier",
"enabled": true
}
],
"entityKey": "sanType",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 103,
"nameResourceKey": "value",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "name",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
}
],
"dataType": 21,
"category": 103,
"nameResourceKey": "PolicySubjectAlternativeName",
"descriptionResourceKey": "PolicySubjectAlternativeNameDescription",
"childSettings": [
],
"options": [
],
"entityKey": "customSubjectAlternativeNames",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "certificateStore",
@@ -558,7 +458,7 @@
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -742,5 +642,779 @@
"policyType": 63,
"enabled": false
}
]
],
"enabled": true
},
{
"nameResourceKey": "MacOSDeploymentChannelDeviceChannel",
"value": "deviceChannel",
"children": [
{
"dataType": 16,
"category": 103,
"nameResourceKey": "SCEPPolicyWindowsCertificateStoreName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "SCEPPolicyWindowsCertificateStoreUser",
"value": "user",
"children": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 103,
"nameResourceKey": "MacOSDeploymentChannelWarningBanner",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"value": "custom",
"dataType": 9,
"category": 103,
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormat",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"dataType": 20,
"category": 103,
"nameResourceKey": "sCEPPolicySubjectNameFormatName",
"descriptionResourceKey": "sCEPPolicySubjectNameFormatDescription",
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormatString",
"booleanActions": 0,
"defaultValue": "CN={{UserName}},E={{EmailAddress}}",
"policyType": 63,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 16,
"category": 103,
"nameResourceKey": "attribute",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "PolicyEmailAddress",
"value": "emailAddress",
"enabled": true
},
{
"nameResourceKey": "PolicyUserPrincipalName",
"value": "userPrincipalName",
"enabled": true
},
{
"nameResourceKey": "PolicyDomainNameService",
"value": "domainNameService",
"enabled": true
},
{
"nameResourceKey": "PolicyUniversalResourceIdentifier",
"value": "universalResourceIdentifier",
"enabled": true
}
],
"entityKey": "sanType",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 103,
"nameResourceKey": "value",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "name",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
}
],
"dataType": 21,
"category": 103,
"nameResourceKey": "PolicySubjectAlternativeName",
"descriptionResourceKey": "PolicySubjectAlternativeNameDescription",
"childSettings": [
],
"options": [
],
"entityKey": "customSubjectAlternativeNames",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "SCEPPolicyWindowsCertificateStoreMachine",
"value": "machine",
"children": [
{
"value": "custom",
"dataType": 9,
"category": 103,
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormat",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"dataType": 20,
"category": 103,
"nameResourceKey": "sCEPPolicySubjectNameFormatName",
"descriptionResourceKey": "sCEPPolicySubjectNameFormatDescription",
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormatString",
"booleanActions": 0,
"defaultValue": "CN={{AAD_Device_ID}}",
"policyType": 63,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 16,
"category": 103,
"nameResourceKey": "attribute",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "PolicyEmailAddress",
"value": "emailAddress",
"enabled": true
},
{
"nameResourceKey": "PolicyUserPrincipalName",
"value": "userPrincipalName",
"enabled": true
},
{
"nameResourceKey": "PolicyDomainNameService",
"value": "domainNameService",
"enabled": true
},
{
"nameResourceKey": "PolicyUniversalResourceIdentifier",
"value": "universalResourceIdentifier",
"enabled": true
}
],
"entityKey": "sanType",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 103,
"nameResourceKey": "value",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "name",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
}
],
"dataType": 21,
"category": 103,
"nameResourceKey": "PolicySubjectAlternativeName",
"descriptionResourceKey": "PolicySubjectAlternativeNameDescription",
"childSettings": [
],
"options": [
],
"entityKey": "customSubjectAlternativeNames",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "certificateStore",
"booleanActions": 0,
"defaultValue": "machine",
"policyType": 63,
"enabled": true
},
{
"scaleOptions": [
{
"nameResourceKey": "days",
"value": "days",
"enabled": true
},
{
"nameResourceKey": "months",
"value": "months",
"enabled": true
},
{
"nameResourceKey": "years",
"value": "years",
"enabled": true
}
],
"scaleEntityKey": "certificateValidityPeriodScale",
"defaultScale": "years",
"dataType": 22,
"category": 103,
"nameResourceKey": "sCEPPolicyCertificateValidityPeriodName",
"descriptionResourceKey": "sCEPPolicyCertificateValidityPeriodDescription",
"childSettings": [
],
"options": [
],
"entityKey": "certificateValidityPeriodValue",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"dataType": 16,
"category": 103,
"nameResourceKey": "sCEPPolicySubjectNameFormatName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonName",
"value": "commonName",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonNameAsEmail",
"value": "commonNameAsEmail",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCustom",
"value": "custom",
"children": [
{
"dataType": 20,
"category": 103,
"nameResourceKey": "sCEPPolicySubjectNameFormatCustom",
"descriptionResourceKey": "sCEPPolicyCustomSubjectNameFormatDescription",
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormatString",
"booleanActions": 0,
"defaultValue": "CN={{UserName}},E={{EmailAddress}}",
"policyType": 63,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "subjectNameFormat",
"booleanActions": 0,
"policyType": 63,
"enabled": false
},
{
"dataType": 16,
"category": 103,
"nameResourceKey": "sCEPPolicySubjectNameFormatName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonName",
"value": "commonName",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonNameAndEmailAddress",
"value": "commonNameIncludingEmail",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonNameAsEmail",
"value": "commonNameAsEmail",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonNameAsIMEI",
"value": "commonNameAsIMEI",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonNameAsSerialNumber",
"value": "commonNameAsSerialNumber",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCustom",
"value": "custom",
"children": [
{
"dataType": 20,
"category": 103,
"nameResourceKey": "sCEPPolicySubjectNameFormatCustom",
"descriptionResourceKey": "sCEPPolicyCustomSubjectNameFormatDescription",
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormatString",
"booleanActions": 0,
"defaultValue": "CN={{UserName}},E={{EmailAddress}}",
"policyType": 63,
"enabled": false
}
],
"enabled": true
}
],
"entityKey": "subjectNameFormat",
"booleanActions": 0,
"policyType": 63,
"enabled": false
},
{
"dataType": 16,
"category": 103,
"nameResourceKey": "sCEPPolicySubjectNameFormatName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonName",
"value": "commonName",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonNameAndEmailAddress",
"value": "commonNameIncludingEmail",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonNameAsEmail",
"value": "commonNameAsEmail",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonNameAsIMEI",
"value": "commonNameAsIMEI",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCommonNameAsSerialNumber",
"value": "commonNameAsSerialNumber",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicySubjectNameFormatCustom",
"value": "custom",
"children": [
{
"dataType": 20,
"category": 103,
"nameResourceKey": "sCEPPolicySubjectNameFormatCustom",
"descriptionResourceKey": "sCEPPolicyCustomSubjectNameWithAadFormatDescription",
"childSettings": [
],
"options": [
],
"entityKey": "subjectNameFormatString",
"booleanActions": 0,
"defaultValue": "CN={{UserName}},E={{EmailAddress}}",
"policyType": 63,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "subjectNameFormat",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"dataType": 13,
"category": 103,
"nameResourceKey": "PolicySubjectAlternativeName",
"descriptionResourceKey": "PolicySubjectAlternativeNameDescription",
"emptyValueResourceKey": "notConfigured",
"childSettings": [
],
"options": [
{
"nameResourceKey": "PolicyEmailAddress",
"value": "emailAddress",
"enabled": true
},
{
"nameResourceKey": "PolicyUserPrincipalName",
"value": "userPrincipalName",
"enabled": true
}
],
"entityKey": "subjectAlternativeNameType",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"dataType": 13,
"category": 103,
"nameResourceKey": "sCEPPolicyKeyUsageName",
"descriptionResourceKey": "sCEPPolicyKeyUsageDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "sCEPPolicyUseAsDigitialSignature",
"value": "digitalSignature",
"enabled": true
},
{
"nameResourceKey": "sCEPPolicyUseForKeyEncipherment",
"value": "keyEncipherment",
"enabled": true
}
],
"entityKey": "keyUsage",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"dataType": 16,
"category": 103,
"nameResourceKey": "sCEPPolicyKeySizeName",
"descriptionResourceKey": "sCEPPolicyKeySizeDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "",
"displayText": "1024",
"value": "size1024",
"enabled": true
},
{
"nameResourceKey": "",
"displayText": "2048",
"value": "size2048",
"enabled": true
},
{
"nameResourceKey": "",
"displayText": "4096",
"value": "size4096",
"enabled": true
}
],
"entityKey": "keySize",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
"options": [
],
"entityKey": "rootCertificate",
"booleanActions": 0,
"unconfiguredValue": "notConfigured",
"policyType": 63,
"enabled": true
}
],
"dataType": 5,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 103,
"nameResourceKey": "sCEPPolicyExtendedKeyUsageAnyPurposeCloudCaWarning",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 103,
"nameResourceKey": "eDPPolicyAppsListNameName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "name",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 103,
"nameResourceKey": "sCEPPolicyObjectIdentifierColumnName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "objectIdentifier",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
}
],
"dataType": 21,
"category": 103,
"nameResourceKey": "sCEPPolicyExtendedKeyUsageName",
"descriptionResourceKey": "sCEPPolicyExtendedKeyUsageDescription",
"childSettings": [
],
"options": [
],
"entityKey": "extendedKeyUsages",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 103,
"nameResourceKey": "enrollmentSettingsHeading",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"dataType": 14,
"category": 103,
"nameResourceKey": "sCEPPolicyRenewalThresholdName",
"descriptionResourceKey": "sCEPPolicyRenewalThresholdDescription",
"childSettings": [
],
"options": [
],
"entityKey": "renewalThresholdPercentage",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 103,
"nameResourceKey": "sCEPPolicyServerURLName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "sCEPPolicyServerURLSExample",
"childSettings": [
],
"options": [
],
"entityKey": "sCEPPolicyServerURLName",
"booleanActions": 0,
"policyType": 63,
"enabled": true
}
}
],
"dataType": 21,
"category": 103,
"nameResourceKey": "sCEPPolicyServerURLSName",
"descriptionResourceKey": "sCEPPolicyServerURLSDescription",
"childSettings": [
],
"options": [
],
"entityKey": "scepServerUrls",
"booleanActions": 0,
"policyType": 63,
"enabled": true
},
{
"dataType": 0,
"category": 103,
"nameResourceKey": "MacOSAllowAllAppsAccess",
"descriptionResourceKey": "MacOSAllowAllAppsAccess",
"childSettings": [
],
"options": [
],
"entityKey": "allowAllAppsAccess",
"booleanActions": 2,
"policyType": 63,
"enabled": false
}
],
"enabled": true
}
],
"entityKey": "deploymentChannel",
"booleanActions": 0,
"defaultValue": "deviceChannel",
"policyType": 63,
"enabled": true
}
}
@@ -501,7 +501,7 @@
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -501,7 +501,7 @@
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -278,7 +278,7 @@
"dataType": 4,
"category": 103,
"nameResourceKey": "sCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "SCEPPolicySelectRootCertificateName",
"descriptionResourceKey": "sCEPPolicySelectRootCertificateDescription",
"childSettings": [
],
@@ -187,51 +187,6 @@
"policyType": 29,
"enabled": true
},
{
"dataType": 10,
"category": 113,
"nameResourceKey": "androidTenDeprecationInfoBox",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 29,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": true,
"dataType": 8,
"category": 113,
"nameResourceKey": "allAndroidVersionsPasswordHeader",
"childSettings": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 113,
"nameResourceKey": "allAndroidVersionsPasswordHeaderDescription",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 29,
"enabled": true
}
],
"options": [
],
"booleanActions": 0,
"policyType": 29,
"enabled": true
},
{
"dataType": 16,
"category": 113,
@@ -370,14 +325,14 @@
"showAsSectionHeader": true,
"dataType": 8,
"category": 113,
"nameResourceKey": "androidNineAndBelowPasswordHeader",
"nameResourceKey": "knoxFifteenAndroidNineAndBelowPasswordHeader",
"childSettings": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 113,
"nameResourceKey": "androidNineAndBelowPasswordHeaderDescription",
"nameResourceKey": "knoxFifteenAndroidNineAndBelowPasswordHeaderDescription",
"childSettings": [
],
@@ -33,7 +33,7 @@
"dataType": 16,
"category": 113,
"nameResourceKey": "requiredPasswordTypeName",
"descriptionResourceKey": "androidEnterpriseRequiredPasswordTypeDescription",
"descriptionResourceKey": "androidEnterpriseComplianceRequiredPasswordTypeDescription",
"emptyValueResourceKey": "passwordExpirationInDaysEmptyValueKey",
"childSettings": [
@@ -41,7 +41,7 @@
"dataType": 16,
"category": 113,
"nameResourceKey": "requiredPasswordTypeName",
"descriptionResourceKey": "androidEnterpriseRequiredPasswordTypeDescription",
"descriptionResourceKey": "aospComplianceRequiredPasswordTypeDescription",
"emptyValueResourceKey": "passwordExpirationInDaysEmptyValueKey",
"childSettings": [
@@ -1,5 +1,32 @@
{
"trustedcert_mactrustedcertificate": {
"trustedcert_mactrustedcertificate": [
{
"dataType": 16,
"category": 115,
"nameResourceKey": "MacOSDeploymentChannelName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "MacOSDeploymentChannelUserChannel",
"value": "userChannel",
"enabled": true
},
{
"nameResourceKey": "MacOSDeploymentChannelDeviceChannel",
"value": "deviceChannel",
"enabled": true
}
],
"entityKey": "deploymentChannel",
"booleanActions": 0,
"defaultValue": "deviceChannel",
"policyType": 65,
"enabled": true
},
{
"dataEntityKey": "trustedRootCertificate",
"filenameEntityKey": "certFileName",
"dataType": 1,
@@ -17,4 +44,5 @@
"policyType": 65,
"enabled": true
}
]
}
+513 -2
View File
@@ -1,5 +1,17 @@
{
"vpn_macvpn": [
"vpn_macvpn": {
"dataType": 16,
"category": 129,
"nameResourceKey": "MacOSDeploymentChannelName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "MacOSDeploymentChannelUserChannel",
"value": "userChannel",
"children": [
{
"dataType": 20,
"category": 129,
@@ -483,5 +495,504 @@
"policyType": 66,
"enabled": true
}
]
],
"enabled": true
},
{
"nameResourceKey": "MacOSDeploymentChannelDeviceChannel",
"value": "deviceChannel",
"children": [
{
"dataType": 20,
"category": 129,
"nameResourceKey": "vPNPolicyConnectionName",
"descriptionResourceKey": "vPNPolicyConnectionDescription",
"emptyValueResourceKey": "vPNConnectionExample",
"childSettings": [
],
"options": [
],
"entityKey": "connectionName",
"booleanActions": 0,
"policyType": 66,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 20,
"category": 129,
"nameResourceKey": "vPNPolicyServerIPAddressOrFQDNName",
"descriptionResourceKey": "vPNPolicyServerIPAddressOrFQDNDescription",
"emptyValueResourceKey": "vPNAddressExample",
"childSettings": [
],
"options": [
],
"entityKey": "address",
"booleanActions": 0,
"policyType": 66,
"enabled": true
},
{
"value": "server",
"dataType": 9,
"category": 129,
"childSettings": [
],
"options": [
],
"entityKey": "description",
"booleanActions": 0,
"policyType": 66,
"enabled": true
},
{
"value": true,
"dataType": 9,
"category": 129,
"childSettings": [
],
"options": [
],
"entityKey": "isDefaultServer",
"booleanActions": 0,
"policyType": 66,
"enabled": true
}
],
"dataType": 6,
"category": 129,
"nameResourceKey": "vPNPolicyServerIPAddressOrFQDNName",
"descriptionResourceKey": "vPNPolicyServerIPAddressOrFQDNDescription",
"childSettings": [
],
"options": [
],
"entityKey": "server",
"booleanActions": 0,
"policyType": 66,
"enabled": true
},
{
"dataType": 16,
"category": 129,
"nameResourceKey": "authenticationMethodName",
"descriptionResourceKey": "vPNAuthMethodDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "selectAnAuthenticationMethod",
"enabled": true
},
{
"nameResourceKey": "certificatesOption",
"value": "certificate",
"children": [
{
"complexOptions": [
{
"dataType": 4,
"category": 129,
"nameResourceKey": "vPNPolicySelectAClientCertificateName",
"descriptionResourceKey": "vPNPolicySelectAClientCertificateDescription",
"childSettings": [
],
"options": [
],
"entityKey": "identityCertificate",
"booleanActions": 0,
"policyType": 66,
"enabled": false
},
{
"dataType": 4,
"category": 129,
"nameResourceKey": "vPNPolicySelectAClientCertificateName",
"descriptionResourceKey": "vPNPolicySelectAClientCertificateDescription",
"childSettings": [
],
"options": [
],
"entityKey": "identityCertificate",
"booleanActions": 0,
"policyType": 66,
"enabled": false
}
],
"dataType": 5,
"category": 129,
"nameResourceKey": "authenticationCertificate",
"descriptionResourceKey": "clientCertForClientAuthenticationDescription",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 66,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "usernameAndPasswordOption",
"value": "usernameAndPassword",
"enabled": true
}
],
"entityKey": "authenticationMethod",
"booleanActions": 0,
"policyType": 66,
"enabled": true
},
{
"dataType": 16,
"category": 129,
"nameResourceKey": "vPNPolicyConnectionTypeName",
"descriptionResourceKey": "vPNPolicyConnectionTypeDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "selectAConnectionType",
"enabled": true
},
{
"nameResourceKey": "checkPointCapsuleVPNOption",
"value": "checkPointCapsuleVpn",
"children": [
{
"dataType": 19,
"category": 129,
"nameResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNName",
"descriptionResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "enableOption",
"value": true,
"enabled": true
},
{
"nameResourceKey": "disableOption",
"value": false,
"enabled": true
}
],
"entityKey": "enableSplitTunneling",
"booleanActions": 0,
"defaultValue": false,
"policyType": 66,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "ciscoAnyConnectOption",
"value": "ciscoAnyConnect",
"children": [
{
"dataType": 19,
"category": 129,
"nameResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNName",
"descriptionResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "enableOption",
"value": true,
"enabled": true
},
{
"nameResourceKey": "disableOption",
"value": false,
"enabled": true
}
],
"entityKey": "enableSplitTunneling",
"booleanActions": 0,
"defaultValue": false,
"policyType": 66,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "dellSoniceWallMobileConnectOption",
"value": "dellSonicWallMobileConnect",
"children": [
{
"dataType": 19,
"category": 129,
"nameResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNName",
"descriptionResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "enableOption",
"value": true,
"enabled": true
},
{
"nameResourceKey": "disableOption",
"value": false,
"enabled": true
}
],
"entityKey": "enableSplitTunneling",
"booleanActions": 0,
"defaultValue": false,
"policyType": 66,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "fFiveEdgeClientOption",
"value": "f5EdgeClient",
"children": [
{
"dataType": 19,
"category": 129,
"nameResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNName",
"descriptionResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "enableOption",
"value": true,
"enabled": true
},
{
"nameResourceKey": "disableOption",
"value": false,
"enabled": true
}
],
"entityKey": "enableSplitTunneling",
"booleanActions": 0,
"defaultValue": false,
"policyType": 66,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "netMotionMobilityOption",
"value": "netMotionMobility",
"children": [
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 129,
"nameResourceKey": "keyColumn",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "vPNCustomKeyExample",
"childSettings": [
],
"options": [
],
"entityKey": "key",
"booleanActions": 0,
"policyType": 66,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 129,
"nameResourceKey": "valueColumn",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "vPNCustomValueExample",
"childSettings": [
],
"options": [
],
"entityKey": "value",
"booleanActions": 0,
"policyType": 66,
"enabled": true
}
}
],
"dataType": 21,
"category": 129,
"nameResourceKey": "vPNNetMotionMobilityCustomDataDescription",
"descriptionResourceKey": "createAttributes",
"childSettings": [
],
"options": [
],
"entityKey": "customData",
"booleanActions": 0,
"policyType": 66,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "customVPNOption",
"value": "customVpn",
"children": [
{
"dataType": 20,
"category": 129,
"nameResourceKey": "vPNIdentifier",
"descriptionResourceKey": "providedByVPNVendor",
"emptyValueResourceKey": "vPNIdentifierExample",
"childSettings": [
],
"options": [
],
"entityKey": "identifier",
"booleanActions": 0,
"policyType": 66,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 129,
"nameResourceKey": "keyColumn",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "vPNCustomKeyExample",
"childSettings": [
],
"options": [
],
"entityKey": "key",
"booleanActions": 0,
"policyType": 66,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 129,
"nameResourceKey": "valueColumn",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "vPNCustomValueExample",
"childSettings": [
],
"options": [
],
"entityKey": "value",
"booleanActions": 0,
"policyType": 66,
"enabled": true
}
}
],
"dataType": 21,
"category": 129,
"nameResourceKey": "vPNCustomDataDescription",
"descriptionResourceKey": "createAttributes",
"childSettings": [
],
"options": [
],
"entityKey": "customData",
"booleanActions": 0,
"policyType": 66,
"enabled": true
},
{
"dataType": 19,
"category": 129,
"nameResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNName",
"descriptionResourceKey": "vPNPolicySendAllNetworkTrafficThroughVPNDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "enableOption",
"value": true,
"enabled": true
},
{
"nameResourceKey": "disableOption",
"value": false,
"enabled": true
}
],
"entityKey": "enableSplitTunneling",
"booleanActions": 0,
"defaultValue": false,
"policyType": 66,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "connectionType",
"booleanActions": 0,
"policyType": 66,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "deploymentChannel",
"booleanActions": 0,
"defaultValue": "deviceChannel",
"policyType": 66,
"enabled": true
}
}
@@ -4078,6 +4078,124 @@
"defaultValue": false,
"policyType": 19,
"enabled": true
},
{
"dataType": 16,
"category": 121,
"nameResourceKey": "wiFiPolicySecurityTypeName",
"descriptionResourceKey": "wiFiPolicySecurityTypeDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "openOption",
"value": "open",
"enabled": true
},
{
"nameResourceKey": "wEPPSKOption",
"value": "wep",
"children": [
{
"dataType": 20,
"category": 121,
"nameResourceKey": "preSharedKeyName",
"descriptionResourceKey": "preSharedKeyDescription",
"emptyValueResourceKey": "wifiPasswordExample",
"childSettings": [
],
"options": [
],
"entityKey": "preSharedKey",
"booleanActions": 0,
"policyType": 19,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "wPAPSKOption",
"value": "wpaPersonal",
"children": [
{
"dataType": 20,
"category": 121,
"nameResourceKey": "preSharedKeyName",
"descriptionResourceKey": "preSharedKeyDescription",
"emptyValueResourceKey": "wifiPasswordExample",
"childSettings": [
],
"options": [
],
"entityKey": "preSharedKey",
"booleanActions": 0,
"policyType": 19,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "wiFiSecurityType",
"booleanActions": 0,
"policyType": 19,
"enabled": true
},
{
"dataType": 16,
"category": 121,
"nameResourceKey": "wiFiPolicyProxySettingsName",
"descriptionResourceKey": "wiFiPolicyProxySettingsDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "noneOption",
"value": "none",
"enabled": true
},
{
"nameResourceKey": "automaticOption",
"value": "automatic",
"children": [
{
"dataType": 20,
"category": 121,
"nameResourceKey": "proxyServerURLName",
"descriptionResourceKey": "proxyServerURLDescription",
"emptyValueResourceKey": "proxyUrlExample",
"childSettings": [
],
"options": [
],
"entityKey": "proxyAutomaticConfigurationUrl",
"booleanActions": 0,
"policyType": 19,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "proxySettings",
"booleanActions": 0,
"defaultValue": "none",
"unconfiguredValue": "none",
"policyType": 19,
"enabled": true
}
],
"enabled": true
@@ -4954,7 +5072,7 @@
"entityKey": "proxySettings",
"booleanActions": 0,
"defaultValue": "none",
"unconfiguredValue": "noneOption",
"unconfiguredValue": "none",
"policyType": 19,
"enabled": true
}
@@ -105,8 +105,8 @@
{
"dataType": 16,
"category": 121,
"nameResourceKey": "WifiTypeName",
"descriptionResourceKey": "WiFiTypeDescription",
"nameResourceKey": "wiFiPolicySecurityTypeName",
"descriptionResourceKey": "wiFiPolicySecurityTypeDescription",
"childSettings": [
],
@@ -274,7 +274,7 @@
"entityKey": "proxySetting",
"booleanActions": 0,
"defaultValue": "none",
"unconfiguredValue": "noneOption",
"unconfiguredValue": "none",
"policyType": 124,
"enabled": false
}
@@ -1106,7 +1106,7 @@
"entityKey": "proxySetting",
"booleanActions": 0,
"defaultValue": "none",
"unconfiguredValue": "noneOption",
"unconfiguredValue": "none",
"policyType": 124,
"enabled": false
}
+51 -3
View File
@@ -144,6 +144,54 @@
],
"enabled": true
},
{
"nameResourceKey": "wPA2PersonalOption",
"value": "wpa2Personal",
"children": [
{
"dataType": 20,
"category": 121,
"nameResourceKey": "preSharedKeyName",
"descriptionResourceKey": "preSharedKeyDescription",
"emptyValueResourceKey": "wifiPasswordExample",
"childSettings": [
],
"options": [
],
"entityKey": "preSharedKey",
"booleanActions": 0,
"policyType": 54,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "wPA3PersonalOption",
"value": "wpa3Personal",
"children": [
{
"dataType": 20,
"category": 121,
"nameResourceKey": "preSharedKeyName",
"descriptionResourceKey": "preSharedKeyDescription",
"emptyValueResourceKey": "wifiPasswordExample",
"childSettings": [
],
"options": [
],
"entityKey": "preSharedKey",
"booleanActions": 0,
"policyType": 54,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "wEPOption",
"value": "wep",
@@ -238,7 +286,7 @@
"entityKey": "proxySettings",
"booleanActions": 0,
"defaultValue": "none",
"unconfiguredValue": "noneOption",
"unconfiguredValue": "none",
"policyType": 54,
"enabled": true
},
@@ -1494,7 +1542,7 @@
"entityKey": "proxySettings",
"booleanActions": 0,
"defaultValue": "none",
"unconfiguredValue": "noneOption",
"unconfiguredValue": "none",
"policyType": 54,
"enabled": true
},
@@ -1940,7 +1988,7 @@
"entityKey": "proxySettings",
"booleanActions": 0,
"defaultValue": "none",
"unconfiguredValue": "noneOption",
"unconfiguredValue": "none",
"policyType": 54,
"enabled": true
},
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,909 @@
{
"windowsztdns_windows10ztdns": [
{
"dataType": 10,
"category": 154,
"nameResourceKey": "ztdnsMinimumBuildInfoboxName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"dataType": 9,
"category": 154,
"childSettings": [
{
"complexOptions": [
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsModeHeaderName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"dataType": 16,
"category": 154,
"nameResourceKey": "ztdnsModeSelectionName",
"childSettings": [
],
"options": [
{
"nameResourceKey": "ZtdnsNotConfiguredName",
"enabled": true
},
{
"nameResourceKey": "ztdnsModeSelectionAuditName",
"value": "true",
"enabled": true
},
{
"nameResourceKey": "ztdnsModeSelectionEnforceName",
"value": "false",
"children": [
{
"dataType": 10,
"category": 154,
"nameResourceKey": "ztdnsModeWarningName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "auditModeEnabled",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"dataType": 5,
"category": 154,
"nameResourceKey": "ztdnsModeChevronName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"complexOptions": [
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerHeaderName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDisplayNameName",
"descriptionResourceKey": "ztdnsSecureDnsServerDisplayNameDescription",
"emptyValueResourceKey": "ztdnsSecureDnsServerDisplayNamePlaceholder",
"childSettings": [
],
"options": [
],
"entityKey": "displayName",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerIpAddressName",
"descriptionResourceKey": "ztdnsSecureDnsServerIpAddressDescription",
"emptyValueResourceKey": "ztdnsSecureDnsServerIpAddressPlaceholder",
"childSettings": [
],
"options": [
],
"entityKey": "ipAddress",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
},
{
"metadata": {
"dataType": 16,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerTypeName",
"descriptionResourceKey": "ztdnsSecureDnsServerTypeDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "ZtdnsNotConfiguredName",
"enabled": true
},
{
"nameResourceKey": "ztdnsSecureDnsServerDohOptionName",
"value": "doh",
"children": [
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDohHeaderName",
"childSettings": [
{
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDohUrlName",
"descriptionResourceKey": "ztdnsSecureDnsServerDohUrlDescription",
"emptyValueResourceKey": "ztdnsSecureDnsServerDohUrlPlaceholder",
"childSettings": [
],
"options": [
],
"entityKey": "dohQueryUrl",
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"dataType": 14,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDohPortName",
"descriptionResourceKey": "ztdnsSecureDnsServerDohPortDescription",
"childSettings": [
],
"options": [
],
"entityKey": "dohHttpsPort",
"booleanActions": 0,
"defaultValue": 443,
"policyType": 130,
"enabled": true
}
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "ztdnsSecureDnsServerDotOptionName",
"value": "dot",
"children": [
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDotHeaderName",
"childSettings": [
{
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDotHostnameName",
"descriptionResourceKey": "ztdnsSecureDnsServerDotHostnameDescription",
"emptyValueResourceKey": "ztdnsSecureDnsServerDotHostnamePlaceholder",
"childSettings": [
],
"options": [
],
"entityKey": "dotCertificateSubjectName",
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"dataType": 14,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDotPortName",
"descriptionResourceKey": "ztdnsSecureDnsServerDotPortDescription",
"childSettings": [
],
"options": [
],
"entityKey": "dotTlsPort",
"booleanActions": 0,
"defaultValue": 853,
"policyType": 130,
"enabled": true
}
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "ztdnsSecureDnsServerDohAndDotOptionName",
"value": "dohAndDot",
"children": [
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDohHeaderName",
"childSettings": [
{
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDohUrlName",
"descriptionResourceKey": "ztdnsSecureDnsServerDohUrlDescription",
"emptyValueResourceKey": "ztdnsSecureDnsServerDohUrlPlaceholder",
"childSettings": [
],
"options": [
],
"entityKey": "dohQueryUrl",
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"dataType": 14,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDohPortName",
"descriptionResourceKey": "ztdnsSecureDnsServerDohPortDescription",
"childSettings": [
],
"options": [
],
"entityKey": "dohHttpsPort",
"booleanActions": 0,
"defaultValue": 443,
"policyType": 130,
"enabled": true
}
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDotHeaderName",
"childSettings": [
{
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDotHostnameName",
"descriptionResourceKey": "ztdnsSecureDnsServerDotHostnameDescription",
"emptyValueResourceKey": "ztdnsSecureDnsServerDotHostnamePlaceholder",
"childSettings": [
],
"options": [
],
"entityKey": "dotCertificateSubjectName",
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"dataType": 14,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDotPortName",
"descriptionResourceKey": "ztdnsSecureDnsServerDotPortDescription",
"childSettings": [
],
"options": [
],
"entityKey": "dotTlsPort",
"booleanActions": 0,
"defaultValue": 853,
"policyType": 130,
"enabled": true
}
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "serverType",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDotHostnameName",
"childSettings": [
],
"options": [
],
"entityKey": "dotCertificateSubjectName",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
},
{
"metadata": {
"dataType": 14,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDotPortName",
"childSettings": [
],
"options": [
],
"entityKey": "dotTlsPort",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDohUrlName",
"childSettings": [
],
"options": [
],
"entityKey": "dohQueryUrl",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
},
{
"metadata": {
"dataType": 14,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerDohPortName",
"childSettings": [
],
"options": [
],
"entityKey": "dohHttpsPort",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
}
],
"dataType": 21,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerName",
"childSettings": [
],
"options": [
],
"entityKey": "secureDnsServers",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"dataType": 5,
"category": 154,
"nameResourceKey": "ztdnsSecureDnsServerChevronName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"complexOptions": [
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsTrustedCAHeaderName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 154,
"nameResourceKey": "ztdnsServerRootCertificateHeader",
"descriptionResourceKey": "ztdnsRootCertificateDescription",
"childSettings": [
],
"options": [
],
"entityKey": "rootCertificatesForServerValidation",
"booleanActions": 0,
"unconfiguredValue": "notConfigured",
"policyType": 130,
"enabled": true
}
],
"dataType": 5,
"category": 154,
"nameResourceKey": "ztdnsServerRootCertificateHeader",
"descriptionResourceKey": "ztdnsRootCertificateDescription",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"dataType": 5,
"category": 154,
"nameResourceKey": "ztdnsTrustedCAChevronName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"complexOptions": [
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsExemptionRulesHeaderName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsExemptionRuleDisplayNameName",
"emptyValueResourceKey": "ztdnsExemptionRuleDisplayNamePlaceholder",
"childSettings": [
],
"options": [
],
"entityKey": "displayName",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
},
{
"metadata": {
"columns": [
{
"metadata": {
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsExemptionRuleIpAddressName",
"emptyValueResourceKey": "ztdnsExemptionRuleIpAddressPlaceholder",
"childSettings": [
],
"options": [
],
"entityKey": "ipAddress",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
}
],
"dataType": 21,
"category": 154,
"nameResourceKey": "ztdnsExemptionRuleIpAddressesName",
"descriptionResourceKey": "ztdnsExemptionRuleIpAddressesDescription",
"childSettings": [
],
"options": [
],
"entityKey": "ipAddresses",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 154,
"nameResourceKey": "ztdnsExemptionRuleDescriptionName",
"emptyValueResourceKey": "ztdnsExemptionRuleDescriptionPlaceholder",
"childSettings": [
],
"options": [
],
"entityKey": "description",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
}
],
"dataType": 21,
"category": 154,
"nameResourceKey": "ztdnsExemptionRulesName",
"descriptionResourceKey": "ztdnsExemptionRulesDescription",
"childSettings": [
],
"options": [
],
"entityKey": "exemptionRules",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"dataType": 5,
"category": 154,
"nameResourceKey": "ztdnsExemptionRulesChevronName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"complexOptions": [
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsClientCertificateHeaderName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 154,
"nameResourceKey": "ztdnsClientRootCertificateHeader",
"descriptionResourceKey": "ztdnsRootCertificateDescription",
"childSettings": [
],
"options": [
],
"entityKey": "rootCertificatesForClientValidation",
"booleanActions": 0,
"unconfiguredValue": "notConfigured",
"policyType": 130,
"enabled": true
}
],
"dataType": 5,
"category": 154,
"nameResourceKey": "ztdnsClientRootCertificateHeader",
"descriptionResourceKey": "ztdnsRootCertificateDescription",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"isSettingDescription": true,
"showAsSectionHeader": false,
"dataType": 8,
"category": 154,
"nameResourceKey": "ztdnsClientCertificateEkuHeaderName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 154,
"nameResourceKey": "eDPPolicyAppsListNameName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "name",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 154,
"nameResourceKey": "sCEPPolicyObjectIdentifierColumnName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "objectIdentifier",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
}
],
"dataType": 21,
"category": 154,
"nameResourceKey": "sCEPPolicyExtendedKeyUsageName",
"childSettings": [
],
"options": [
],
"entityKey": "extendedKeyUsagesForClientAuthentication",
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"dataType": 5,
"category": 154,
"nameResourceKey": "ztdnsClientCertificateChevronName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 0,
"category": 154,
"nameResourceKey": "ztdnsAdvancedSettingsLoopbackTrafficBlockedName",
"descriptionResourceKey": "ztdnsAdvancedSettingsLoopbackTrafficBlockedDescription",
"childSettings": [
{
"dataType": 0,
"category": 154,
"nameResourceKey": "ztdnsAdvancedSettingsLoopbackDnsForwarderEnabledName",
"descriptionResourceKey": "ztdnsAdvancedSettingsLoopbackDnsForwarderEnabledDescription",
"childSettings": [
],
"options": [
],
"entityKey": "loopbackDnsForwarderEnabled",
"booleanActions": 0,
"defaultValue": false,
"policyType": 130,
"enabled": true
}
],
"options": [
],
"entityKey": "loopbackTrafficBlocked",
"booleanActions": 3,
"defaultValue": false,
"policyType": 130,
"enabled": true
},
{
"dataType": 0,
"category": 154,
"nameResourceKey": "ztdnsAdvancedSettingsHostsFileResolutionEnabledName",
"descriptionResourceKey": "ztdnsAdvancedSettingsHostsFileResolutionEnabledDescription",
"childSettings": [
],
"options": [
],
"entityKey": "hostsFileResolutionEnabled",
"booleanActions": 3,
"defaultValue": false,
"policyType": 130,
"enabled": true
},
{
"dataType": 14,
"category": 154,
"nameResourceKey": "ztdnsAdvancedSettingsMaximumConnectionTimeInSecondsName",
"descriptionResourceKey": "ztdnsAdvancedSettingsMaximumConnectionTimeInSecondsDescription",
"childSettings": [
],
"options": [
],
"entityKey": "maximumConnectionTimeInSeconds",
"booleanActions": 0,
"defaultValue": 86400,
"policyType": 130,
"enabled": true
}
],
"dataType": 5,
"category": 154,
"nameResourceKey": "ztdnsAdvancedSettingsChevronName",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
],
"options": [
],
"booleanActions": 0,
"policyType": 130,
"enabled": true
}
]
}
@@ -0,0 +1,735 @@
{
"wirednetwork_ioswirednetwork": [
{
"dataType": 16,
"category": 149,
"nameResourceKey": "networkInterface",
"descriptionResourceKey": "networkInterfaceDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "anyEthernet",
"value": "anyEthernet",
"enabled": true
}
],
"entityKey": "networkInterface",
"booleanActions": 0,
"defaultValue": "anyEthernet",
"policyType": 131,
"enabled": true
},
{
"dataType": 16,
"category": 149,
"nameResourceKey": "eAPTypeName",
"descriptionResourceKey": "eAPTypeDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "selectEAP",
"enabled": true
},
{
"nameResourceKey": "eAPFASTName",
"value": "eapFast",
"children": [
{
"dataType": 16,
"category": 149,
"nameResourceKey": "pACHeading",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "dontUsePACName",
"value": "noProtectedAccessCredential",
"enabled": true
},
{
"nameResourceKey": "usePACName",
"value": "useProtectedAccessCredential",
"enabled": true
},
{
"nameResourceKey": "provisionPACName",
"value": "useProtectedAccessCredentialAndProvision",
"enabled": true
},
{
"nameResourceKey": "provisionPACAnonName",
"value": "useProtectedAccessCredentialAndProvisionAnonymously",
"enabled": true
}
],
"entityKey": "eapFastConfiguration",
"booleanActions": 0,
"defaultValue": "noProtectedAccessCredential",
"policyType": 131,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "eAPTLSName",
"value": "eapTls",
"children": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "trust",
"descriptionResourceKey": "trustDescription",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 149,
"nameResourceKey": "empty",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "trustedServerCertificateNameExample",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNamesName",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
}
],
"dataType": 21,
"category": 149,
"nameResourceKey": "trustedServerCertificateNamesName",
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNames",
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfiles",
"descriptionResourceKey": "selectRootCertificatesForServerValidationName",
"childSettings": [
],
"options": [
],
"entityKey": "rootCertificatesForServerValidation",
"booleanActions": 0,
"unconfiguredValue": "notConfigured",
"policyType": 131,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "selectRootCertificatesForServerValidationName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificates",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "authentication",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"value": "certificate",
"dataType": 9,
"category": 149,
"childSettings": [
],
"options": [
],
"entityKey": "authenticationMethod",
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfile",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "identityCertificateForClientAuthentication",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "certificatesOption",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "enableOuterIdentityPrivacy",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "eAPTTLSName",
"value": "eapTtls",
"children": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "trust",
"descriptionResourceKey": "trustDescription",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 149,
"nameResourceKey": "empty",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "trustedServerCertificateNameExample",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNamesName",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
}
],
"dataType": 21,
"category": 149,
"nameResourceKey": "trustedServerCertificateNamesName",
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNames",
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfiles",
"descriptionResourceKey": "selectRootCertificatesForServerValidationName",
"childSettings": [
],
"options": [
],
"entityKey": "rootCertificatesForServerValidation",
"booleanActions": 0,
"unconfiguredValue": "notConfigured",
"policyType": 131,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "selectRootCertificatesForServerValidationName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificates",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "authentication",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"dataType": 16,
"category": 149,
"nameResourceKey": "authenticationMethodName",
"descriptionResourceKey": "authenticationMethodTTLSDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "usernameAndPasswordOption",
"value": "usernameAndPassword",
"children": [
{
"dataType": 16,
"category": 149,
"nameResourceKey": "nonEapMethodName",
"descriptionResourceKey": "nonEapMethodDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "selectNonEapMethod",
"enabled": true
},
{
"nameResourceKey": "pAPName",
"value": "unencryptedPassword",
"enabled": true
},
{
"nameResourceKey": "cHAPName",
"value": "challengeHandshakeAuthenticationProtocol",
"enabled": true
},
{
"nameResourceKey": "mSCHAPName",
"value": "microsoftChap",
"enabled": true
},
{
"nameResourceKey": "cHAPTWOName",
"value": "microsoftChapVersionTwo",
"enabled": true
}
],
"entityKey": "nonEapAuthenticationMethodForEapTtls",
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "enableOuterIdentityPrivacy",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "certificatesOption",
"value": "certificate",
"children": [
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfile",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "identityCertificateForClientAuthentication",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "certificatesOption",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "enableOuterIdentityPrivacy",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "authenticationMethod",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "eAPAKAName",
"value": "eapAka",
"enabled": true
},
{
"nameResourceKey": "pEAPName",
"value": "peap",
"children": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "trust",
"descriptionResourceKey": "trustDescription",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 149,
"nameResourceKey": "empty",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "trustedServerCertificateNameExample",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNamesName",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
}
],
"dataType": 21,
"category": 149,
"nameResourceKey": "trustedServerCertificateNamesName",
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNames",
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfiles",
"descriptionResourceKey": "selectRootCertificatesForServerValidationName",
"childSettings": [
],
"options": [
],
"entityKey": "rootCertificatesForServerValidation",
"booleanActions": 0,
"unconfiguredValue": "notConfigured",
"policyType": 131,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "selectRootCertificatesForServerValidationName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificates",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "authentication",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"dataType": 16,
"category": 149,
"nameResourceKey": "authenticationMethodName",
"descriptionResourceKey": "authenticationMethodName",
"childSettings": [
],
"options": [
{
"nameResourceKey": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "usernameAndPasswordOption",
"value": "usernameAndPassword",
"children": [
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "outerIdentityPrivacyMaskValue",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "certificatesOption",
"value": "certificate",
"children": [
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfile",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "identityCertificateForClientAuthentication",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "certificatesOption",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 131,
"enabled": true
},
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "enableOuterIdentityPrivacy",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "authenticationMethod",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "eapType",
"booleanActions": 0,
"policyType": 131,
"enabled": true
}
]
}
@@ -1,5 +1,17 @@
{
"wirednetwork_macwirednetwork": [
"wirednetwork_macwirednetwork": {
"dataType": 16,
"category": 149,
"nameResourceKey": "MacOSDeploymentChannelName",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "MacOSDeploymentChannelUserChannel",
"value": "userChannel",
"children": [
{
"dataType": 16,
"category": 149,
@@ -71,21 +83,6 @@
"nameResourceKey": "eAPFASTName",
"value": "eapFast",
"children": [
{
"value": "certificate",
"dataType": 9,
"category": 149,
"childSettings": [
],
"options": [
],
"entityKey": "authenticationMethod",
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"dataType": 16,
"category": 149,
@@ -796,5 +793,802 @@
"policyType": 68,
"enabled": true
}
]
],
"enabled": true
},
{
"nameResourceKey": "MacOSDeploymentChannelDeviceChannel",
"value": "deviceChannel",
"children": [
{
"dataType": 16,
"category": 149,
"nameResourceKey": "networkInterface",
"descriptionResourceKey": "networkInterfaceDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "selectNetworkInterface",
"enabled": true
},
{
"nameResourceKey": "firstActiveEthernet",
"value": "firstActiveEthernet",
"enabled": true
},
{
"nameResourceKey": "secondActiveEthernet",
"value": "secondActiveEthernet",
"enabled": true
},
{
"nameResourceKey": "thirdActiveEthernet",
"value": "thirdActiveEthernet",
"enabled": true
},
{
"nameResourceKey": "firstEthernet",
"value": "firstEthernet",
"enabled": true
},
{
"nameResourceKey": "secondEthernet",
"value": "secondEthernet",
"enabled": true
},
{
"nameResourceKey": "thirdEthernet",
"value": "thirdEthernet",
"enabled": true
},
{
"nameResourceKey": "anyEthernet",
"value": "anyEthernet",
"enabled": true
}
],
"entityKey": "networkInterface",
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"dataType": 16,
"category": 149,
"nameResourceKey": "eAPTypeName",
"descriptionResourceKey": "eAPTypeDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "selectEAP",
"enabled": true
},
{
"nameResourceKey": "eAPFASTName",
"value": "eapFast",
"children": [
{
"dataType": 16,
"category": 149,
"nameResourceKey": "pACHeading",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
{
"nameResourceKey": "dontUsePACName",
"value": "noProtectedAccessCredential",
"enabled": true
},
{
"nameResourceKey": "usePACName",
"value": "useProtectedAccessCredential",
"enabled": true
},
{
"nameResourceKey": "provisionPACName",
"value": "useProtectedAccessCredentialAndProvision",
"enabled": true
},
{
"nameResourceKey": "provisionPACAnonName",
"value": "useProtectedAccessCredentialAndProvisionAnonymously",
"enabled": true
}
],
"entityKey": "eapFastConfiguration",
"booleanActions": 0,
"defaultValue": "noProtectedAccessCredential",
"policyType": 68,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "eAPTLSName",
"value": "eapTls",
"children": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "trust",
"descriptionResourceKey": "trustDescription",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 149,
"nameResourceKey": "empty",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "trustedServerCertificateNameExample",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNamesName",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
}
],
"dataType": 21,
"category": 149,
"nameResourceKey": "trustedServerCertificateNamesName",
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNames",
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfiles",
"descriptionResourceKey": "selectRootCertificatesForServerValidationName",
"childSettings": [
],
"options": [
],
"entityKey": "rootCertificatesForServerValidation",
"booleanActions": 0,
"unconfiguredValue": "notConfigured",
"policyType": 68,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "selectRootCertificatesForServerValidationName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificates",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "authentication",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"value": "certificate",
"dataType": 9,
"category": 149,
"childSettings": [
],
"options": [
],
"entityKey": "authenticationMethod",
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfile",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "identityCertificateForClientAuthentication",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "certificatesOption",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "enableOuterIdentityPrivacy",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "eAPTTLSName",
"value": "eapTtls",
"children": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "trust",
"descriptionResourceKey": "trustDescription",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 149,
"nameResourceKey": "empty",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "trustedServerCertificateNameExample",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNamesName",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
}
],
"dataType": 21,
"category": 149,
"nameResourceKey": "trustedServerCertificateNamesName",
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNames",
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfiles",
"descriptionResourceKey": "selectRootCertificatesForServerValidationName",
"childSettings": [
],
"options": [
],
"entityKey": "rootCertificatesForServerValidation",
"booleanActions": 0,
"unconfiguredValue": "notConfigured",
"policyType": 68,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "selectRootCertificatesForServerValidationName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificates",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "authentication",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"dataType": 16,
"category": 149,
"nameResourceKey": "authenticationMethodName",
"descriptionResourceKey": "authenticationMethodTTLSDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "usernameAndPasswordOption",
"value": "usernameAndPassword",
"children": [
{
"dataType": 16,
"category": 149,
"nameResourceKey": "nonEapMethodName",
"descriptionResourceKey": "nonEapMethodDescription",
"childSettings": [
],
"options": [
{
"nameResourceKey": "selectNonEapMethod",
"enabled": true
},
{
"nameResourceKey": "pAPName",
"value": "unencryptedPassword",
"enabled": true
},
{
"nameResourceKey": "cHAPName",
"value": "challengeHandshakeAuthenticationProtocol",
"enabled": true
},
{
"nameResourceKey": "mSCHAPName",
"value": "microsoftChap",
"enabled": true
},
{
"nameResourceKey": "cHAPTWOName",
"value": "microsoftChapVersionTwo",
"enabled": true
}
],
"entityKey": "nonEapAuthenticationMethodForEapTtls",
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "enableOuterIdentityPrivacy",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "certificatesOption",
"value": "certificate",
"children": [
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfile",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "identityCertificateForClientAuthentication",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "certificatesOption",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "enableOuterIdentityPrivacy",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "authenticationMethod",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "lEAPName",
"value": "leap",
"children": [
{
"value": "certificate",
"dataType": 9,
"category": 149,
"childSettings": [
],
"options": [
],
"entityKey": "authenticationMethod",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "pEAPName",
"value": "peap",
"children": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "trust",
"descriptionResourceKey": "trustDescription",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 149,
"nameResourceKey": "empty",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "trustedServerCertificateNameExample",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNamesName",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
}
],
"dataType": 21,
"category": 149,
"nameResourceKey": "trustedServerCertificateNamesName",
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
"childSettings": [
],
"options": [
],
"entityKey": "trustedServerCertificateNames",
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfiles",
"descriptionResourceKey": "selectRootCertificatesForServerValidationName",
"childSettings": [
],
"options": [
],
"entityKey": "rootCertificatesForServerValidation",
"booleanActions": 0,
"unconfiguredValue": "notConfigured",
"policyType": 68,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "selectRootCertificatesForServerValidationName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificates",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 149,
"nameResourceKey": "authentication",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"dataType": 16,
"category": 149,
"nameResourceKey": "authenticationMethodName",
"descriptionResourceKey": "authenticationMethodName",
"childSettings": [
],
"options": [
{
"nameResourceKey": "notConfigured",
"enabled": true
},
{
"nameResourceKey": "usernameAndPasswordOption",
"value": "usernameAndPassword",
"children": [
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "enableOuterIdentityPrivacy",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"enabled": true
},
{
"nameResourceKey": "certificatesOption",
"value": "certificate",
"children": [
{
"complexOptions": [
{
"dataType": 4,
"category": 149,
"nameResourceKey": "selectCertificateProfile",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "identityCertificateForClientAuthentication",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"dataType": 5,
"category": 149,
"nameResourceKey": "certificatesOption",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "selectCertificate",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 68,
"enabled": true
},
{
"dataType": 20,
"category": 149,
"nameResourceKey": "enableIdentityPrivacyName",
"descriptionResourceKey": "enableIdentityPrivacyDescription",
"emptyValueResourceKey": "identityPrivacyExample",
"childSettings": [
],
"options": [
],
"entityKey": "enableOuterIdentityPrivacy",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "authenticationMethod",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "eapType",
"booleanActions": 0,
"policyType": 68,
"enabled": true
}
],
"enabled": true
}
],
"entityKey": "deploymentChannel",
"booleanActions": 0,
"defaultValue": "deviceChannel",
"policyType": 68,
"enabled": true
}
}
@@ -0,0 +1,50 @@
{
"workprofile_androidforworkmigrationpolicy": [
{
"dataType": 10,
"category": 127,
"nameResourceKey": "migrationPolicyCannotBeUnassigned",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 129,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 127,
"nameResourceKey": "androidForWorkMigrationPolicyDescriptionParagraph1",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 129,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 127,
"nameResourceKey": "androidForWorkMigrationPolicyLearnMoreText",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 129,
"enabled": true
}
]
}
@@ -0,0 +1,140 @@
{
"wslcompliance_compliancewindows10": [
{
"dataType": 10,
"category": 153,
"nameResourceKey": "windowsSubsystemLinuxComplianceInfoBox",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 35,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 153,
"nameResourceKey": "windowsSubsystemLinuxComplianceDescription",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 35,
"enabled": true
},
{
"isSettingDescription": false,
"showAsSectionHeader": true,
"dataType": 8,
"category": 153,
"nameResourceKey": "windowsSubsystemLinuxComplianceHeader",
"childSettings": [
{
"isSettingDescription": false,
"showAsSectionHeader": false,
"dataType": 8,
"category": 153,
"nameResourceKey": "windowsSubsystemLinuxComplianceLearnMore",
"childSettings": [
],
"options": [
],
"booleanActions": 0,
"policyType": 35,
"enabled": true
}
],
"options": [
],
"booleanActions": 0,
"policyType": 35,
"enabled": true
},
{
"columns": [
{
"metadata": {
"dataType": 20,
"category": 153,
"nameResourceKey": "wSLPolicyDistributionName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "distribution",
"booleanActions": 0,
"policyType": 35,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 153,
"nameResourceKey": "wSLPolicyMinOSVersionName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "optionalValue",
"childSettings": [
],
"options": [
],
"entityKey": "minimumOSVersion",
"booleanActions": 0,
"policyType": 35,
"enabled": true
}
},
{
"metadata": {
"dataType": 20,
"category": 153,
"nameResourceKey": "wSLPolicyMaxOSVersionName",
"descriptionResourceKey": "empty",
"emptyValueResourceKey": "optionalValue",
"childSettings": [
],
"options": [
],
"entityKey": "maximumOSVersion",
"booleanActions": 0,
"policyType": 35,
"enabled": true
}
}
],
"dataType": 21,
"category": 153,
"nameResourceKey": "empty",
"descriptionResourceKey": "empty",
"childSettings": [
],
"options": [
],
"entityKey": "wslDistributions",
"booleanActions": 0,
"policyType": 35,
"enabled": true
}
]
}
+5137 -4722
View File
File diff suppressed because it is too large Load Diff
+5155 -4740
View File
File diff suppressed because it is too large Load Diff
+5123 -4708
View File
File diff suppressed because it is too large Load Diff
+5143 -4728
View File
File diff suppressed because it is too large Load Diff
+5168 -4753
View File
File diff suppressed because it is too large Load Diff
+5138 -4723
View File
File diff suppressed because it is too large Load Diff
+5159 -4744
View File
File diff suppressed because it is too large Load Diff
+5152 -4737
View File
File diff suppressed because it is too large Load Diff
+5145 -4730
View File
File diff suppressed because it is too large Load Diff
+5137 -4722
View File
File diff suppressed because it is too large Load Diff
+4989 -4574
View File
File diff suppressed because it is too large Load Diff
+5123 -4708
View File
File diff suppressed because it is too large Load Diff
+5117 -4702
View File
File diff suppressed because it is too large Load Diff
+5154 -4739
View File
File diff suppressed because it is too large Load Diff
+5102 -4687
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+5123 -4708
View File
File diff suppressed because it is too large Load Diff
+148 -27
View File
@@ -11,7 +11,7 @@ Objects can be compared based on Properties or Documentatation info.
function Get-ModuleVersion
{
'1.1.0'
'1.2.0'
}
function Invoke-InitializeModule
@@ -188,6 +188,12 @@ function Show-CompareBulkForm
$global:chkSkipCompareAssignments.IsChecked = (Get-Setting "Compare" "SkipCompareAssignments") -eq "true"
$global:chkSkipMissingSourcePolicies.IsChecked = (Get-Setting "Compare" "SkipMissingSourcePolicies") -eq "true"
$global:chkSkipMissingDestinationPolicies.IsChecked = (Get-Setting "Compare" "SkipMissingDestinationPolicies") -eq "true"
$global:chkBulkCompareSaveJson.IsChecked = (Get-Setting "Compare" "SaveJson") -eq "true"
$global:chkBulkCompareRemoveOData.IsChecked = (Get-Setting "Compare" "RemoveOData") -eq "true"
$objectSeparator = "[ { Name: `"New line`",Value: `"$([System.Environment]::NewLine)`" }, {Name: `";`",Value: `";`" }, {Name: `"|`",Value: `"|`" }]" | ConvertFrom-Json
$global:cbCompareMultiValueDelimiter.ItemsSource = $objectSeparator
$global:cbCompareMultiValueDelimiter.SelectedValue = (Get-Setting "Compare" "ObjectSeparator" ([System.Environment]::NewLine))
$script:compareObjects = @()
foreach($objType in $global:lstMenuItems.ItemsSource)
@@ -239,6 +245,9 @@ function Show-CompareBulkForm
Save-Setting "Compare" "SkipCompareAssignments" $global:chkSkipCompareAssignments.IsChecked
Save-Setting "Compare" "SkipMissingSourcePolicies" $global:chkSkipMissingSourcePolicies.IsChecked
Save-Setting "Compare" "SkipMissingDestinationPolicies" $global:chkSkipMissingDestinationPolicies.IsChecked
Save-Setting "Compare" "SaveJson" $global:chkBulkCompareSaveJson.IsChecked
Save-Setting "Compare" "RemoveOData" $global:chkBulkCompareRemoveOData.IsChecked
Save-Setting "Compare" "ObjectSeparator" $global:cbCompareMultiValueDelimiter.SelectedValue
if($global:cbCompareProvider.SelectedItem.BulkCompare)
{
@@ -534,18 +543,26 @@ function Invoke-BulkCompareNamedObjects
{
$fileName = Remove-InvalidFileNameChars (Expand-FileName "Compare-$($graphObj.ObjectType.Id)-$sourcePattern-$comparePattern-%DateTime%.csv")
Save-BulkCompareResults $compResultValues (Join-Path $outputFolder $fileName) $compareProps
if($global:chkBulkCompareSaveJson.IsChecked) {
$fileName = Remove-InvalidFileNameChars (Expand-FileName "Compare-$($graphObj.ObjectType.Id)-$sourcePattern-$comparePattern-%DateTime%.json")
Save-BulkCompareJsonResults $compResultValues (Join-Path $rootFolder $fileName)
}
}
}
#$fileName = Expand-FileName $fileName
if($compareObjectsResult.Count -eq 0)
{
[System.Windows.MessageBox]::Show("No objects were comparced. Verify name patterns", "Error", "OK", "Error")
[System.Windows.MessageBox]::Show("No objects were compared. Verify name patterns", "Error", "OK", "Error")
}
elseif($outputType -eq "all")
{
$fileName = Remove-InvalidFileNameChars (Expand-FileName "Compare-$sourcePattern-$comparePattern-%DateTime%.csv")
Save-BulkCompareResults $compResultValues (Join-Path $outputFolder $fileName) $compareProps
if($global:chkBulkCompareSaveJson.IsChecked) {
$fileName = Remove-InvalidFileNameChars (Expand-FileName "Compare-$($graphObj.ObjectType.Id)-$sourcePattern-$comparePattern-%DateTime%.json")
Save-BulkCompareJsonResults $compResultValues (Join-Path $rootFolder $fileName)
}
}
}
@@ -640,6 +657,7 @@ function Start-BulkCompareExportObjects
{
$sourceObj = Get-GraphObject $curObject.Object $curObject.ObjectType
$fileObj.Object | Add-Member Noteproperty -Name "@ObjectFromFile" -Value $true -Force
$fileObj.Object | Add-Member Noteproperty -Name "@ObjectFileName" -Value $fileObj.FileInfo.FullName -Force
$compareProperties = Compare-Objects $sourceObj.Object $fileObj.Object $item.ObjectType
}
@@ -688,7 +706,7 @@ function Start-BulkCompareExportObjects
$objName = Get-GraphObjectName (?? $compObj.Object1 $compObj.Object2) $item.ObjectType
foreach($compValue in $compObj.Result)
{
$compResultValues += [PSCustomObject]@{
$compValue += [PSCustomObject]@{
ObjectName = $objName
Id = $compObj.Id
Type = $compObj.ObjectType.Title
@@ -700,12 +718,34 @@ function Start-BulkCompareExportObjects
SubCategory = $compValue.SubCategory
Match = $compValue.Match
}
if($global:chkBulkCompareRemoveOData.IsChecked -and ($compValue.Value1 -like "@odata*" -or $compValue.Value2 -like "@odata*")) {
foreach($prop in $('Value1','Value2'))
{
$tmpValue1 = ""
$tmpValue2 = ""
$vauleString = $compValue.$prop
if($vauleString -is [String]) {
$vauleString = $vauleString -replace $compValue.Id, ""
$tmpObj = $compValue.$prop | ConvertFrom-Json
if($compValue.$prop -and $compValue.$prop -like "@odata*") {
Remove-GraphODataProperties $tmpObj.$prop | ConvertTo-Json -Depth 50 | Set-Variable -Name "tmp$prop"
}
}
}
$compValue.Match = $tmpValue1 -eq $tmpValue2
}
$compResultValues += $compValue
}
}
if($outputType -eq "objectType")
{
Save-BulkCompareResults $compResultValues (Join-Path $folder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).csv") $compareProps
if($global:chkBulkCompareSaveJson.IsChecked) {
Save-BulkCompareJsonResults $compResultValues (Join-Path $folder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).json")
}
}
}
else
@@ -716,7 +756,10 @@ function Start-BulkCompareExportObjects
if($outputType -eq "all" -and $compResultValues.Count -gt 0)
{
Save-BulkCompareResults $compResultValues (Join-Path $rootFolder "Compare_$(((Get-Date).ToString("yyyyMMDD-HHmm"))).csv") $compareProps
Save-BulkCompareResults $compResultValues (Join-Path $rootFolder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).csv") $compareProps
if($global:chkBulkCompareSaveJson.IsChecked) {
Save-BulkCompareJsonResults $compResultValues (Join-Path $rootFolder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).json")
}
}
Write-Log "****************************************************************"
@@ -725,7 +768,7 @@ function Start-BulkCompareExportObjects
Write-Status ""
if($compareObjectsResult.Count -eq 0)
{
[System.Windows.MessageBox]::Show("No objects were comparced. Verify folder and exported files", "Error", "OK", "Error")
[System.Windows.MessageBox]::Show("No objects were compared. Verify folder and exported files", "Error", "OK", "Error")
}
}
@@ -795,6 +838,7 @@ function Start-BulkCompareExportIntuneToNamedExportedObjects
if($txtNameFilter -and $objName -notmatch [RegEx]::Escape($txtNameFilter))
{
Write-LogDebug "Excluded based on filter. Intune object name: '$($objName)'"
continue
}
@@ -802,7 +846,7 @@ function Start-BulkCompareExportIntuneToNamedExportedObjects
if(-not $fileObj)
{
# Add objects that are exported but deleted
# Add objects that are in Intune but no exported file found
if($global:chkSkipMissingDestinationPolicies.IsChecked -ne $true) {
Write-Log "Object '$($objName)' with id $($fileObj.Object.Id) not found in exported folder. New Object?" 2
$compareProperties = @([PSCustomObject]@{
@@ -814,7 +858,7 @@ function Start-BulkCompareExportIntuneToNamedExportedObjects
}
elseif(($fileObj | measure).Count -gt 1)
{
# Add objects that are exported but deleted
# Add objects where multiple files match based on name
Write-Log "Multiple exported objects found with name '$($objName)" 2
$compareProperties = @([PSCustomObject]@{
Object1Value = $objName
@@ -826,6 +870,7 @@ function Start-BulkCompareExportIntuneToNamedExportedObjects
{
$sourceObj = Get-GraphObject $graphObject.Object $graphObject.ObjectType
$fileObj.Object | Add-Member Noteproperty -Name "@ObjectFromFile" -Value $true -Force
$fileObj.Object | Add-Member Noteproperty -Name "@ObjectFileName" -Value $fileObj.FileInfo.FullName -Force
$compareProperties = Compare-Objects $sourceObj.Object $fileObj.Object $item.ObjectType
}
@@ -841,12 +886,16 @@ function Start-BulkCompareExportIntuneToNamedExportedObjects
if($global:chkSkipMissingSourcePolicies.IsChecked -ne $true) {
foreach ($fileObj in @($fileObjects))
{
# Add objects that are exported but not in Intune
if(($compareObjectsResult | Where { $_.FileInfo.FullName -eq $fileObj.FileInfo.FullName})) { continue }
# Skip objects if they are already processed
if(($compareObjectsResult | Where { $_.Object2 -eq $fileObj.Object})) {
Write-LogDebug "Skip already processed file '$($fileObj.FileInfo.FullName)'"
continue
}
$objName = Get-GraphObjectName $fileObj.Object $item.ObjectType
if($txtNameFilter -and $objName -notmatch [RegEx]::Escape($txtNameFilter))
{
Write-LogDebug "Excluded based on filter. File: '$($fileObj.FileInfo.FullName)'"
continue
}
@@ -892,6 +941,9 @@ function Start-BulkCompareExportIntuneToNamedExportedObjects
if($outputType -eq "objectType")
{
Save-BulkCompareResults $compResultValues (Join-Path $folder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).csv") $compareProps
if($global:chkBulkCompareSaveJson.IsChecked) {
Save-BulkCompareJsonResults $compResultValues (Join-Path $rootFolder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).json")
}
}
}
else
@@ -902,7 +954,10 @@ function Start-BulkCompareExportIntuneToNamedExportedObjects
if($outputType -eq "all" -and $compResultValues.Count -gt 0)
{
Save-BulkCompareResults $compResultValues (Join-Path $rootFolder "Compare_$(((Get-Date).ToString("yyyyMMDD-HHmm"))).csv") $compareProps
Save-BulkCompareResults $compResultValues (Join-Path $rootFolder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).csv") $compareProps
if($global:chkBulkCompareSaveJson.IsChecked) {
Save-BulkCompareJsonResults $compResultValues (Join-Path $rootFolder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).json")
}
}
Write-Log "****************************************************************"
@@ -911,7 +966,7 @@ function Start-BulkCompareExportIntuneToNamedExportedObjects
Write-Status ""
if($compareObjectsResult.Count -eq 0)
{
[System.Windows.MessageBox]::Show("No objects were comparced. Verify folder and exported files", "Error", "OK", "Error")
[System.Windows.MessageBox]::Show("No objects were compared. Verify folder and exported files", "Error", "OK", "Error")
}
}
@@ -1009,7 +1064,9 @@ function Start-BulkCompareExportFolders
else
{
$fileSourceObj.Object | Add-Member Noteproperty -Name "@ObjectFromFile" -Value $true -Force
$fileSourceObj.Object | Add-Member Noteproperty -Name "@ObjectFileName" -Value $fileSourceObj.FileInfo.FullName -Force
$compareObject.Object | Add-Member Noteproperty -Name "@ObjectFromFile" -Value $true -Force
$compareObject.Object | Add-Member Noteproperty -Name "@ObjectFileName" -Value $compareObject.FileInfo.FullName -Force
$compareProperties = Compare-Objects $compareObject.Object $fileSourceObj.Object $item.ObjectType
}
@@ -1076,6 +1133,9 @@ function Start-BulkCompareExportFolders
if($outputType -eq "objectType")
{
Save-BulkCompareResults $compResultValues (Join-Path $folderSource "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).csv") $compareProps
if($global:chkBulkCompareSaveJson.IsChecked) {
Save-BulkCompareJsonResults $compResultValues (Join-Path $rootFolder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).json")
}
}
}
else
@@ -1086,7 +1146,10 @@ function Start-BulkCompareExportFolders
if($outputType -eq "all" -and $compResultValues.Count -gt 0)
{
Save-BulkCompareResults $compResultValues (Join-Path $rootFolderSource "Compare_$(((Get-Date).ToString("yyyyMMDD-HHmm"))).csv") $compareProps
Save-BulkCompareResults $compResultValues (Join-Path $rootFolderSource "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).csv") $compareProps
if($global:chkBulkCompareSaveJson.IsChecked) {
Save-BulkCompareJsonResults $compResultValues (Join-Path $rootFolder "Compare_$(((Get-Date).ToString("yyyyMMdd-HHmm"))).json")
}
}
Write-Log "****************************************************************"
@@ -1099,6 +1162,13 @@ function Start-BulkCompareExportFolders
}
}
function Save-BulkCompareJsonResults
{
param($CompareResults, $FileName)
$CompareResults | ConvertTo-Json -Depth 50 | Out-File $FileName -Force -Encoding UTF8
}
function Save-BulkCompareResults
{
param($compResultValues, $file, $props)
@@ -1297,6 +1367,7 @@ function Start-CompareExportObject
}
}
$compareObj | Add-Member Noteproperty -Name "@ObjectFileName" -Value $global:txtCompareFile.Text -Force
$compareObj | Add-Member Noteproperty -Name "@ObjectFromFile" -Value $true -Force
$compareResult = Compare-Objects $obj.Object $compareObj $obj.ObjectType
@@ -1354,7 +1425,7 @@ function Add-CompareProperty
$value1 = if($value1 -eq $null) { "" } else { $value1.ToString().Trim("`"") }
$value2 = if($value2 -eq $null) { "" } else { $value2.ToString().Trim("`"") }
$compare += [PSCustomObject]@{
$compare = [PSCustomObject]@{
PropertyName = $name
Object1Value = $value1 #if($value1 -ne $null) { $value1.ToString().Trim("`"") } else { "" }
Object2Value = $value2 #if($value2 -ne $null) { $value2.ToString().Trim("`"") } else { "" }
@@ -1362,10 +1433,12 @@ function Add-CompareProperty
SubCategory = $subCategory
Match = ?? $match ($value1 -eq $value2)
}
if($skip -eq $true) {
$compare.Match = $null
}
Write-LogDebug "Add property $($compare.PropertyName)"
$script:compareProperties += $compare
}
@@ -1381,7 +1454,7 @@ function Compare-ObjectsBasedonProperty
$coreProps = @((?? $objectType.NameProperty "displayName"), "Description", "Id", "createdDateTime", "lastModifiedDateTime", "version")
$postProps = @("Advertisements")
$skipProps = @("@ObjectFromFile")
$skipProps = @("@ObjectFromFile","@ObjectFileName")
$skipPropertiesToCompare = @()
if($skipBasicProperties) {
$skipPropertiesToCompare += "roleScopeTagIds"
@@ -1469,17 +1542,19 @@ function Compare-ObjectsBasedonDocumentation
# ToDo: set this based on configuration value
$script:assignmentOutput = "simpleFullCompare"
$docObj1 = Invoke-ObjectDocumentation ([PSCustomObject]@{
$tmpObj1 = ([PSCustomObject]@{
Object = $obj1
ObjectType = $objectType
})
ObjectType = $objectType})
$docObj1 = Invoke-ObjectDocumentation $tmpObj1 -ObjectSeparator ($global:cbCompareMultiValueDelimiter.SelectedValue)
$docObj2 = Invoke-ObjectDocumentation ([PSCustomObject]@{
$tmpObj2 = ([PSCustomObject]@{
Object = $obj2
ObjectType = $objectType
})
$docObj2 = Invoke-ObjectDocumentation $tmpObj2 -ObjectSeparator ($global:cbCompareMultiValueDelimiter.SelectedValue)
$settingsValue = ?? $objectType.CompareValue "Value"
$skipBasicProperties = Get-XamlProperty $script:cmpForm "chkSkipCompareBasicProperties" "IsChecked"
@@ -1500,8 +1575,10 @@ function Compare-ObjectsBasedonDocumentation
$addedProperties = @()
if($docObj1.InputType -eq "Settings")
if($docObj1.InputType -eq "Intent")
{
Set-ColumnVisibility $true ($null -ne ($docObj1.Settings | Where ParentSettingId -ne $null))
foreach ($prop in $docObj1.Settings)
{
if(($prop.SettingId + $prop.ParentSettingId + $prop.RowIndex) -in $addedProperties) { continue }
@@ -1575,8 +1652,48 @@ function Compare-ObjectsBasedonDocumentation
Add-CompareProperty $prop.Name $val1 $val2 $prop.Category
}
}
elseif($docObj1.InputType -eq "Settings")
{
Set-ColumnVisibility $true ($null -ne ($docObj1.Settings | Where SubCategory -ne $null))
foreach ($prop in $docObj1.Settings)
{
if(($prop.SettingId + $prop.CategoryId + $prop.SubCategoryDefinition.Id) -in $addedProperties) { continue }
$addedProperties += ($prop.SettingId + $prop.CategoryId + $prop.SubCategoryDefinition.Id)
$val1 = $prop.$settingsValue
$prop2 = $docObj2.Settings | Where { $_.SettingId -eq $prop.SettingId -and $_.CategoryId -eq $prop.CategoryId -and $_.SubCategoryDefinition.Id -eq $prop.SubCategoryDefinition.Id }
$val2 = $prop2.$settingsValue
if($val1 -isnot [array] -and $val2 -is [array] -and $val2.Count -gt 1)
{
Write-Log "Multiple compare results returend for $($prop.Name). Using first result" 2
$val2 = $val2[0]
}
Add-CompareProperty $prop.Name $val1 $val2 $prop.Category $prop.SubCategory
}
# These objects are defined only on Object 2. They will be last in the table
foreach ($prop in $docObj2.Settings)
{
if(($prop.SettingId + $prop.CategoryId + $prop.SubCategoryDefinition.Id) -in $addedProperties) { continue }
$addedProperties += ($prop.SettingId + $prop.CategoryId + $prop.SubCategoryDefinition.Id)
$val2 = $prop.$settingsValue
$prop2 = $docObj1.Settings | Where { $_.SettingId -eq $prop.SettingId -and $_.CategoryId -eq $prop.CategoryId -and $_.SubCategoryDefinition.Id -eq $prop.SubCategoryDefinition.Id }
$val1 = $prop2.$settingsValue
if($val2 -isnot [array] -and $val1 -is [array] -and $val1.Count -gt 1)
{
Write-Log "Multiple compare results returend for $($prop.Name). Using first result" 2
$val1 = $val1[0]
}
Add-CompareProperty $prop.Name $val1 $val2 $prop.Category $prop.SubCategory
}
}
else
{
Set-ColumnVisibility $true ($null -ne ($docObj1.Settings | Where SubCategory -ne $null))
foreach ($prop in $docObj1.Settings)
{
if(($prop.EntityKey + $prop.Category + $prop.SubCategory) -in $addedProperties) { continue }
@@ -1618,8 +1735,8 @@ function Compare-ObjectsBasedonDocumentation
{
$applicabilityRule2 = $docObj2.ApplicabilityRules | Where { $_.Id -eq $applicabilityRule.Id }
$applicabilityRulesAdded += $applicabilityRule.Id
$val1 = ($applicabilityRule.Rule + [environment]::NewLine + $applicabilityRule.Value)
$val2 = ($applicabilityRule2.Rule + [environment]::NewLine + $applicabilityRule2.Value)
$val1 = ($applicabilityRule.Rule + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $applicabilityRule.Value)
$val2 = ($applicabilityRule2.Rule + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $applicabilityRule2.Value)
Add-CompareProperty $applicabilityRule.Property $val1 $val2 $applicabilityRule.Category
}
@@ -1629,8 +1746,8 @@ function Compare-ObjectsBasedonDocumentation
if(($applicabilityRule.Id) -in $applicabilityRulesAdded) { continue }
$applicabilityRule2 = $docObj1.ApplicabilityRules | Where { $_.Id -eq $applicabilityRule.Id }
$script:applicabilityRulesAdded += $applicabilityRule.Id
$val2 = ($applicabilityRule.Rule + [environment]::NewLine + $applicabilityRule.Value)
$val1 = ($applicabilityRule2.Rule + [environment]::NewLine + $applicabilityRule2.Value)
$val2 = ($applicabilityRule.Rule + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $applicabilityRule.Value)
$val1 = ($applicabilityRule2.Rule + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $applicabilityRule2.Value)
Add-CompareProperty $applicabilityRule.Property $val1 $val2 $applicabilityRule.Category
}
@@ -1640,8 +1757,8 @@ function Compare-ObjectsBasedonDocumentation
{
$complianceAction2 = $docObj2.ComplianceActions | Where { $_.IdStr -eq $complianceAction.IdStr }
$complianceActionsAdded += $complianceAction.IdStr
$val1 = ($complianceAction.Action + [environment]::NewLine + $complianceAction.Schedule + [environment]::NewLine + $complianceAction.MessageTemplateId + [environment]::NewLine + $complianceAction.EmailCCIds)
$val2 = ($complianceAction2.Action + [environment]::NewLine + $complianceAction2.Schedule + [environment]::NewLine + $complianceAction2.MessageTemplateId + [environment]::NewLine + $complianceAction2.EmailCCIds)
$val1 = ($complianceAction.Action + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction.Schedule + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction.MessageTemplateId + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction.EmailCCIds)
$val2 = ($complianceAction2.Action + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction2.Schedule + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction2.MessageTemplateId + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction2.EmailCCIds)
Add-CompareProperty $complianceAction.Category $val1 $val2
}
@@ -1651,8 +1768,8 @@ function Compare-ObjectsBasedonDocumentation
if(($complianceAction.IdStr) -in $complianceActionsAdded) { continue }
$complianceAction2 = $docObj1.ComplianceActions | Where { $_.IdStr -eq $complianceAction.IdStr }
$complianceActionsAdded += $complianceAction.IdStr
$val2 = ($complianceAction.Action + [environment]::NewLine + $complianceAction.Schedule + [environment]::NewLine + $complianceAction.MessageTemplateId + [environment]::NewLine + $complianceAction.EmailCCIds)
$val1 = ($complianceAction2.Action + [environment]::NewLine + $complianceAction2.Schedule + [environment]::NewLine + $complianceAction2.MessageTemplateId + [environment]::NewLine + $complianceAction2.EmailCCIds)
$val2 = ($complianceAction.Action + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction.Schedule + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction.MessageTemplateId + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction.EmailCCIds)
$val1 = ($complianceAction2.Action + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction2.Schedule + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction2.MessageTemplateId + ($global:cbCompareMultiValueDelimiter.SelectedValue) + $complianceAction2.EmailCCIds)
Add-CompareProperty $complianceAction.Category $val1 $val2
}
@@ -1778,6 +1895,10 @@ function Invoke-SilentBatchJob
$global:cbCompareCSVDelimiter.ItemsSource = @("", ",",";","-","|")
$global:cbCompareCSVDelimiter.SelectedValue = ($settingsObj.BulkCompare | Where Name -eq "cbCompareCSVDelimiter").Value
$objectSeparator = "[ { Name: `"New line`",Value: `"$([System.Environment]::NewLine)`" }, {Name: `";`",Value: `";`" }, {Name: `"|`",Value: `"|`" }]" | ConvertFrom-Json
$global:cbCompareMultiValueDelimiter.ItemsSource = $objectSeparator
$global:cbCompareMultiValueDelimiter.SelectedValue = (Get-Setting "Compare" "ObjectSeparator" ([System.Environment]::NewLine))
Set-CompareProviderOptions $global:cbCompareProvider
Set-BatchProperties $settingsObj.BulkCompare $script:cmpForm -SkipMissingControlWarning
+220 -18
View File
@@ -20,7 +20,7 @@ $global:documentationProviders = @()
function Get-ModuleVersion
{
'2.2.1'
'2.3.0'
}
function Invoke-InitializeModule
@@ -40,6 +40,7 @@ function Invoke-InitializeModule
useDeviceContext="SettingDetails.installContextLabel"
uninstallOnDeviceRemoval="SettingDetails.UninstallOnRemoval"
isRemovable="SettingDetails.installAsRemovable"
preventManagedAppBackup="AppResources.AppSettingsUx.preventManagedAppBackup"
vpnConfigurationId="PolicyType.vpn"
Action="SettingDetails.actionColumnName"
Schedule="ScheduledAction.List.schedule"
@@ -228,6 +229,7 @@ function Get-ObjectDocumentation
$script:applicabilityRules = @()
$script:objectAssignments = @()
$script:objectScripts = @()
$script:customTables = @()
$script:admxCategories = $null
$script:ObjectTypeFullTable = @{} # Hash table with objects that should be documented in a single table eg ScopeTags
@@ -288,12 +290,20 @@ function Get-ObjectDocumentation
$properties = @("Name","Value","RootCategory","Category","RawValue","RawJsonValue","DefaultValue","Description")
}
#endregion
#region Compliance Policies V2
elseif($type -eq "#microsoft.graph.deviceManagementCompliancePolicy")
{
Invoke-TranslateComplianceV2Object $obj $objectType | Out-Null
$properties = @("Name","Value","RootCategory","Category","RawValue","RawJsonValue","DefaultValue","Description")
}
#endregion
#region Endpoint Security
elseif($type -eq "#microsoft.graph.deviceManagementIntent")
{
Invoke-TranslateIntentObject $obj $objectType | Out-Null
$properties = @("Name","Value","Category","FullValueTable","RawValue","RecommendedValue","SettingId","Description")
$defaultDocumentationProperties = @("Name","Value","RecommendedValue")
$inputType = "Intent"
}
#endregion
#region Administrative Templates
@@ -351,6 +361,7 @@ function Get-ObjectDocumentation
Settings = $script:objectSettingsData
ComplianceActions = $script:objectComplianceActionData
ApplicabilityRules = $script:applicabilityRules
CustomTables = $script:customTables
Assignments = $script:objectAssignments
Scripts = $script:objectScripts
DisplayProperties = $properties
@@ -379,17 +390,51 @@ function Get-DocumentedSettings
function Invoke-ObjectDocumentation
{
param($documentationObj)
param($documentationObj,
$ObjectSeparator,
$PropertySeparator,
$DocumentationLanguage
)
$global:intentCategories = $null
$global:catRecommendedSettings = $null
$global:intentCategoryDefs = $null
$global:cfgCategories = $null
$script:admxCategories = $null
$script:migTable = $null
$script:offlineObjects = @{}
$script:DocumentationLanguage = "en"
$script:objectSeparator = [System.Environment]::NewLine
$script:propertySeparator = ","
$script:DocumentationLanguage = ?? $DocumentationLanguage "en"
$script:objectSeparator = ?? $ObjectSeparator ([System.Environment]::NewLine)
$script:propertySeparator = ?? $PropertySeparator ","
$loadExportedInfo = $false
if($documentationObj.Object."@ObjectFileName") {
$path = [IO.Path]::GetDirectoryName($documentationObj.Object."@ObjectFileName")
for($i = 0;$i -lt 2;$i++)
{
if($i -gt 0)
{
# Get parent directory
$path = [io.path]::GetDirectoryName($path)
}
$migFileName = Join-Path $path "MigrationTable.json"
try
{
if([IO.File]::Exists($migFileName))
{
Write-Log "Load Migration table from $migFileName"
$script:migTable = ConvertFrom-Json (Get-Content $migFileName -Raw)
}
}
catch {}
}
if(-not $script:migTable) {
Write-Log "Migration table not found" 2
}
}
Get-ObjectDocumentation $documentationObj
}
@@ -561,7 +606,7 @@ function Get-ObjectTypeString
function Add-BasicDefaultValues
{
param($obj, $objectType)
param($obj, $objectType, $profileTypeName = $null)
Add-BasicPropertyValue (Get-LanguageString "SettingDetails.nameName") (Get-GraphObjectName $obj $objectType)
Add-BasicPropertyValue (Get-LanguageString "SettingDetails.descriptionName") $obj.description
@@ -572,7 +617,7 @@ function Add-BasicDefaultValues
if($objInfo)
{
$platformType = Get-LanguageString "Platform.$($objInfo.PlatformLanguageId)"
$profileType = Get-LanguageString "ConfigurationTypes.$($objInfo.PolicyType)"
$profileType = (?? $profileTypeName (Get-LanguageString "ConfigurationTypes.$($objInfo.PolicyType)"))
if($platformType) { Add-BasicPropertyValue (Get-LanguageString "SettingDetails.platformSupported") $platformType }
if($profileType) { Add-BasicPropertyValue (Get-LanguageString "TableHeaders.configurationType") $profileType }
@@ -636,6 +681,19 @@ function Add-BasicDefaultValues
}
}
function Add-CustomTable
{
param($TableId, $Columns = @("Name", "Value"), $Values, [int]$Order = 100, $LanguageId = "")
$script:customTables += [PSCustomObject]@{
Id = $TableId
Columns = $Columns
Values = $Values
LanguageId = $LanguageId
Order = $Order
}
}
function Add-BasicAdditionalValues
{
param($obj, $objectType)
@@ -647,6 +705,10 @@ function Add-BasicAdditionalValues
if($obj.createdDateTime -is [DateTime])
{
$tmpDate = $obj.createdDateTime
if($tmpDate.Kind -eq "UTC")
{
$tmpDate = $tmpDate.ToLocalTime()
}
}
else
{
@@ -670,6 +732,10 @@ function Add-BasicAdditionalValues
if($obj.lastModifiedDateTime -is [DateTime])
{
$tmpDate = $obj.lastModifiedDateTime
if($tmpDate.Kind -eq "UTC")
{
$tmpDate = $tmpDate.ToLocalTime()
}
}
else
{
@@ -691,6 +757,10 @@ function Add-BasicAdditionalValues
if($obj.modifiedDateTime -is [DateTime])
{
$tmpDate = $obj.modifiedDateTime
if($tmpDate.Kind -eq "UTC")
{
$tmpDate = $tmpDate.ToLocalTime()
}
}
else
{
@@ -993,15 +1063,26 @@ function Invoke-TranslateADMXObject
$rawValues += $rawValue
}
$status = (?: ($definitionValue.enabled -eq $true) $enabledStr $disabledStr)
$combinedValue = $status
if($values) {
$combinedValue += $script:objectSeparator + ($values -join $script:objectSeparator)
}
$combinedValueWithLabel = $status
if($valuesWithLabel) {
$combinedValueWithLabel += $script:objectSeparator + ($valuesWithLabel -join $script:objectSeparator)
}
$script:objectSettingsData += New-Object PSObject -Property @{
Name = $definitionValue.definition.displayName
Description = $definitionValue.definition.explainText
Status = $status
Value = $values -join $script:objectSeparator
CombinedValue = ($status + $script:objectSeparator + ($values -join $script:objectSeparator))
CombinedValue = $combinedValue #($status + $script:objectSeparator + ($values -join $script:objectSeparator))
ValueWithLabel = $valuesWithLabel -join $script:objectSeparator
FullValueTable = $tableValue
CombinedValueWithLabel = ($status + $script:objectSeparator + ($valuesWithLabel -join $script:objectSeparator))
CombinedValueWithLabel = $combinedValueWithLabel #($status + $script:objectSeparator + ($valuesWithLabel -join $script:objectSeparator))
RawValue = $rawValues -join $script:propertySeparator
Class = $definitionValue.definition.classType
DefinitionId = $definitionValue.definition.id
@@ -1065,9 +1146,9 @@ function Invoke-TranslateSettingsObject
$cfgSettings = $obj.Settings
}
if(-not $global:cfgCategories)
if(-not $global:cfgCategories -or -not ($global:cfgCategories | where { $_.settingUsage -eq "configuration" }))
{
$global:cfgCategories = (Invoke-GraphRequest "/deviceManagement/configurationCategories?`$filter=platforms has 'windows10' and technologies has 'mdm'" -ODataMetadata "minimal" @params).Value
$global:cfgCategories += (Invoke-GraphRequest "/deviceManagement/configurationCategories?`$filter=platforms has 'windows10' and technologies has 'mdm'" -ODataMetadata "minimal" @params).Value
}
if(-not $global:cachedCfgSettings)
@@ -1166,13 +1247,23 @@ function Add-SettingsSetting
$objCategory = $categoryDef
}
$settingName = ""
$settingDescription = ""
if($settingsDef.displayName) {
$settingName = $settingsDef.displayName.Trim([Environment]::NewLine).Trim("`n")
}
if($settingsDef.description) {
$settingDescription = $settingsDef.description.Trim([Environment]::NewLine).Trim("`n")
}
$settingInfo = [PSCustomObject]@{
SettingId = $settingsDef.Id
SettingKey = ""
SettingName = $settingsDef.Name
Name = $settingsDef.displayName
Description=$settingsDef.description
CategortyId = $objCategory.id
Name = $settingName
Description = $settingDescription
CategoryId = $objCategory.id
Category=$objCategory.displayName
CategoryDefinition=$objCategory
SubCategory=$subCategory.displayName
@@ -1348,6 +1439,85 @@ function Add-SettingsSetting
#endregion
#region Compliance V2 Policies - Based on Settings Catalog
function Invoke-TranslateComplianceV2Object
{
param($obj, $objectType)
$platformType = Get-LanguageString "Platform.$($obj.platforms)"
Add-BasicDefaultValues $obj $objectType
Add-BasicPropertyValue (Get-LanguageString "TableHeaders.configurationType") (Get-LanguageString "ConfigurationTypes.settingsCatalog")
Add-BasicPropertyValue (Get-LanguageString "SettingDetails.platformSupported") $platformType
Add-BasicAdditionalValues $obj $objectType
$params = @{}
## Set language
if($script:DocumentationLanguage)
{
$params.Add("AdditionalHeaders", @{"Accept-Language"=$script:DocumentationLanguage})
}
$cfgSettings = (Invoke-GraphRequest "/deviceManagement/compliancePolicies('$($obj.Id)')/settings?`$expand=settingDefinitions&top=1000" -ODataMetadata "minimal" @params).Value
if($obj.'@ObjectFromFile')
{
$cfgSettings = $obj.Settings
}
if(-not $global:cfgCategories -or -not ($global:cfgCategories | where { $_.settingUsage -eq "compliance" }))
{
$global:cfgCategories += (Invoke-GraphRequest "/deviceManagement/complianceCategories?`$templateCategory=True&`$filter=platforms has 'linux' and technologies has 'linuxMdm'" -ODataMetadata "minimal" @params).Value
}
if(-not $global:cachedCfgSettings)
{
$global:cachedCfgSettings = @{}
}
$script:settingCatalogasCategories = @{}
foreach($cfgSetting in $cfgSettings)
{
if($obj.'@ObjectFromFile' -and -not $cfgSetting.settingDefinitions)
{
if($global:cachedCfgSettings.ContainsKey($cfgSetting.settingInstance.settingDefinitionId) -eq $false)
{
$defObj = Invoke-GraphRequest "/deviceManagement/configurationSettings/$($cfgSetting.settingInstance.settingDefinitionId)"
$global:cachedCfgSettings.Add($defObj.Id, $defObj)
}
}
else
{
$defObj = $cfgSetting.settingDefinitions | Where id -eq $cfgSetting.settingInstance.settingDefinitionId
if($global:cachedCfgSettings.ContainsKey($cfgSetting.settingInstance.settingDefinitionId) -eq $false)
{
$global:cachedCfgSettings.Add($defObj.Id, $defObj)
}
}
if(-not $defObj -or $script:settingCatalogasCategories.ContainsKey($defObj.categoryId)) { continue }
$catObj = $global:cfgCategories | Where Id -eq $defObj.categoryId
$rootCatObj = $global:cfgCategories | Where Id -eq $catObj.rootCategoryId
$script:settingCatalogasCategories.Add($defObj.categoryId, (New-Object PSObject -Property @{
Category=$catObj
RootCategory=$rootCatObj
}))
}
$script:curSettingsCatologPolicy = @()
$cfgSettings | % { Add-SettingsSetting $_.settingInstance $_.settingDefinitions } | Out-Null
foreach($item in ($script:curSettingsCatologPolicy | Select @{l="CategoryID";e={$_.CategoryDefinition.Id}}, @{l="SubCategoryID";e={$_.SubCategoryDefinition.Id}} -Unique))
{
$script:objectSettingsData += ($script:curSettingsCatologPolicy | Where { $_.CategoryDefinition.Id -eq $item.CategoryID -and $_.SubCategoryDefinition.Id -eq $item.SubCategoryID })
}
}
#endregion
#region Intent Objects (Endpoint Security)
function Get-IntentCategory
@@ -1530,7 +1700,7 @@ function Add-IntentSettingObjectToList
{
$passConstraint = ($dependencyItemObj.RawValue -ne $null -and $dependencyItemObj.RawValue.ToString() -ne "NotConfigured" -and $dependencyItemObj.RawValue.ToString() -ne "False")
}
if(-not $passConstraint) { break ]}
if(-not $passConstraint) { break }
}
if(-not $passConstraint)
@@ -2122,6 +2292,7 @@ function Invoke-TranslateSection
$value = $null
$valueSet = $false
$useParentProp = $false
$payloadFile = $false
#if($prop.enabled -eq $false -and $objInfo.ShowDisabled -ne $true) { continue }
@@ -2353,6 +2524,7 @@ function Invoke-TranslateSection
if($prop.filenameEntityKey -and $obj."$($prop.filenameEntityKey)")
{
$value = $obj."$($prop.filenameEntityKey)"
$payloadFile = $true
}
else
{
@@ -2506,6 +2678,23 @@ function Invoke-TranslateSection
if($addPropertyInfo)
{
Add-PropertyInfo (?: ($useParentProp -and $parent) $parent $prop) $value $rawValue
if($payloadFile -eq $true -and $obj.payload)
{
# Add payload file conetent as a property
$tmpProp = [PSCustomObject]@{
nameResourceKey = "uploadResult"
descriptionResourceKey = ""
entityKey = "payloadData"
dataType = 20
booleanActions = 0
category = $prop.Category
}
$propValue = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($obj.payload))
Add-PropertyInfo $tmpProp $propValue -originalValue $obj.payload
}
}
}
else
@@ -3592,6 +3781,7 @@ function Invoke-TranslateAssignments
"uninstallOnDeviceRemoval",
"isRemovable",
"useDeviceLicensing",
"preventManagedAppBackup",
"androidManagedStoreAppTrackIds",
"deliveryOptimizationPriority",
"installTimeSettings",
@@ -3692,7 +3882,7 @@ function Invoke-TranslateAssignments
}
$value = $tmpStr -f $tmpType
}
elseif($assignment.settings.$settingProp -eq "notConfigured")
elseif("$($assignment.settings.$settingProp)" -eq "notConfigured")
{
$value = Get-LanguageString "BooleanActions.notConfigured"
}
@@ -4234,7 +4424,7 @@ function local:Invoke-StartDocumentatiom
$script:migTable = $null
$script:scopeTags = $null
$diSource = $nul
$diSource = $null
$global:intentCategories = $null
$global:catRecommendedSettings = $null
$global:intentCategoryDefs = $null
@@ -4296,7 +4486,7 @@ function local:Invoke-StartDocumentatiom
$tmpObj | Add-Member Noteproperty -Name "GroupName" -Value (Get-ObjectTypeGroupName $tmpObj.ObjectType) -Force
}
if($groupSourceList.Count -eq 0) { contnue }
if($groupSourceList.Count -eq 0) { continue }
if($curObjectType.GroupId -eq "EndpointSecurity")
{
@@ -4550,14 +4740,22 @@ function local:Invoke-StartDocumentatiom
{
Write-Status "Process $((Get-GraphObjectName $tmpObj.Object $tmpObj.ObjectType)) ($($obj.ObjectType.Title)) - $($global:cbDocumentationType.SelectedItem.Name)"
$hasRawValue = $false
$documentedObj.Settings | % { if(($_.PSObject.Properties | Where Name -eq "RawValue")) { $hasRawValue=$true } }
$hasRawValue
$filteredSettings = @()
foreach($item in $documentedObj.Settings)
{
if(-not ($item.PSObject.Properties | Where Name -eq "RawValue") -or $documentedObj.UpdateFilteredObject -eq $false)
{
if($hasRawValue -eq $false) {
$filteredSettings = $documentedObj.Settings
break
}
$filteredSettings += $item
continue
}
if($item.AlwaysAddValue -eq $true)
{
@@ -4929,6 +5127,10 @@ function Invoke-CSVProcessItem
{
$properties = @("GroupMode","Group","Category","SubCategory")
}
elseif($documentedObj.Assignments[0].Group)
{
$properties = @("GroupMode","Group","Category")
}
else
{
$properties = @("GroupMode","Groups","Category")
+187 -24
View File
@@ -10,7 +10,7 @@ This module will also document some objects based on PowerShell functions
function Get-ModuleVersion
{
'1.6.5'
'1.6.6'
}
function Invoke-InitializeModule
@@ -76,7 +76,8 @@ function Invoke-CDDocumentObject
Properties = @("Name","Value")
}
}
elseif($type -eq '#microsoft.graph.androidManagedStoreAppConfiguration') {
elseif($type -eq '#microsoft.graph.androidForWorkMobileAppConfiguration' -or
$type -eq '#microsoft.graph.androidManagedStoreAppConfiguration') {
Invoke-CDDocumentAndroidManagedStoreAppConfiguration $documentationObj
@@ -84,8 +85,7 @@ function Invoke-CDDocumentObject
Properties = @("Name","Value","Category","SubCategory")
}
}
elseif($type -eq '#microsoft.graph.androidForWorkMobileAppConfiguration' -or
$type -eq '#microsoft.graph.iosMobileAppConfiguration')
elseif($type -eq '#microsoft.graph.iosMobileAppConfiguration')
{
Invoke-CDDocumentMobileAppConfiguration $documentationObj
return [PSCustomObject]@{
@@ -186,7 +186,7 @@ function Get-CDAllCloudApps
{
if(-not $script:allCloudApps)
{
$script:allCloudApps = (Invoke-GraphRequest -url "/servicePrincipals?`$select=displayName,appId&top=999" -ODataMetadata "minimal").value
$script:allCloudApps = (Invoke-GraphRequest -url "/servicePrincipals?`$select=displayName,appId&top=999" -ODataMetadata "minimal" -AllPages).value
}
$script:allCloudApps
}
@@ -198,7 +198,7 @@ function Get-CDAllTenantApps
$script:allTenantApps = Get-DocOfflineObjects "Applications"
if(-not $script:allTenantApps)
{
$script:allTenantApps =(Invoke-GraphRequest -url "/deviceAppManagement/mobileApps?`$select=displayName,id&top=999" -ODataMetadata "minimal").value
$script:allTenantApps =(Invoke-GraphRequest -url "/deviceAppManagement/mobileApps?`$select=displayName,id&top=999" -ODataMetadata "minimal" -AllPages).value
}
}
$script:allTenantApps
@@ -422,7 +422,7 @@ function Add-CDDocumentCustomProfileValue
$value = $obj.startMenuAppListVisibility
if($value.IndexOf(", ") -eq -1)
{
$value = $value -replace ",",", " # Option values in json file has space afte , but value in object don't
$value = $value -replace ",",", " # Option values in json file has space after , but value in object don't
}
Invoke-TranslateOption $obj $prop -PropValue $value
return $false
@@ -908,6 +908,27 @@ function Add-CDDocumentCustomProfileProperty
}
elseif($obj.'@OData.Type' -like "#microsoft.graph.iosDeviceFeaturesConfiguration")
{
foreach($configuration in $obj.iosSingleSignOnExtension.configurations)
{
$configurationType = "notConfigured"
if($configuration."@OData.Type" -eq "#microsoft.graph.keyStringValuePair")
{
$configurationType = Get-LanguageString "SettingDetails.singleSignOnExtensionConfigurationsTypeColumnOptionString"
}
elseif($configuration."@OData.Type" -eq "#microsoft.graph.keyBooleanValuePair")
{
$configurationType = Get-LanguageString "SettingDetails.singleSignOnExtensionConfigurationsTypeColumnOptionBoolean"
}
elseif($configuration."@OData.Type" -eq "#microsoft.graph.keyIntegerValuePair")
{
$configurationType = Get-LanguageString "SettingDetails.singleSignOnExtensionConfigurationsTypeColumnOptionInteger"
}
$configuration | Add-Member Noteproperty -Name "configurationKey" -Value $configuration.key -Force
$configuration | Add-Member Noteproperty -Name "configurationValue" -Value $configuration.value -Force
$configuration | Add-Member Noteproperty -Name "configurationType" -Value $configurationType -Force
}
#singleSignOnSettings
$obj | Add-Member Noteproperty -Name "kerberosPrincipalName" -Value (?? $obj.singleSignOnSettings.kerberosPrincipalName "notConfigured") -Force
@@ -1180,6 +1201,12 @@ function Add-CDDocumentCustomProfileProperty
}
elseif($obj.'@OData.Type' -eq "#microsoft.graph.windows10EnrollmentCompletionPageConfiguration")
{
$installProgressTimeout = $obj.installProgressTimeoutInMinutes
if($installProgressTimeout -eq 0) {
$installProgressTimeout = 60
}
$obj | Add-Member Noteproperty -Name "InstallProgressTimeout" -Value $installProgressTimeout
if($obj.selectedMobileAppIds.Count -eq 0)
{
$apps = Get-LanguageString "EnrollmentStatusScreen.Apps.useSelectedAppsAll"
@@ -1212,6 +1239,10 @@ function Add-CDDocumentCustomProfileProperty
$returnCodes = @()
$detectionRules = @()
$requirementRules = @()
$activeScripts = @()
$activeInstallScript = $null
$activeUninstallScript = $null
foreach($rc in $obj.returnCodes)
{
$returnCodes += [PSCustomObject]@{
@@ -1240,6 +1271,46 @@ function Add-CDDocumentCustomProfileProperty
}
}
if($obj.activeInstallScript.'#ScriptInfo')
{
$scriptType = "install"
$obj.installCommandLine = $null
$installType = "Win32Program.installScript"
$activeInstallScript = [PSCustomObject]@{
scriptType = $scriptType
scriptName = $obj.activeInstallScript.'#ScriptInfo'.displayName
scriptContent = $obj.activeInstallScript.'#ScriptInfo'.ScriptContent
enforceSignatureCheck = $obj.activeInstallScript.'#ScriptInfo'.enforceSignatureCheck
runAs32Bit = $obj.activeInstallScript.'#ScriptInfo'.runAs32Bit
}
Add-ObjectScript $header ("{0} - {1}" -f @($obj.displayName,$obj.activeInstallScript.'#ScriptInfo'.displayName)) $obj.activeInstallScript.'#ScriptInfo'.content
}
else
{
$installType = "Win32Program.installCommand"
}
if($obj.activeUninstallScript.'#ScriptInfo')
{
$scriptType = "uninstall"
$obj.uninstallCommandLine = $null
$uninstallType = "Win32Program.uninstallScript"
$activeUninstallScript = [PSCustomObject]@{
scriptType = $scriptType
scriptName = $obj.activeUninstallScript.'#ScriptInfo'.displayName
scriptContent = $obj.activeUninstallScript.'#ScriptInfo'.ScriptContent
enforceSignatureCheck = $obj.activeUninstallScript.'#ScriptInfo'.enforceSignatureCheck
runAs32Bit = $obj.activeUninstallScript.'#ScriptInfo'.runAs32Bit
}
Add-ObjectScript $header ("{0} - {1}" -f @($obj.displayName,$obj.activeUninstallScript.'#ScriptInfo'.displayName)) $obj.activeUninstallScript.'#ScriptInfo'.content
}
else
{
$uninstallType = "Win32Program.uninstallCommand"
}
foreach($rule in $obj.requirementRules)
{
if($rule.'@OData.Type' -eq "#microsoft.graph.win32LobAppFileSystemRequirement")
@@ -1308,7 +1379,11 @@ function Add-CDDocumentCustomProfileProperty
$obj | Add-Member Noteproperty -Name "requirementRulesTranslated" -Value $requirementRules -Force
$obj | Add-Member Noteproperty -Name "detectionRulesTranslated" -Value $detectionRules -Force
$obj | Add-Member Noteproperty -Name "returnCodes" -Value $returnCodes -Force
$obj | Add-Member Noteproperty -Name "activeInstallScript" -Value $activeInstallScript -Force
$obj | Add-Member Noteproperty -Name "activeUninstallScript" -Value $activeUninstallScript -Force
$obj | Add-Member Noteproperty -Name "win10Release" -Value (Get-LanguageString "MinimumOperatingSystem.Windows.V10Release.release$($obj.minimumSupportedWindowsRelease)") -Force
$obj | Add-Member Noteproperty -Name "installerType" -Value (Get-LanguageString $installType) -Force
$obj | Add-Member Noteproperty -Name "uninstallerType" -Value (Get-LanguageString $uninstallType) -Force
}
elseif($obj.'@OData.Type' -eq "#microsoft.graph.deviceHealthScript")
{
@@ -1329,6 +1404,17 @@ function Add-CDDocumentCustomProfileProperty
Add-ObjectScript $header ("{1} - {0}" -f $obj.displayName,$header) $obj.remediationScriptContent
}
}
elseif($obj.'@OData.Type' -eq "#microsoft.graph.hardwareConfiguration")
{
$vendor = ?? (Get-LanguageString "HardwareConfig.Settings.Tab.HardwareDropDown.$($obj.hardwareConfigurationFormat)" -IgnoreMissing) $obj.hardwareConfigurationFormat
$obj | Add-Member Noteproperty -Name "vendor" -Value $vendor
if($obj.configurationFileContent)
{
$obj | Add-Member Noteproperty -Name "configurationFileContentString" -Value ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(($obj.configurationFileContent))))
$header = Get-LanguageString "HardwareConfig.Settings.Tab.Configurations.perDevicePassword"
Add-ObjectScript $header ("{1} - {0}" -f $obj.displayName,$header) $obj.configurationFileContent
}
}
elseif($obj.'@OData.Type' -eq "#microsoft.graph.deviceManagementScript")
{
if($obj.ScriptContent)
@@ -1852,8 +1938,21 @@ function Invoke-CDDocumentAndroidManagedStoreAppConfiguration
###################################################
# Basic info
###################################################
$profileString = $null
if($obj.profileApplicability -eq "default")
{
$profileString = Get-LanguageString "ProfileType.workProfileAndDeviceOwner"
}
elseif($obj.profileApplicability -eq "androidWorkProfile")
{
$profileString = Get-LanguageString "ProfileType.workProfileOnly"
}
elseif($obj.profileApplicability -eq "androidDeviceOwner")
{
$profileString = Get-LanguageString "ProfileType.deviceOwnerOnly"
}
Add-BasicDefaultValues $obj $objectType
Add-BasicDefaultValues $obj $objectType $profileString
Add-BasicAdditionalValues $obj $objectType
#Add-BasicPropertyValue (Get-LanguageString "TableHeaders.configurationType") (Get-LanguageString "SettingDetails.appConfiguration")
#Add-BasicPropertyValue (Get-LanguageString "Inputs.enrollmentTypeLabel") (Get-LanguageString "EnrollmentType.devicesWithEnrollment")
@@ -1885,26 +1984,20 @@ function Invoke-CDDocumentAndroidManagedStoreAppConfiguration
}
# Not the best way. BundleId should be used but then full app info is required
if($obj.packageId -eq "com.microsoft.office.outlook*")
if($obj.packageId -eq "com.microsoft.office.outlook")
{
if([IO.File]::Exists(($global:AppRootFolder + "\Documentation\ObjectInfo\#AppConfigOutlookDevice.json")))
{
$tmp = $obj.settings | Where { $_.appConfigKey -eq "com.microsoft.outlook.EmailProfile.AccountType" }
$tmp = $payloadData.managedProperty | Where { $_.key -eq "com.microsoft.outlook.EmailProfile.AccountType" }
if($tmp){ $configEmail=$true }else{ $configEmail=$false }
$outlookSettings = [PSCustomObject]@{
configureEmail = $configEmail
}
foreach($setting in $obj.settings)
foreach($managedProperty in $payloadData.managedProperty)
{
if($setting.appConfigKeyType -eq "booleanType")
{
$value = $setting.appConfigKeyValue -eq "true"
}
else
{
$value = $setting.appConfigKeyValue
}
$outlookSettings | Add-Member Noteproperty -Name $setting.appConfigKey -Value $value -Force
$valueProperty = $managedProperty.PSObject.Properties | Where-Object Name -like "value*"
$outlookSettings | Add-Member Noteproperty -Name $managedProperty.key -Value $valueProperty.Value -Force
}
$jsonObj = Get-Content ($global:AppRootFolder + "\Documentation\ObjectInfo\#AppConfigOutlookDevice.json") | ConvertFrom-Json
@@ -1914,6 +2007,8 @@ function Invoke-CDDocumentAndroidManagedStoreAppConfiguration
$addedSettings = Get-DocumentedSettings
$additionalSettings = @()
foreach($managedProperty in $payloadData.managedProperty)
{
if(($addedSettings | Where EntityKey -eq $managedProperty.key)) { continue }
@@ -1926,14 +2021,44 @@ function Invoke-CDDocumentAndroidManagedStoreAppConfiguration
$value = $value -join ","
}
Add-CustomSettingObject ([PSCustomObject]@{
$additionalSettings += ([PSCustomObject]@{
Name = $managedProperty.key
ValueType = $valueProperty.Name.SubString(5)
Value = $value
EntityKey = $managedProperty.key
Category = Get-LanguageString "TACSettings.generalSettings"
SubCategory = Get-LanguageString "SettingDetails.additionalConfiguration"
})
}
if($additionalSettings.Count -gt 0) {
Add-CustomTable "AdditionalSettings" @("Name","ValueType","Value") $additionalSettings -Order 110
}
$permissions = @()
foreach($permission in $obj.permissionActions)
{
$permissionTemp = $permission.permission.Split('.')[-1]
if($permissionTemp) {
$permissionLngId = $permissionTemp -replace "_", ""
$permissionStr = ?? (Get-LanguageString "AndroidForWorkAppPermissions.Permissions.$($permissionLngId)") $permissionTemp
}
else {
$permissionStr = $permission.permission
}
$permissions += ([PSCustomObject]@{
Permission = $permissionStr
Action = ?? (Get-LanguageString "AndroidForWorkAppPermissions.Action.$($permission.action)") $permission.action
EntityKey = $permission.permission
})
}
if($permissions.Count -gt 0) {
Add-CustomTable "Permissions" @("Permission","Action") $permissions -Order 115 -LanguageId "AndroidForWorkAppPermissions.permissionsTitle"
}
}
}
@@ -1990,11 +2115,22 @@ function Invoke-CDDocumentMobileAppConfiguration
{
$name = $xml.dict.ChildNodes[$i].'#text'
$i++
if($xml.dict.ChildNodes[$i].Name -eq "true" -or $xml.dict.ChildNodes[$i].Name -eq "false")
{
$value = $xml.dict.ChildNodes[$i].Name
$type = "boolean"
}
else
{
$value = $xml.dict.ChildNodes[$i].'#text'
$type = $xml.dict.ChildNodes[$i].Name
}
Add-CustomSettingObject ([PSCustomObject]@{
Name = $name
Value = $value
ValueType = $type
EntityKey = $name
Category = $category
})
@@ -2002,8 +2138,18 @@ function Invoke-CDDocumentMobileAppConfiguration
}
else
{
$isOutlook = $false
foreach($targetedAppId in $obj.targetedMobileApps) {
$app = $allApps | Where Id -eq $targetedAppId
if($app.displayName -eq "Microsoft Outlook") {
$isOutlook = $true
break
}
}
# Not the best way. BundleId should be used but then full app info is required
if(($obj.packageId | Where { $_.appConfigKey -like "com.microsoft.outlook*" }))
if($isOutlook -or ($obj.packageId | Where { $_.appConfigKey -like "com.microsoft.outlook*" }))
{
if([IO.File]::Exists(($global:AppRootFolder + "\Documentation\ObjectInfo\#AppConfigOutlookDevice.json")))
{
@@ -2164,7 +2310,7 @@ function Invoke-CDDocumentCountryNamedLocation
$countryList = @()
foreach($country in $obj.countriesAndRegions)
{
$countryList += Get-LanguageString "CountryNames.countryName$($country.ToLower())"
$countryList += Get-LanguageString "AzureIAMCommon.CountryNames.countryName$($country.ToUpper())"
}
Add-CustomSettingObject ([PSCustomObject]@{
@@ -2263,6 +2409,10 @@ function Invoke-CDDocumentTermsOfUse
if($obj.termsExpiration.startDateTime -is [DateTime])
{
$tmpDate = $obj.termsExpiration.startDateTime
if($tmpDate.Kind -eq "UTC")
{
$tmpDate = $tmpDate.ToLocalTime()
}
}
else
{
@@ -3139,7 +3289,7 @@ function Invoke-CDDocumentConditionalAccess
Add-CustomSettingObject ([PSCustomObject]@{
Name = Get-LanguageString "AzureCA.WhatIfBlade.authenticationStrength"
Value = $termsOfUse -join $script:objectSeparator
Value = $authenticationStrngth -join $script:objectSeparator
Category = $category
SubCategory = ""
EntityKey = "authenticationStrength"
@@ -4117,8 +4267,18 @@ function Invoke-CDDocumentWindowsKioskConfiguration
if($obj.windowsKioskForceUpdateSchedule)
{
try
{
if($obj.windowsKioskForceUpdateSchedule.startDateTime -is [DateTime]) {
$startDateObj = $obj.windowsKioskForceUpdateSchedule.startDateTime
if($startDateObj.Kind -eq "UTC")
{
$startDateObj = $startDateObj.ToLocalTime()
}
}
else
{
$startDateObj = Get-Date $obj.windowsKioskForceUpdateSchedule.startDateTime -ErrorAction Stop
}
Add-CustomSettingObject ([PSCustomObject]@{
Name = Get-LanguageString "SettingDetails.kioskStartDateTime"
@@ -4572,15 +4732,18 @@ function Invoke-CDDocumentTranslateSectionFile
if($null -eq $obj.deviceCompliancePolicyScript)
{
$propValue = Get-LanguageString "BooleanActions.notConfigured"
$rawValue = "notConfigured"
}
else
{
$propValue = Get-LanguageString "BooleanActions.require"
$rawValue = "require"
}
Add-CustomSettingObject ([PSCustomObject]@{
Name = Get-LanguageString "SettingDetails.adminConfiguredComplianceSettingName"
Value = $propValue
EntityKey = "deviceCompliancePolicyScript"
RawValue = $rawValue
Category = $category
SubCategory = $null
})
+9 -2
View File
@@ -1,6 +1,6 @@
function Get-ModuleVersion
{
'1.0.1'
'1.1.0'
}
function Invoke-InitializeModule
@@ -74,7 +74,7 @@ function Invoke-HTMLPreProcessItems
Write-Log "CSS file not specified. Using default" 2
$HTMLCssFile = $defaultCSSFile
}
elseif([IO.File]::Exists($HTMLCssFile) -eq -$false)
elseif([IO.File]::Exists($HTMLCssFile) -eq $false)
{
Write-Log "CSS file $($HTMLCssFile) not found. Using default" 2
$HTMLCssFile = $defaultCSSFile
@@ -332,8 +332,10 @@ function Invoke-HTMLProcessItem
$lngId = ?: ($tableType -eq "BasicInfo") "SettingDetails.basics" "TableHeaders.settings" -AddCategories
if(($documentedObj.$tableType).Count -gt 0) {
Add-HTMLTableItems $obj $objectType ($documentedObj.$tableType) $properties $lngId -AddCategories -AddSubcategories
}
}
if(($documentedObj.ComplianceActions | measure).Count -gt 0)
{
@@ -351,6 +353,11 @@ function Invoke-HTMLProcessItem
Add-HTMLObjectSettings $obj $objectType $documentedObj
foreach($customTable in ($documentedObj.CustomTables | Sort-Object -Property Order))
{
Add-HTMLTableItems $obj $objectType $customTable.Values $customTable.Columns $customTable.LanguageId -AddCategories -AddSubcategories
}
if(($documentedObj.Assignments | measure).Count -gt 0)
{
if($documentedObj.Assignments[0].RawIntent)
+265
View File
@@ -0,0 +1,265 @@
function Get-ModuleVersion
{
'1.0.0'
}
function Invoke-InitializeModule
{
Add-OutputType ([PSCustomObject]@{
Name = "Json"
Value = "json"
OutputOptions = (Add-JsonOptionsControl)
PreProcess = { Invoke-JsonPreProcessItems @args }
NewObjectGroup = { Invoke-JsonNewObjectGroup @args }
NewObjectType = { Invoke-JsonNewObjectType @args }
Process = { Invoke-JsonProcessItem @args }
PostProcess = { Invoke-JsonPostProcessItems @args }
})
}
function Add-JsonOptionsControl
{
$script:jsonForm = Get-XamlObject ($global:AppRootFolder + "\Xaml\DocumentationJsonOptions.xaml") -AddVariables
Set-XamlProperty $script:jsonForm "txtJsonFileName" "Text" (Get-Setting "Documentation" "JsonDocumentName" "")
Set-XamlProperty $script:jsonForm "chkJsonOpenDocument" "IsChecked" (Get-Setting "Documentation" "JsonOpenFile" $true)
$outputFileTypes = '[ { "Name": "Single file", "Value": "Full" }, { "Name": "One file per object type", "Value": "ObjectType" } ]' | ConvertFrom-Json
Set-XamlProperty $script:jsonForm "cbJsonOutputFile" "ItemsSource" $outputFileTypes
Set-XamlProperty $script:jsonForm "cbJsonOutputFile" "SelectedValue" (Get-Setting "Documentation" "JsonOutputFileType" "Full")
Add-XamlEvent $script:jsonForm "browseJsonFileName" "add_click" {
$sf = [System.Windows.Forms.SaveFileDialog]::new()
$sf.DefaultExt = "json"
$sf.Filter = "Json (*.json)|*.json|All files (*.*)|*.*"
if ($sf.ShowDialog() -eq "OK")
{
Set-XamlProperty $script:jsonForm "txtJsonFileName" "Text" $sf.FileName
Save-Setting "Documentation" "JsonDocumentName" $sf.FileName
}
}
$script:jsonForm
}
function Invoke-JsonPreProcessItems
{
$script:jsonAllObjects = [System.Collections.Generic.List[object]]::new()
$script:jsonCurrentTypeObjects = [System.Collections.Generic.List[object]]::new()
$script:jsonCurrentTypeName = $null
$script:jsonOutputType = Get-XamlProperty $script:jsonForm "cbJsonOutputFile" "SelectedValue" "Full"
$jsonFileName = Get-XamlProperty $script:jsonForm "txtJsonFileName" "Text" ""
Save-Setting "Documentation" "JsonDocumentName" $jsonFileName
Save-Setting "Documentation" "JsonOpenFile" (Get-XamlProperty $script:jsonForm "chkJsonOpenDocument" "IsChecked")
Save-Setting "Documentation" "JsonOutputFileType" $script:jsonOutputType
$script:jsonOutFile = Expand-FileName (?? $jsonFileName "%MyDocuments%\%Organization%-%Date%.json")
$script:jsonDocumentPath = [IO.Path]::GetDirectoryName($script:jsonOutFile)
}
function Invoke-JsonNewObjectGroup
{
param($groupId)
# Groups are not used in flat Json output
}
function Invoke-JsonNewObjectType
{
param($objectTypeName)
if ($script:jsonOutputType -eq "ObjectType" -and
$script:jsonCurrentTypeName -and
$script:jsonCurrentTypeObjects.Count -gt 0)
{
Save-JsonTypeFile $script:jsonCurrentTypeName $script:jsonCurrentTypeObjects
}
$script:jsonCurrentTypeName = $objectTypeName
$script:jsonCurrentTypeObjects = [System.Collections.Generic.List[object]]::new()
}
function Invoke-JsonProcessItem
{
param($obj, $objectType, $documentedObj)
if (-not $documentedObj -or -not $obj -or -not $objectType) { return }
$objName = Get-GraphObjectName $obj $objectType
try
{
$jsonObj = [ordered]@{
objectType = $objectType.Title
name = $objName
}
# BasicInfo as a flat key/value object
if ($documentedObj.BasicInfo.Count -gt 0)
{
$basicInfo = [ordered]@{}
foreach ($item in $documentedObj.BasicInfo)
{
if ($item.Name) { $basicInfo[$item.Name] = $item.Value }
}
$jsonObj.basicInfo = $basicInfo
}
# Detailed settings as an array
if ($documentedObj.FilteredSettings.Count -gt 0)
{
$settings = [System.Collections.Generic.List[object]]::new()
foreach ($item in $documentedObj.FilteredSettings)
{
$setting = [ordered]@{ name = $item.Name; value = $item.Value }
if ($item.Category) { $setting.category = $item.Category }
if ($item.SubCategory) { $setting.subCategory = $item.SubCategory }
$settings.Add($setting)
}
$jsonObj.settings = $settings
}
# Compliance actions
if (($documentedObj.ComplianceActions | Measure-Object).Count -gt 0)
{
$actions = [System.Collections.Generic.List[object]]::new()
foreach ($item in $documentedObj.ComplianceActions)
{
$actions.Add([ordered]@{
action = $item.Action
schedule = $item.Schedule
messageTemplate = $item.MessageTemplate
emailCC = $item.EmailCC
})
}
$jsonObj.complianceActions = $actions
}
# Applicability rules
if (($documentedObj.ApplicabilityRules | Measure-Object).Count -gt 0)
{
$rules = [System.Collections.Generic.List[object]]::new()
foreach ($item in $documentedObj.ApplicabilityRules)
{
$rules.Add([ordered]@{
rule = $item.Rule
property = $item.Property
value = $item.Value
})
}
$jsonObj.applicabilityRules = $rules
}
# Custom tables — each becomes a top-level array keyed by the last segment of the language ID
foreach ($customTable in ($documentedObj.CustomTables | Sort-Object -Property Order))
{
if (-not $customTable.Values -or ($customTable.Values | Measure-Object).Count -eq 0) { continue }
$tableKey = if ($customTable.LanguageId) { $customTable.LanguageId.Split('.')[-1] } else { "customTable" }
$tableArr = [System.Collections.Generic.List[object]]::new()
foreach ($item in $customTable.Values)
{
$tableObj = [ordered]@{}
foreach ($col in $customTable.Columns)
{
$colName = $col.Split('.')[-1]
$tableObj[$colName] = "$($item.$colName)"
}
$tableArr.Add($tableObj)
}
$jsonObj[$tableKey] = $tableArr
}
# Assignments
if (($documentedObj.Assignments | Measure-Object).Count -gt 0)
{
$assignments = [System.Collections.Generic.List[object]]::new()
$hasRawIntent = $null -ne $documentedObj.Assignments[0].RawIntent
foreach ($item in $documentedObj.Assignments)
{
if ($hasRawIntent)
{
$assignObj = [ordered]@{
groupMode = $item.GroupMode
group = $item.Group
}
if ($null -ne $item.Filter) { $assignObj.filter = $item.Filter }
if ($null -ne $item.FilterMode) { $assignObj.filterMode = $item.FilterMode }
if ($item.Settings)
{
$settingsObj = [ordered]@{}
foreach ($key in $item.Settings.Keys)
{
if ($key -in @("Category","RawIntent")) { continue }
$settingsObj[$key] = $item.Settings[$key]
}
$assignObj.settings = $settingsObj
}
}
else
{
$assignObj = [ordered]@{ group = $item.Group }
if ($item.PSObject.Properties.Name -contains "Filter") { $assignObj.filter = $item.Filter }
if ($item.PSObject.Properties.Name -contains "FilterMode") { $assignObj.filterMode = $item.FilterMode }
}
$assignments.Add($assignObj)
}
$jsonObj.assignments = $assignments
}
# Scripts — included when "Document scripts" is checked in the documentation form
if ($global:chkIncludeScripts.IsChecked -and ($documentedObj.Scripts | Measure-Object).Count -gt 0)
{
$scripts = [System.Collections.Generic.List[object]]::new()
foreach ($scriptItem in $documentedObj.Scripts)
{
if (-not $scriptItem.ScriptContent) { continue }
$scripts.Add([ordered]@{
caption = $scriptItem.Caption
content = $scriptItem.ScriptContent
})
}
if ($scripts.Count -gt 0) { $jsonObj.scripts = $scripts }
}
$script:jsonCurrentTypeObjects.Add($jsonObj)
if ($script:jsonOutputType -ne "ObjectType") { $script:jsonAllObjects.Add($jsonObj) }
}
catch
{
Write-LogError "Failed to process object $objName" $_.Exception
}
}
function Invoke-JsonPostProcessItems
{
$openFile = (Get-XamlProperty $script:jsonForm "chkJsonOpenDocument" "IsChecked") -eq $true
if ($script:jsonOutputType -eq "ObjectType")
{
if ($script:jsonCurrentTypeName -and $script:jsonCurrentTypeObjects.Count -gt 0)
{
Save-JsonTypeFile $script:jsonCurrentTypeName $script:jsonCurrentTypeObjects
}
Write-Log "Json documentation saved to folder: $($script:jsonDocumentPath)"
}
else
{
$jsonContent = ConvertTo-Json -InputObject @($script:jsonAllObjects) -Depth 20
Save-DocumentationFile $jsonContent $script:jsonOutFile -OpenFile:$openFile
}
}
function Save-JsonTypeFile
{
param($typeName, $objects)
$safeTypeName = Remove-InvalidFileNameChars ($typeName.Replace(" ", "_"))
$typeFileName = [IO.Path]::Combine($script:jsonDocumentPath, "$safeTypeName.json")
$jsonContent = ConvertTo-Json -InputObject @($objects) -Depth 20
Save-DocumentationFile $jsonContent $typeFileName
Write-Log "Saved $($objects.Count) objects to $typeFileName"
}
+14 -3
View File
@@ -1,6 +1,6 @@
function Get-ModuleVersion
{
'1.1.1'
'1.2.0'
}
function Invoke-InitializeModule
@@ -29,6 +29,7 @@ function Add-MDOptionsControl
Set-XamlProperty $script:mdForm "chkMDOpenDocument" "IsChecked" (Get-Setting "Documentation" "MDOpenFile" $true)
Set-XamlProperty $script:mdForm "cbMDDocumentOutputFile" "ItemsSource" ("[ { Name: `"Single file`",Value: `"Full`" }, { Name: `"One file per object`",Value: `"Object`" }]" | ConvertFrom-Json)
Set-XamlProperty $script:mdForm "cbMDDocumentOutputFile" "SelectedValue" (Get-Setting "Documentation" "MDDocumentFileType" "Full")
Set-XamlProperty $script:mdForm "cbMDDocumentSkipDate" "IsChecked" ((Get-Setting "Documentation" "MDDocumentSkipDate" "False") -eq "True")
Add-XamlEvent $script:mdForm "browseMDDocumentName" "add_click" {
$sf = [System.Windows.Forms.SaveFileDialog]::new()
@@ -72,6 +73,7 @@ function Invoke-MDPreProcessItems
Save-Setting "Documentation" "MDCSSFile" (Get-XamlProperty $script:mdForm "txtMDCSSFile" "Text" "")
Save-Setting "Documentation" "MDOpenFile" (Get-XamlProperty $script:mdForm "chkMDOpenDocument" "IsChecked")
Save-Setting "Documentation" "MDDocumentFileType" (Get-XamlProperty $script:mdForm "cbMDDocumentOutputFile" "SelectedValue" '')
Save-Setting "Documentation" "MDDocumentSkipDate" (Get-XamlProperty $script:mdForm "cbMDDocumentSkipDate" "IsChecked")
$defaultCSSFile = $global:AppRootFolder + "\Documentation\DefaultMDStyle.css"
$MDCssFile = Get-XamlProperty $script:mdForm "txtMDCSSFile" "Text" $defaultCSSFile
@@ -81,7 +83,7 @@ function Invoke-MDPreProcessItems
Write-Log "CSS file not specified. Using default" 2
$MDCssFile = $defaultCSSFile
}
elseif([IO.File]::Exists($MDCssFile) -eq -$false)
elseif([IO.File]::Exists($MDCssFile) -eq $false)
{
Write-Log "CSS file $($MDCssFile) not found. Using default" 2
$MDCssFile = $defaultCSSFile
@@ -142,7 +144,9 @@ function Invoke-MDPostProcessItems
$script:mdContent.AppendLine("*Organization:* $($global:Organization.displayName)`n")
$script:mdContent.AppendLine("*Generated by:* $userName$mail`n")
if((Get-XamlProperty $script:mdForm "cbMDDocumentSkipDate" "IsChecked") -ne $true) {
$script:mdContent.AppendLine("*Generated:* $((Get-Date).ToShortDateString()) $((Get-Date).ToLongTimeString())`n")
}
if($script:sectionAnchors.Count -gt 0)
{
@@ -265,7 +269,7 @@ function Invoke-MDProcessItem
foreach($prop in $global:txtMDCustomProperties.Text.Split(","))
{
# This will add language support for custom columens (or replacing existing header)
# This will add language support for custom columns (or replacing existing header)
$propInfo = $prop.Split('=')
if(($propInfo | measure).Count -gt 1)
{
@@ -285,7 +289,9 @@ function Invoke-MDProcessItem
$lngId = ?: ($tableType -eq "BasicInfo") "SettingDetails.basics" "TableHeaders.settings" -AddCategories
if(($documentedObj.$tableType).Count -gt 0) {
Add-MDTableItems $obj $objectType ($documentedObj.$tableType) $properties $lngId -AddCategories -AddSubcategories
}
#Add-MDTableItems $obj $objectType ($documentedObj.$tableType) $properties $lngId `
# -AddCategories:($global:chkMDAddCategories.IsChecked -eq $true) `
@@ -308,6 +314,11 @@ function Invoke-MDProcessItem
Add-MDObjectSettings $obj $objectType $documentedObj
foreach($customTable in ($documentedObj.CustomTables | Sort-Object -Property Order))
{
Add-MDTableItems $obj $objectType $customTable.Values $customTable.Columns $customTable.LanguageId -AddCategories -AddSubcategories
}
if(($documentedObj.Assignments | measure).Count -gt 0)
{
if($documentedObj.Assignments[0].RawIntent)
+104 -5
View File
@@ -3,22 +3,39 @@
#https://docs.microsoft.com/en-us/office/vba/api/overview/word
function Get-ModuleVersion
{
'1.6.0'
'1.7.0'
}
function Invoke-InitializeModule
{
if(!("Microsoft.Office.Interop.Word.Application" -as [Type]))
{
$loaded = $false
try
{
Add-Type -AssemblyName Microsoft.Office.Interop.Word
$loaded = $true
}
catch { }
try
{
$wordFile = Get-ChildItem -path "$($env:windir)\assembly\GAC_MSIL" -Filter "Microsoft.Office.Interop.Word.dll" -Recurse
if($wordFile -and $wordFile.Exists)
{
Add-Type -Path $wordFile.FullName
$loaded = $true
}
}
catch
{
Write-LogError "Failed to add Word Interop type. Cannot create word documents. Verify that Word is installed properly." $_.Exception
return
}
if(-not $loaded) {
Write-LogError "Word Interop type not found. Cannot create word documents. Verify that Word is installed properly." $_.Exception
return
}
}
Add-OutputType ([PSCustomObject]@{
@@ -46,6 +63,18 @@ function Add-WordOptionsControl
$global:spWordCustomProperties.Visibility = (?: ($global:cbWordDocumentationProperties.SelectedValue -ne "custom") "Collapsed" "Visible")
$global:txtWordCustomProperties.Visibility = (?: ($global:cbWordDocumentationProperties.SelectedValue -ne "custom") "Collapsed" "Visible")
$global:cbWordDocumentationFormat.ItemsSource = ("[ { Name: `"Word default document (docx)`",Value: `"wdFormatDocumentDefault`" }, { Name: `"Strict Open XML document`",Value: `"wdFormatStrictOpenXMLDocument`" }, { Name: `"PDF`",Value: `"wdFormatPDF`" }]" | ConvertFrom-Json)
$currentFormat = (Get-Setting "Documentation" "WordDocumentFormat" "wdFormatDocumentDefault")
if($currentFormat -eq "pdf")
{
$currentFormat = "wdFormatPDF"
}
elseif($currentFormat -eq "docx")
{
$currentFormat = "wdFormatDocumentDefault"
}
$global:cbWordDocumentationFormat.SelectedValue = $currentFormat
$global:cbWordDocumentationLevel.ItemsSource = ("[ { Name: `"Full`",Value: `"full`" }, { Name: `"Limited`",Value: `"limited`" }, { Name: `"Basic`",Value: `"basic`" }]" | ConvertFrom-Json)
$global:cbWordDocumentationLevel.SelectedValue = (Get-Setting "Documentation" "WordDocumentationLevel" "full")
@@ -114,6 +143,7 @@ function Invoke-WordPreProcessItems
{
Save-Setting "Documentation" "WordExportProperties" $global:cbWordDocumentationProperties.SelectedValue
Save-Setting "Documentation" "WordCustomDisplayProperties" $global:txtWordCustomProperties.Text
Save-Setting "Documentation" "WordDocumentFormat" $global:cbWordDocumentationFormat.SelectedValue
Save-Setting "Documentation" "WordDocumentTemplate" $global:txtWordDocumentTemplate.Text
Save-Setting "Documentation" "WordDocumentName" $global:txtWordDocumentName.Text
@@ -208,7 +238,7 @@ function Invoke-WordPreProcessItems
{
try
{
$script:doc = $wordApp.Documents.Add($global:txtWordDocumentTemplate.Text)
$script:doc = $script:wordApp.Documents.Add($global:txtWordDocumentTemplate.Text)
}
catch
{
@@ -217,7 +247,7 @@ function Invoke-WordPreProcessItems
}
else
{
$script:doc = $wordApp.Documents.Add()
$script:doc = $script:wordApp.Documents.Add()
}
#Get BuiltIn properties
@@ -262,7 +292,7 @@ function Invoke-WordPreProcessItems
$script:wordStyles = @()
$script:doc.Styles | foreach {
$script:wordStyles += [PSCUstomObject]@{
$script:wordStyles += [PSCustomObject]@{
Name=$_.NameLocal
Type=$_.Type
Style=$_
@@ -379,10 +409,51 @@ function Invoke-WordPostProcessItems
catch {}
#update fields, ToC etc.
try {
$script:doc.Fields | ForEach-Object -Process { $_.Update() | Out-Null }
}
catch {
Write-LogError "Failed to update document fields" $_.Exception
}
try {
$script:doc.TablesOfContents | ForEach-Object -Process { $_.Update() | Out-Null }
}
catch {
Write-LogError "Failed to update Table of Contents" $_.Exception
}
try {
$script:doc.TablesOfFigures | ForEach-Object -Process { $_.Update() | Out-Null }
}
catch {
Write-LogError "Failed to update Table of Figures" $_.Exception
}
try {
$script:doc.TablesOfAuthorities | ForEach-Object -Process { $_.Update() | Out-Null }
}
catch {
Write-LogError "Failed to update Table of Authorities" $_.Exception
}
Write-Log "Using document format: $($global:cbWordDocumentationFormat.SelectedValue)"
try {
$format = [Microsoft.Office.Interop.Word.WdSaveFormat]$global:cbWordDocumentationFormat.SelectedValue
}
catch
{
Write-LogError "Document validation failed" $_.Exception
$format = [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatDocumentDefault
}
<#
if($global:cbWordDocumentationFormat.SelectedValue -eq "pdf")
{
$format = [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatPDF
}
else {
$format = [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatDocumentDefault
}
#>
$fileName = $global:txtWordDocumentName.Text
if(-not $fileName)
@@ -392,7 +463,10 @@ function Invoke-WordPostProcessItems
$fileName = Expand-FileName $fileName
$format = [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatDocumentDefault
if($format -eq [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatPDF -and $fileName -notlike "*.pdf")
{
$fileName = [IO.Path]::ChangeExtension($fileName, ".pdf")
}
try
{
@@ -404,6 +478,7 @@ function Invoke-WordPostProcessItems
Write-LogError "Failed to save file $fileName" $_.Excption
}
try {
if($global:chkWordOpenDocument.IsChecked -eq $true -and $global:hideUI -ne $true)
{
$script:wordApp.Visible = $true
@@ -416,6 +491,16 @@ function Invoke-WordPostProcessItems
$script:doc.Close([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges)
$script:wordApp.Quit()
}
}
catch
{
Write-LogError "Failed to close the Word application" $_.Exception
}
finally {
[void][Runtime.InteropServices.Marshal]::ReleaseComObject($script:doc)
[void][Runtime.InteropServices.Marshal]::ReleaseComObject($script:wordApp)
[GC]::Collect(); [GC]::WaitForPendingFinalizers()
}
}
function Set-WordContentControlText
@@ -547,11 +632,13 @@ function Invoke-WordProcessItem
$lngId = ?: ($tableType -eq "BasicInfo") "SettingDetails.basics" "TableHeaders.settings" -AddCategories
if(($documentedObj.$tableType).Count -gt 0) {
Add-DocTableItems $obj $objectType ($documentedObj.$tableType) $properties $lngId `
-AddCategories:($global:chkWordAddCategories.IsChecked -eq $true) `
-AddSubcategories:($global:chkWordAddSubCategories.IsChecked -eq $true) `
-ForceFullValue:($tableType -eq "BasicInfo")
}
}
if($global:cbWordDocumentationLevel.SelectedValue -ne "basic")
{
@@ -570,6 +657,11 @@ function Invoke-WordProcessItem
}
Add-DocObjectSettings $obj $objectType $documentedObj
foreach($customTable in ($documentedObj.CustomTables | Sort-Object -Property Order))
{
Add-DocTableItems $obj $objectType $customTable.Values $customTable.Columns $customTable.LanguageId -AddCategories -AddSubcategories
}
}
if(($documentedObj.Assignments | measure).Count -gt 0)
@@ -671,6 +763,10 @@ function Set-DocTableSettingsItems
$cellRow = $row
foreach($settingProp in $properties)
{
if([String]::IsNullOrEmpty($settingProp)) {
continue
}
$script:docTable.Cell($cellRow, $firstColumn).Range.Text = (Invoke-DocTranslateColumnHeader ($settingProp.Split('.')[-1]))
$propArr = $settingProp.Split('.')
@@ -772,6 +868,9 @@ function Add-DocTableItems
$i = 1
foreach($prop in $properties)
{
if([String]::IsNullOrEmpty($prop)) {
continue
}
$script:docTable.Cell(1, $i).Range.Text = (Invoke-DocTranslateColumnHeader ($prop.Split(".")[-1]))
$i++
}
File diff suppressed because it is too large Load Diff
+14 -1
View File
@@ -35,7 +35,7 @@ function Invoke-InitializeModule
Add-ViewObject $global:EMInfoViewObject
Add-ViewItem (New-Object PSObject -Property @{
Title = "Baseline Templates"
Title = "Baseline Templates - Intent"
Id = "BaselineTemplates"
ViewID = "EMInfoGraphAPI"
API = "/deviceManagement/templates"
@@ -45,6 +45,19 @@ function Invoke-InitializeModule
ExpandAssignmentsList = $false
})
Add-ViewItem (New-Object PSObject -Property @{
Title = "Baseline Templates - Settings Catalog"
Id = "BaselineTemplatesSettingsCatalog"
ViewID = "EMInfoGraphAPI"
API = "/deviceManagement/configurationPolicyTemplates"
QUERYLIST = "`$filter=(templateFamily eq 'Baseline')"
ShowButtons = @("Export","View")
DefaultColumns = "0,displayName=Template Name,displayVersion=Version,lifecycleState=State,baseId=Template Id,id"
Permissons=@("DeviceManagementConfiguration.ReadWrite.All")
Icon="EndpointSecurity"
ExpandAssignmentsList = $false
})
Add-ViewItem (New-Object PSObject -Property @{
Title = "Android Google Play"
Id = "AndroidGooglePlay"
+8 -1
View File
@@ -521,6 +521,13 @@ function Write-AzureStorageChunk
"Content-Type" = "application/octet-stream"
}
# In PowerShell (Core) 7 v7.4+, the web cmdlets (Invoke-WebRequest, Invoke-RestMethod)
# consistently encode text-based request bodies as UTF-8, unless explicitly specified otherwise.
if ($PSVersionTable.PSVersion -ge [Version]"7.4")
{
$headers["Content-Type"] += "; charset=iso-8859-1"
}
$curProgressPreference = $ProgressPreference
$ProgressPreference = 'SilentlyContinue'
@@ -783,7 +790,7 @@ function Start-DownloadAppContent
{
foreach($file in $contentFiles.value)
{
if($contentFiles.value[-1].Id -eq $file.id) { continune }
if($contentFiles.value[-1].Id -eq $file.id) { continue }
# NOT happy about this. file objects are not always returned in the order of upload.
$contentFile = Invoke-GraphRequest -Url "/deviceAppManagement/mobileApps/$appId/$appType/contentVersions/$contentVerId/files/$($file.Id)" -NoError
+1 -1
View File
@@ -348,7 +348,7 @@ function Get-EMIntuneFilterUsage
foreach($groupID in $loadedGroups.Keys)
{
$filterObjs = $script:objFilterUsage | WHere GroupID -eq $groupID
$filterObjs = $script:objFilterUsage | Where GroupID -eq $groupID
if($filterObjs -and $loadedGroups[$groupID])
{
foreach($filterObj in $filterObjs) {
+57 -11
View File
@@ -59,6 +59,21 @@ function Invoke-InitializeModule
</policies>
</policyDefinitions>
"@
# Add settings
$global:appSettingSections += (New-Object PSObject -Property @{
Title = "Intune Tools"
Id = "IntuneTools"
Values = @()
})
Add-SettingsObject (New-Object PSObject -Property @{
Title = "Format OM-URI Settings"
Key = "FormatOMAURI"
Type = "Boolean"
DefaultValue = $false
Description = "Formats the XML for OMA-URI settings e.g. removes unnecessary spaces and empty lines."
}) "IntuneTools"
}
function Add-EMToolsViewItem
@@ -704,7 +719,10 @@ function Invoke-LoadADMXSettings
$tvItem | Add-Member -MemberType NoteProperty -Name "AllPolicies" -Value $true
}
try {
$global:tvADMXCategories.Items[1].Items.Add($tvItem) | Out-Null
}
catch{}
}
function Set-ADMXSettingStatusText
@@ -854,6 +872,7 @@ function Get-ADMXCategoryNamePath
}
$catObj = $script:admxXML.policyDefinitions.categories.selectSingleNode("$($script:xmlNSPrefix)category[@name='$($categoryId)']",$script:xmlNS)
#$catObj = $script:admxXML.policyDefinitions.categories.category | Where Name -eq "$categoryId"
$categories = @()
while($catObj)
@@ -862,6 +881,7 @@ function Get-ADMXCategoryNamePath
if($catObj.parentCategory.ref)
{
$catObj = $script:admxXML.policyDefinitions.categories.selectSingleNode("$($script:xmlNSPrefix)category[@name='$($catObj.parentCategory.ref)']", $script:xmlNS)
#$catObj = $script:admxXML.policyDefinitions.categories.category | where name -eq $catObj.parentCategory.ref
}
else
{
@@ -1037,17 +1057,18 @@ function Set-ADMXElementsPanel
}
elseif($valItem.value.longDecimal)
{
$value = $valItem.value.longDecimal.'#text'
$value = ?? $valItem.value.longDecimal.'#text' $valItem.value.longDecimal
}
elseif($valItem.value.string)
{
$value = $valItem.value.string.'#text'
$value = ?? $valItem.value.string.'#text' $valItem.value.string
}
else
{
Write-Log "Unsupported value type for $($elementNode.Id): $($valItem.value.InnerXml)" 2
$value = "<SET MANUALLY!!!>"
}
$valItems += [PSCustomObject]@{
Name = $displayName
Value = $value
@@ -1151,7 +1172,7 @@ function Set-ADMXElementsPanel
}
elseif($valItem.value.string)
{
$value = $valItem.value.string.'#text'
$value = ?? $valItem.value.string.'#text' $valItem.value.string
}
else
{
@@ -1403,20 +1424,25 @@ function Import-ADMXPolicy
{
if($admxPolicy.SettingStatus -eq 0)
{
$policyValue = "<disabled />"
$policyValue = "<disabled/>"
}
else
{
$policyValue = "<enabled />"
$policyValue = "<enabled/>"
$strValue = $admxPolicy.PolicySettings
if($strValue)
{
$policyValue += "`n`n$strValue"
$policyValue += "`n$strValue"
}
}
if((Get-SettingValue "FormatOMAURI") -eq $true)
{
$policyValue = Update-XmlFormatting $policyValue
}
$catPath = Get-ADMXCategoryOMAURIPath $admxPolicy.Definition.parentCategory.ref
$omaUriPath = "./$($admxPolicy.SettingClass)/Vendor/MSFT/Policy/Config/$($global:txtADMXPolicyAppName.Text)~Policy~$catPath/$($admxPolicy.Definition.name)"
@@ -1458,12 +1484,18 @@ function Import-ADMXPolicy
if($global:chkADMXPolicyIngest.IsChecked)
{
$xmlString = Format-XML $script:admxXML
if((Get-SettingValue "FormatOMAURI") -eq $true)
{
$xmlString = Update-XmlFormatting $xmlString
}
$intuneObj.omaSettings += [PSCustomObject]@{
"@odata.type" = "#microsoft.graph.omaSettingString"
"displayName" = (?? $global:txtADMXPolicyIngestName.Text ("$($script:currentADMXFile.Name) Ingestion"))
"description" = $null
"omaUri" = "./Device/Vendor/MSFT/Policy/ConfigOperations/ADMXInstall/$($global:txtADMXPolicyAppName.Text)/Policy/$($global:txtADMXPolicyFileName.Text)"
"value" = (Format-XML $script:admxXML)
"value" = $xmlString
}
}
@@ -1780,7 +1812,7 @@ function Get-ADMXRegIsKeySupported
if($blockedSource)
{
[System.Windows.MessageBox]::Show("The registry key '$($global:txtADMXRegKey.Text)' is not supported" + [Environment]::NewLine + [Environment]::NewLine + "Blocked by root key: $blockedSource", "Unsupported reg ket", "OK", "Error")
[System.Windows.MessageBox]::Show("The registry key '$($global:txtADMXRegKey.Text)' is not supported" + [Environment]::NewLine + [Environment]::NewLine + "Blocked by root key: $blockedSource", "Unsupported reg key", "OK", "Error")
return $false
}
return $true
@@ -1927,6 +1959,11 @@ function Import-ADMXRegProfile
$OMAURIString = ($OMAURIString + [Environment]::NewLine + [Environment]::NewLine + ($omaUriItems -join [Environment]::NewLine))
}
if((Get-SettingValue "FormatOMAURI") -eq $true)
{
$OMAURIString = Update-XmlFormatting $OMAURIString
}
$xml.policyDefinitions.SelectSingleNode("policies").AppendChild($newNode) | Out-Null
$admxRegSettings += [PSCustomObject]@{
@@ -1939,12 +1976,18 @@ function Import-ADMXRegProfile
$xml.policyDefinitions.SelectSingleNode("policies").RemoveChild($xml.policyDefinitions.policies.SelectSingleNode("policy")) | Out-Null
$xmlString = Format-XML $xml
if((Get-SettingValue "FormatOMAURI") -eq $true)
{
$xmlString = Update-XmlFormatting $xmlString
}
$intuneObj.omaSettings += [PSCustomObject]@{
"@odata.type" = "#microsoft.graph.omaSettingString"
"displayName" = "Reg ADMX Ingestion"
"description" = "This XML is generated by Intune Managemet tool"
"omaUri" = "./Device/Vendor/MSFT/Policy/ConfigOperations/ADMXInstall/IntuneManagementReg/$(($script:frmADMXRegProfile.DataContext.PolicyType))/$($rgPolicyFileName)"
"value" = (Format-XML $xml)
"value" = $xmlString
}
$intuneObj.omaSettings += $admxRegSettings
@@ -1981,9 +2024,11 @@ function Add-ADMXRegClasses
}
$classDef = @"
using System;
using System.ComponentModel;
using System.Collections.ObjectModel;
public class ADMXRegPolicyElement : INotifyPropertyChanged
public class ADMXRegPolicyElement : System.ComponentModel.INotifyPropertyChanged
{
public string DataType { get { return _dataType; } set { _dataType = value; NotifyPropertyChanged("DataType"); NotifyPropertyChanged("DataTypeDisplayString"); } }
private string _dataType = null;
@@ -2069,8 +2114,9 @@ function Add-ADMXRegClasses
}
}
"@
[Reflection.Assembly]::LoadWithPartialName("mscorlib") | Out-Null
[Reflection.Assembly]::LoadWithPartialName("System.ComponentModel") | Out-Null
Add-Type -TypeDefinition $classDef -IgnoreWarnings -ReferencedAssemblies @('System.ComponentModel')
Add-Type -TypeDefinition $classDef
}
#endregion

Some files were not shown because too many files have changed in this diff Show More