3.4.0
New features and fixes
This commit is contained in:
Binary file not shown.
@@ -73,7 +73,19 @@ function Initialize-CloudAPIManagement
|
||||
[switch]
|
||||
$JSonSettings,
|
||||
[string]
|
||||
$JSonFile
|
||||
$JSonFile,
|
||||
[switch]
|
||||
$Silent,
|
||||
[string]
|
||||
$SilentBatchFile,
|
||||
[string]
|
||||
$tenantId,
|
||||
[string]
|
||||
$appId,
|
||||
[string]
|
||||
$secret,
|
||||
[string]
|
||||
$certificate
|
||||
)
|
||||
|
||||
$global:wpfNS = "xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'"
|
||||
@@ -81,21 +93,43 @@ function Initialize-CloudAPIManagement
|
||||
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
|
||||
Add-Type -AssemblyName PresentationFramework
|
||||
|
||||
try
|
||||
{
|
||||
[xml]$xaml = Get-Content ([IO.Path]::GetDirectoryName($PSCommandPath) + "\Xaml\SplashScreen.xaml")
|
||||
$global:SplashScreen = ([Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $xaml)))
|
||||
$global:txtSplashTitle = $global:SplashScreen.FindName("txtSplashTitle")
|
||||
$global:txtSplashText = $global:SplashScreen.FindName("txtSplashText")
|
||||
$global:hideUI = ($Silent -eq $true)
|
||||
$global:SilentBatchFile = $SilentBatchFile
|
||||
|
||||
$global:txtSplashTitle.Text = ("Initializing Cloud API PowerShell Management")
|
||||
if($global:hideUI -ne $true)
|
||||
{
|
||||
# Run with UI
|
||||
try
|
||||
{
|
||||
[xml]$xaml = Get-Content ([IO.Path]::GetDirectoryName($PSCommandPath) + "\Xaml\SplashScreen.xaml")
|
||||
$global:SplashScreen = ([Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $xaml)))
|
||||
$global:txtSplashTitle = $global:SplashScreen.FindName("txtSplashTitle")
|
||||
$global:txtSplashText = $global:SplashScreen.FindName("txtSplashText")
|
||||
|
||||
$global:SplashScreen.Show() | Out-Null
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
$global:txtSplashTitle.Text = ("Initializing Cloud API PowerShell Management")
|
||||
|
||||
$global:SplashScreen.Show() | Out-Null
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
catch
|
||||
else
|
||||
{
|
||||
|
||||
# Run silent
|
||||
|
||||
if(-not $tenantId)
|
||||
{
|
||||
# Core module not loaded yet so can't use log function
|
||||
Write-Error "Tenant Id is missing. Use -TenantId <Tenant-guid> on the command line to run silent batch jobs"
|
||||
return
|
||||
}
|
||||
$global:TenantId = $tenantId
|
||||
$global:AzureAppId = $appId
|
||||
$global:ClientSecret = $secret
|
||||
$global:ClientCert = $certificate
|
||||
}
|
||||
|
||||
if($ShowConsoleWindow -ne $true)
|
||||
@@ -113,11 +147,17 @@ function Initialize-CloudAPIManagement
|
||||
$global:UseJSonSettings = $false
|
||||
}
|
||||
|
||||
$global:txtSplashText.Text = "Unblock files"
|
||||
if($global:hideUI -ne $true)
|
||||
{
|
||||
$global:txtSplashText.Text = "Unblock files"
|
||||
}
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
Unblock-AllFiles $PSScriptRoot
|
||||
|
||||
$global:txtSplashText.Text = "Load core module"
|
||||
if($global:hideUI -ne $true)
|
||||
{
|
||||
$global:txtSplashText.Text = "Load core module"
|
||||
}
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
Import-Module ($PSScriptRoot + "\Core.psm1") -Force -Global
|
||||
|
||||
|
||||
230
Core.psm1
230
Core.psm1
@@ -11,7 +11,7 @@ This module handles the WPF UI
|
||||
|
||||
function Get-ModuleVersion
|
||||
{
|
||||
'3.3.2'
|
||||
'3.4.0'
|
||||
}
|
||||
|
||||
function Start-CoreApp
|
||||
@@ -66,41 +66,77 @@ function Start-CoreApp
|
||||
$global:FirstTimeRunning = ((Get-Setting "" "FirstTimeRunning" "true") -eq "true")
|
||||
$global:MainAppStarted = $false
|
||||
|
||||
$global:txtSplashText.Text = "Initialize views"
|
||||
Set-SplashWindowText "Initialize views"
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
|
||||
Invoke-ModuleFunction "Invoke-InitializeModule"
|
||||
|
||||
#Add menu group and items
|
||||
$script:LogViewObject = (New-Object PSObject -Property @{
|
||||
Title = "Log"
|
||||
Description = "View log items"
|
||||
ID = "CoreLog"
|
||||
HideMenu = $true
|
||||
Activating = { Show-LogView }
|
||||
Permissions = @()
|
||||
ViewPanel = $null
|
||||
})
|
||||
|
||||
Add-ViewObject $script:LogViewObject
|
||||
|
||||
#This will load the main window
|
||||
$global:txtSplashText.Text = "Load main window"
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
Get-MainWindow
|
||||
|
||||
if($global:window)
|
||||
if($global:hideUI -ne $true)
|
||||
{
|
||||
$global:txtSplashText.Text = "Open default view"
|
||||
#Add menu group and items
|
||||
$script:LogViewObject = (New-Object PSObject -Property @{
|
||||
Title = "Log"
|
||||
Description = "View log items"
|
||||
ID = "CoreLog"
|
||||
HideMenu = $true
|
||||
Activating = { Show-LogView }
|
||||
Permissions = @()
|
||||
ViewPanel = $null
|
||||
})
|
||||
|
||||
Add-ViewObject $script:LogViewObject
|
||||
|
||||
#This will load the main window
|
||||
$global:txtSplashText.Text = "Load main window"
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
Get-MainWindow
|
||||
|
||||
Show-View $View
|
||||
if($global:window)
|
||||
{
|
||||
$global:txtSplashText.Text = "Open default view"
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
|
||||
Show-View $View
|
||||
|
||||
Invoke-ModuleFunction "Invoke-ShowMainWindow"
|
||||
|
||||
$global:txtSplashText.Text = "Open main window"
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
$global:window.ShowDialog() | Out-Null
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(-not $global:SilentBatchFile)
|
||||
{
|
||||
Write-Log "SilentBatchFile must be specified" 3
|
||||
return
|
||||
}
|
||||
$silentFI = [IO.FileInfo]$global:SilentBatchFile
|
||||
|
||||
if($silentFI.Exists -eq $false)
|
||||
{
|
||||
Write-Log "SilentBatchFile $($global:SilentBatchFile) not found" 3
|
||||
return
|
||||
}
|
||||
Invoke-ModuleFunction "Invoke-ShowMainWindow"
|
||||
|
||||
$global:txtSplashText.Text = "Open main window"
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
$global:window.ShowDialog() | Out-Null
|
||||
Invoke-ModuleFunction "Invoke-InitSilentBatchJob"
|
||||
|
||||
Start-RunSilentBatchJob
|
||||
}
|
||||
}
|
||||
|
||||
function Start-RunSilentBatchJob
|
||||
{
|
||||
try
|
||||
{
|
||||
$settingObj = (ConvertFrom-Json (Get-Content -Path $global:SilentBatchFile -Raw -ErrorAction Stop))
|
||||
Invoke-ModuleFunction "Invoke-SilentBatchJob" $settingObj
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-LogError "Failed to trigger silent batch job." $_.Exception
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,8 +146,8 @@ function Import-AllModules
|
||||
{
|
||||
$fileName = [IO.Path]::GetFileName($file)
|
||||
if($skipModules -contains $fileName) { Write-Warning "Module $fileName excluded"; continue; }
|
||||
|
||||
$global:txtSplashText.Text = "Import module $fileName"
|
||||
|
||||
Set-SplashWindowText "Import module $fileName"
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
|
||||
$module = Import-Module $file -PassThru -Force -Global -ErrorAction SilentlyContinue
|
||||
@@ -127,6 +163,15 @@ function Import-AllModules
|
||||
}
|
||||
}
|
||||
|
||||
function Set-SplashWindowText
|
||||
{
|
||||
param($text)
|
||||
|
||||
if($global:hideUI -eq $true) { return }
|
||||
|
||||
$global:txtSplashText.Text = $text
|
||||
}
|
||||
|
||||
#region Log functions
|
||||
function Write-Log
|
||||
{
|
||||
@@ -242,6 +287,12 @@ function Write-LogError
|
||||
function Write-Status
|
||||
{
|
||||
param($Text, [switch]$SkipLog, [switch]$Block, [switch]$Force)
|
||||
|
||||
if($global:hideUI -eq $true)
|
||||
{
|
||||
if($SkipLog -ne $true) { Write-Log $text }
|
||||
return
|
||||
}
|
||||
|
||||
if(-not $text) { $global:BlockStatusUpdates = $false }
|
||||
elseif($global:BlockStatusUpdates -eq $true -and $Force -ne $true) { return }
|
||||
@@ -415,6 +466,64 @@ function Invoke-RegisterName
|
||||
|
||||
#endregion
|
||||
|
||||
#region Silent Functions
|
||||
function Set-BatchProperties
|
||||
{
|
||||
param($settingsObj, $form)
|
||||
|
||||
if(-not $settingsObj -or -not $form)
|
||||
{
|
||||
return
|
||||
}
|
||||
|
||||
foreach($prop in $settingsObj) #($settingsObj | GM | Where MemberType -eq NoteProperty))
|
||||
{
|
||||
if($prop.Type -eq "Custom") { continue }
|
||||
|
||||
$obj = $form.FindName($prop.Name)
|
||||
if(-not $obj)
|
||||
{
|
||||
Write-Log "No setting for $($prop.Name) found" 2
|
||||
continue
|
||||
}
|
||||
|
||||
if(-not $prop.Value)
|
||||
{
|
||||
continue
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if($obj -is [System.Windows.Controls.CheckBox])
|
||||
{
|
||||
$obj.IsChecked = $prop.Value -eq $true
|
||||
}
|
||||
elseif($obj -is [System.Windows.Controls.TextBox])
|
||||
{
|
||||
$obj.Text = $prop.Value
|
||||
}
|
||||
elseif($obj -is [System.Windows.Controls.ComboBox])
|
||||
{
|
||||
$obj.SelectedValue = $prop.Value
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
Write-Log "Unsupported object type for silent batch job: $($obj.GetType().FullName)" 3
|
||||
}
|
||||
catch
|
||||
{}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-LogError "Failed to set batch job property for $($prop.Name)" $_.Exception
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Dialogs
|
||||
|
||||
function Show-AboutDialog
|
||||
@@ -671,7 +780,7 @@ function Set-ObjectGrid
|
||||
|
||||
if($obj)
|
||||
{
|
||||
$global:grdObject.Children.Add($obj)
|
||||
$global:grdObject.Children.Add($obj) | Out-Null
|
||||
$global:grdObject.Visibility = "Visible"
|
||||
}
|
||||
else
|
||||
@@ -920,6 +1029,8 @@ function Save-Setting
|
||||
{
|
||||
param($SubPath = "", $Key = "", $Value, $Type = "String")
|
||||
|
||||
if($global:hideUI -eq $true) { return }
|
||||
|
||||
if($global:JsonSettingsObj -and $global:JSonSettingFile)
|
||||
{
|
||||
if($SubPath)
|
||||
@@ -997,6 +1108,58 @@ function Save-Setting
|
||||
}
|
||||
}
|
||||
|
||||
function Remove-Setting
|
||||
{
|
||||
param($SubPath = "", $Key = "")
|
||||
|
||||
if($global:JsonSettingsObj)
|
||||
{
|
||||
if($SubPath)
|
||||
{
|
||||
$arrParts = $SubPath.TrimEnd(@('/','\')).Split(@('/','\'))
|
||||
}
|
||||
else
|
||||
{
|
||||
$arrParts = @()
|
||||
}
|
||||
|
||||
$parentSetting = $global:JsonSettingsObj
|
||||
|
||||
foreach($part in $arrParts)
|
||||
{
|
||||
if(($parentSetting.PSObject.Properties | Where Name -eq $part))
|
||||
{
|
||||
$parentSetting = $parentSetting.$part
|
||||
}
|
||||
else
|
||||
{
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if(($parentSetting.PSObject.Properties | Where Name -eq $Key))
|
||||
{
|
||||
$parentSetting.PSObject.Properties.Remove($Key)
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$regPath = Get-RegPath $subPath
|
||||
try
|
||||
{
|
||||
$temp = Get-Item -LiteralPath $regPath -ErrorAction SilentlyContinue
|
||||
if(($temp.Property -contains $Key))
|
||||
{
|
||||
Remove-ItemProperty -Path $regPath -Name $Key -Force -ErrorAction Stop
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-LogError "Failed to remove reg value: $($Key) in key $($regPath)" $_.Exception
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Get-Setting
|
||||
{
|
||||
param($SubPath = "", $Key = "", $defautValue)
|
||||
@@ -2031,10 +2194,15 @@ function Get-MainWindow
|
||||
#region Module functions
|
||||
function Invoke-ModuleFunction
|
||||
{
|
||||
param($function)
|
||||
param($function, $arguments = $null)
|
||||
|
||||
Write-Log "Trigger function $function"
|
||||
|
||||
$params = @{}
|
||||
if($arguments)
|
||||
{
|
||||
$params.Add("ArgumentList",$arguments)
|
||||
}
|
||||
foreach($module in $global:loadedModules)
|
||||
{
|
||||
# Get command with ExportedFunctions instead of Get-Command
|
||||
@@ -2042,7 +2210,7 @@ function Invoke-ModuleFunction
|
||||
if($cmd)
|
||||
{
|
||||
Write-Log "Trigger $function in $($module.Name)"
|
||||
Invoke-Command -ScriptBlock $cmd.ScriptBlock
|
||||
Invoke-Command -ScriptBlock $cmd.ScriptBlock @params
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
The script can document most of the profiles and policies in Intune. The output can either be CSV or Word. Documenting to Word can either be to an existing Word template or empty document. There are many options for the documentation e.g. Language, Header styles, Table styles, managing not configured items etc.
|
||||
|
||||
The idea behind the documentation method in the script is to output the information as close to the Endpoint Manager portal as possible. Some of the objects has a different property name or value in the Summary text vs Edit mode in the portal. The documentation will then use the Edit mode information when possible. Some policies and profiles might have a slightly different order that the portal.
|
||||
The idea behind the documentation method in the script is to output the information as close to the Endpoint Manager portal as possible. Some of the objects has a different property name or value in the Summary text vs Edit mode in the portal. The documentation will then use the Edit mode information when possible. Some policies and profiles might have a slightly different order that the portal.
|
||||
|
||||
The objects can be documented in three ways:
|
||||
|
||||
@@ -18,11 +18,11 @@ The objects can be documented in three ways:
|
||||
|
||||
Document all supported objects. Initiated in the Bulk menu
|
||||
|
||||
Documentation is a very complex process. There are multiple types of objects, different languages, different types of properties etc. The best output is often based on a personal opinion. Some parts can be configured but not everything can be personalized. The output of most properties is simple, there is a name and a value. This is not the case for some properties e.g. a firewall rule. The firewall rule is itself a table with lots of possible values. The documentation will add the multi-property values with a property separator, comma is the default setting. There are also properties that contains multiple values. These will be added with an object separator, new line as default. The separators can be changed e.g. it might be better to use | as a object separator when documenting to a CSV.
|
||||
Documentation is a very complex process. There are multiple types of objects, different languages, different types of properties etc. The best output is often based on a personal opinion. Some parts can be configured but not everything can be personalized. The output of most properties is simple, there is a name and a value. This is not the case for some properties e.g. a firewall rule. The firewall rule is itself a table with lots of possible values. The documentation will add the multi-property values with a property separator, comma is the default setting. There are also properties that contains multiple values. These will be added with an object separator, new line as default. The separators can be changed e.g. it might be better to use | as a object separator when documenting to a CSV.
|
||||
|
||||
**Note:** The word document might need some manual post updates. Tables are auto generated but they might have to be tweaked for personal preferences.
|
||||
|
||||
Please read the [Deep Dive](#deep-dive) section below for a detailed description of the documentation process.
|
||||
Please read the [Deep Dive](#deep-dive) section below for a detailed description of the documentation process.
|
||||
|
||||
**Language Support**
|
||||
|
||||
@@ -66,13 +66,13 @@ The documentation is based on a two step process
|
||||
|
||||
This will collection all the information about the object and add it to a PowerShell object in the code
|
||||
|
||||
* Send the information to the selected output type
|
||||
* Send the information to the selected output provider
|
||||
|
||||
This will send all the information gathered about the object to the selected output provider
|
||||
|
||||
These steps are then repeated for each object that is being documented.
|
||||
|
||||
An output provider then has an initial (PreProcess) and finish (PostProcess) step e.g. the Word provider will create a word document in the initial task, document all properties and then update content tables, word properties and save the document in the finish task.
|
||||
An output provider then has an initial (PreProcess) and finish (PostProcess) step e.g. the Word provider will create a word document in the initial task, document all properties and then update content tables, word properties and save the document in the finish task.
|
||||
|
||||
**Object Types**
|
||||
|
||||
@@ -97,7 +97,7 @@ Json files for translating property objects to documentation is located in the D
|
||||
|
||||
The generated files sometimes requires additional manually created properties. These could be properties in the UI that has a Yes/No, Enabled/Not Configured etc. trigger associated with a specific value. These properties must be manually added to the object before the documentation. The `DocumentationCustom.psm1` file takes care of this. This file is also used for overriding the documentation of specific values and other custom required processing.
|
||||
|
||||
The json files contains a definition of each property to document. This includes information like type e.g. Boolean (Yes/No, Allow/Block, Enabled/Disabled etc.), Options, DataTable etc. The script will use these files to translate each property into a PSCustomObject that is then used by the output provider. The functionality of these files has been extended to enhance the documentation options for the manually created files. Data types of 100 or above is custom functionality. All data types below 100 is based on the same functionality as in the Intune portal. The data type engine in the script is created based on best effort of the generated json files.
|
||||
The json files contains a definition of each property to document. This includes information like type e.g. Boolean (Yes/No, Allow/Block, Enabled/Disabled etc.), Options, DataTable etc. The script will use these files to translate each property into a PSCustomObject that is then used by the output provider. The functionality of these files has been extended to enhance the documentation options for the manually created files. Data types of 100 or above is custom functionality. All data types below 100 is based on the same functionality as in the Intune portal. The data type engine in the script is created based on best effort of the generated json files.
|
||||
|
||||
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.
|
||||
|
||||
@@ -132,7 +132,7 @@ The priority order for object documentation is:
|
||||
|
||||
**Documentation Provider**
|
||||
|
||||
The documentation provider takes care of collecting all the information about the object. The `DocumentationCustom.psm1`file is an example of this. This file has examples of custom translation of properties for json files and examples of custom translation of objects via a PowerShell functions.
|
||||
The documentation provider takes care of collecting all the information about the object. The `DocumentationCustom.psm1` file is an example of this. This file has examples of custom translation of properties for json files and examples of custom translation of objects via a PowerShell functions.
|
||||
|
||||
Documentation providers has a Priority property. This defines in what order the providers will be triggered. The provider with the lowest priority number will be executed first. The included custom documentation provider has a priority number of 1000. The information gathering of the provider can be overridden by creating a custom documentation provider with a lower priority number.
|
||||
|
||||
@@ -140,7 +140,7 @@ Documentation providers has a Priority property. This defines in what order the
|
||||
|
||||
Once the script has finished gathering all the data of an object, it sends it to the Documentation Output provider. This will then document it to the specific output type of the provider. Word and CSV are included. There is also a "None" provider included. This will only add the gathered information in the UI. This is used for quick information or when building the translation files. This is also used by the comparison functionality.
|
||||
|
||||
The`DocumentationWord.psm1` and `DocumentationWordOptions.xaml` files are example on how to create an output provider. The xaml file contains the configuration options in the UI. The psm1 file registers the provider and builds the Word document based on the gathered information.
|
||||
The `DocumentationWord.psm1` and `DocumentationWordOptions.xaml` files are example on how to create an output provider. The xaml file contains the configuration options in the UI. The psm1 file registers the provider and builds the Word document based on the gathered information.
|
||||
|
||||
**Translation Files**
|
||||
|
||||
|
||||
@@ -14,5 +14,66 @@
|
||||
"dataType": 20,
|
||||
"booleanActions": 0,
|
||||
"category": "WindowsFeatureUpdateProfile.Details.deploymentSettingsTitle"
|
||||
}
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "WindowsFeatureUpdateProfile.Details.RolloutOptions.label",
|
||||
"descriptionResourceKey": "",
|
||||
"entityKey": "featureUpdateRolloutOption",
|
||||
"dataType": 16,
|
||||
"booleanActions": 0,
|
||||
"category": "WindowsFeatureUpdateProfile.Details.deploymentSettingsTitle",
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "WindowsUpdateRolloutOptions.immediateStart",
|
||||
"descriptionResourceKey": "",
|
||||
"value": "immediateStart"
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "WindowsUpdateRolloutOptions.gradualRollout",
|
||||
"descriptionResourceKey": "",
|
||||
"value": "gradualRollout",
|
||||
"ChildSettings": [
|
||||
{
|
||||
"nameResourceKey": "WindowsFeatureUpdateProfile.Details.GradualRolloutStartDate.label",
|
||||
"descriptionResourceKey": "",
|
||||
"dataType": 20,
|
||||
"category": "WindowsFeatureUpdateProfile.Details.deploymentSettingsTitle",
|
||||
"entityKey": "featureUpdateRolloutStartDate",
|
||||
"booleanActions": 0
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "WindowsFeatureUpdateProfile.Details.GradualRolloutEndDate.label",
|
||||
"descriptionResourceKey": "",
|
||||
"dataType": 20,
|
||||
"category": "WindowsFeatureUpdateProfile.Details.deploymentSettingsTitle",
|
||||
"entityKey": "featureUpdateRolloutEndDate",
|
||||
"booleanActions": 0
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "WindowsFeatureUpdateProfile.Details.GradualRolloutInterval.label",
|
||||
"descriptionResourceKey": "",
|
||||
"dataType": 20,
|
||||
"category": "WindowsFeatureUpdateProfile.Details.deploymentSettingsTitle",
|
||||
"entityKey": "featureUpdateRolloutInterval",
|
||||
"booleanActions": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "WindowsUpdateRolloutOptions.startDateOnly",
|
||||
"descriptionResourceKey": "",
|
||||
"value": "startDateOnly",
|
||||
"ChildSettings": [
|
||||
{
|
||||
"nameResourceKey": "WindowsFeatureUpdateProfile.Details.GradualRolloutStartDate.label",
|
||||
"descriptionResourceKey": "",
|
||||
"dataType": 20,
|
||||
"category": "WindowsFeatureUpdateProfile.Details.deploymentSettingsTitle",
|
||||
"entityKey": "featureUpdateRolloutStartDate",
|
||||
"booleanActions": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -90,7 +90,20 @@
|
||||
"nameResourceKey": "publicPlayStoreEnabledName",
|
||||
"descriptionResourceKey": "publicPlayStoreEnabledDescription",
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 2,
|
||||
"nameResourceKey": "publicPlayStoreEnabledWarning",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
|
||||
@@ -72,6 +72,23 @@
|
||||
"defaultValue": false,
|
||||
"policyType": 46,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 7,
|
||||
"nameResourceKey": "managedPasteboardRequiredName",
|
||||
"descriptionResourceKey": "managedPasteboardRequiredDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "managedPasteboardRequired",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 46,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
@@ -1883,23 +1900,6 @@
|
||||
"defaultValue": false,
|
||||
"policyType": 46,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 7,
|
||||
"nameResourceKey": "managedPasteboardRequiredName",
|
||||
"descriptionResourceKey": "managedPasteboardRequiredDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "managedPasteboardRequired",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 46,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
@@ -224,6 +224,23 @@
|
||||
"defaultValue": false,
|
||||
"policyType": 46,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockIosICloudPrivateRelayName",
|
||||
"descriptionResourceKey": "blockIosICloudPrivateRelayDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudPrivateRelayBlocked",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 46,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
@@ -1,188 +1,240 @@
|
||||
{
|
||||
"cloudandstorage_macgeneral": {
|
||||
"isSettingDescription": false,
|
||||
"showAsSectionHeader": true,
|
||||
"dataType": 8,
|
||||
"category": 18,
|
||||
"nameResourceKey": "allEnrollmentTypesHeaderNameMac",
|
||||
"descriptionResourceKey": "allEnrollmentTypesHeaderDescriptionMac",
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockKeychainCloudSyncName",
|
||||
"descriptionResourceKey": "blockKeychainCloudSyncDescription",
|
||||
"childSettings": [
|
||||
"cloudandstorage_macgeneral": [
|
||||
{
|
||||
"isSettingDescription": false,
|
||||
"showAsSectionHeader": true,
|
||||
"dataType": 8,
|
||||
"category": 18,
|
||||
"nameResourceKey": "allEnrollmentTypesHeaderNameMac",
|
||||
"descriptionResourceKey": "allEnrollmentTypesHeaderDescriptionMac",
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockKeychainCloudSyncName",
|
||||
"descriptionResourceKey": "blockKeychainCloudSyncDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "keychainBlockCloudSync",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudDocumentSyncName",
|
||||
"descriptionResourceKey": "blockICloudDocumentSyncDescription",
|
||||
"childSettings": [
|
||||
],
|
||||
"entityKey": "keychainBlockCloudSync",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudDesktopAndDocumentsName",
|
||||
"descriptionResourceKey": "blockICloudDesktopAndDocumentsDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockDocumentSync",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudMailName",
|
||||
"descriptionResourceKey": "blockICloudMailDescription",
|
||||
"childSettings": [
|
||||
],
|
||||
"entityKey": "iCloudDesktopAndDocumentsBlocked",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudDocumentSyncName",
|
||||
"descriptionResourceKey": "blockICloudDocumentSyncDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockMail",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudAddressBookName",
|
||||
"descriptionResourceKey": "blockICloudAddressBookDescription",
|
||||
"childSettings": [
|
||||
],
|
||||
"entityKey": "iCloudBlockDocumentSync",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudMailName",
|
||||
"descriptionResourceKey": "blockICloudMailDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockAddressBook",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudCalendarName",
|
||||
"descriptionResourceKey": "blockICloudCalendarDescription",
|
||||
"childSettings": [
|
||||
],
|
||||
"entityKey": "iCloudBlockMail",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudAddressBookName",
|
||||
"descriptionResourceKey": "blockICloudAddressBookDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockCalendar",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudRemindersName",
|
||||
"descriptionResourceKey": "blockICloudRemindersDescription",
|
||||
"childSettings": [
|
||||
],
|
||||
"entityKey": "iCloudBlockAddressBook",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudCalendarName",
|
||||
"descriptionResourceKey": "blockICloudCalendarDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockReminders",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudBookmarksName",
|
||||
"descriptionResourceKey": "blockICloudBookmarksDescription",
|
||||
"childSettings": [
|
||||
],
|
||||
"entityKey": "iCloudBlockCalendar",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudRemindersName",
|
||||
"descriptionResourceKey": "blockICloudRemindersDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockBookmarks",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudNotesName",
|
||||
"descriptionResourceKey": "blockICloudNotesDescription",
|
||||
"childSettings": [
|
||||
],
|
||||
"entityKey": "iCloudBlockReminders",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudBookmarksName",
|
||||
"descriptionResourceKey": "blockICloudBookmarksDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockNotes",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "MacBlockICloudPhotoLibraryName",
|
||||
"descriptionResourceKey": "blockICloudPhotoLibraryDescription",
|
||||
"childSettings": [
|
||||
],
|
||||
"entityKey": "iCloudBlockBookmarks",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockICloudNotesName",
|
||||
"descriptionResourceKey": "blockICloudNotesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockPhotoLibrary",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockMacActivityContinuationName",
|
||||
"descriptionResourceKey": "blockMacActivityContinuationDescription",
|
||||
"childSettings": [
|
||||
],
|
||||
"entityKey": "iCloudBlockNotes",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "MacBlockICloudPhotoLibraryName",
|
||||
"descriptionResourceKey": "blockICloudPhotoLibraryDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockActivityContinuation",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
],
|
||||
"entityKey": "iCloudBlockPhotoLibrary",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockMacActivityContinuationName",
|
||||
"descriptionResourceKey": "blockMacActivityContinuationDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudBlockActivityContinuation",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"isSettingDescription": false,
|
||||
"showAsSectionHeader": true,
|
||||
"dataType": 8,
|
||||
"category": 18,
|
||||
"nameResourceKey": "userApprovedAndAutomatedDeviceEnrollmentHeaderNameMac",
|
||||
"descriptionResourceKey": "userApprovedAndAutomatedDeviceEnrollmentHeaderDescriptionMac",
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 18,
|
||||
"nameResourceKey": "blockMacICloudPrivateRelayName",
|
||||
"descriptionResourceKey": "blockMacICloudPrivateRelayDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "iCloudPrivateRelayBlocked",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 14,
|
||||
"dataType": 15,
|
||||
"category": 22,
|
||||
"nameResourceKey": "contentCachingMaxSizeBytesName",
|
||||
"descriptionResourceKey": "contentCachingMaxSizeBytesDescription",
|
||||
|
||||
@@ -383,13 +383,13 @@
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "localSecurityOptionsSmartCardRemovalBehaviorLockWorkstation",
|
||||
"value": "lockWorkstation",
|
||||
"nameResourceKey": "localSecurityOptionsSmartCardRemovalBehaviorNoAction",
|
||||
"value": "noAction",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "localSecurityOptionsSmartCardRemovalBehaviorNoAction",
|
||||
"value": "noAction",
|
||||
"nameResourceKey": "localSecurityOptionsSmartCardRemovalBehaviorLockWorkstation",
|
||||
"value": "lockWorkstation",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
@@ -405,8 +405,8 @@
|
||||
],
|
||||
"entityKey": "localSecurityOptionsSmartCardRemovalBehavior",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "lockWorkstation",
|
||||
"unconfiguredValue": "lockWorkstation",
|
||||
"defaultValue": "noAction",
|
||||
"unconfiguredValue": "noAction",
|
||||
"policyType": 77,
|
||||
"enabled": true
|
||||
},
|
||||
|
||||
@@ -219,6 +219,102 @@
|
||||
"policyType": 108,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "frontCamerasName",
|
||||
"descriptionResourceKey": "frontCamerasDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "frontCameras",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "rearCamerasName",
|
||||
"descriptionResourceKey": "rearCamerasDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "rearCameras",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "infraredCamerasName",
|
||||
"descriptionResourceKey": "infraredCamerasDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "infraredCameras",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
@@ -251,6 +347,38 @@
|
||||
"policyType": 108,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "microphonesName",
|
||||
"descriptionResourceKey": "microphonesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "microphones",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
@@ -299,6 +427,134 @@
|
||||
"policyType": 108,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "bluetoothName",
|
||||
"descriptionResourceKey": "bluetoothDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "bluetooth",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "wwanName",
|
||||
"descriptionResourceKey": "wwanDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "wwan",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "nfcName",
|
||||
"descriptionResourceKey": "nfcDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "nfc",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "wifiName",
|
||||
"descriptionResourceKey": "wifiDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "wifi",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"isSettingDescription": false,
|
||||
"showAsSectionHeader": false,
|
||||
@@ -378,6 +634,182 @@
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"isSettingDescription": false,
|
||||
"showAsSectionHeader": false,
|
||||
"dataType": 8,
|
||||
"category": 136,
|
||||
"nameResourceKey": "portName",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "usbTypeAPortName",
|
||||
"descriptionResourceKey": "usbTypeAPortDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "usbTypeAPort",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "usbTypeCPortName",
|
||||
"descriptionResourceKey": "usbTypeCPortDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "usbTypeCPort",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "sdCardName",
|
||||
"descriptionResourceKey": "sdCardDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "sdCard",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "wakeOnLANName",
|
||||
"descriptionResourceKey": "wakeOnLANDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "wakeOnLAN",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 136,
|
||||
"nameResourceKey": "wakeOnPowerName",
|
||||
"descriptionResourceKey": "wakeOnPowerDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "enabledOption",
|
||||
"value": "enabled",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "disabledOption",
|
||||
"value": "disabled",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "wakeOnPower",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 108,
|
||||
"enabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -113,23 +113,6 @@
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
"nameResourceKey": "safeBootDisabledName",
|
||||
"descriptionResourceKey": "safeBootDisabledDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "safeBootBlocked",
|
||||
"booleanActions": 3,
|
||||
"defaultValue": false,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
@@ -249,23 +232,6 @@
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
"nameResourceKey": "debuggingFeaturesAllowedName",
|
||||
"descriptionResourceKey": "debuggingFeaturesAllowedDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "securityAllowDebuggingFeatures",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": false,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
@@ -895,6 +861,62 @@
|
||||
"unconfiguredValue": "deviceDefault",
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"columns": [
|
||||
{
|
||||
"metadata": {
|
||||
"dataType": 20,
|
||||
"category": 41,
|
||||
"nameResourceKey": "systemUpdateFreezePeriodStartDateColumnName",
|
||||
"descriptionResourceKey": "systemUpdateFreezePeriodStartDateColumnDescription",
|
||||
"emptyValueResourceKey": "systemUpdateFreezePeriodStartDateEmptyValueKey",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "startDate",
|
||||
"booleanActions": 0,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"metadata": {
|
||||
"dataType": 20,
|
||||
"category": 41,
|
||||
"nameResourceKey": "systemUpdateFreezePeriodEndDateColumnName",
|
||||
"descriptionResourceKey": "systemUpdateFreezePeriodEndDateColumnDescription",
|
||||
"emptyValueResourceKey": "systemUpdateFreezePeriodEndDateEmptyValueKey",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "endDate",
|
||||
"booleanActions": 0,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 41,
|
||||
"nameResourceKey": "systemUpdateFreezePeriodsTableName",
|
||||
"descriptionResourceKey": "systemUpdateFreezePeriodsTableDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "systemUpdateFreezePeriodsList",
|
||||
"booleanActions": 0,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
@@ -1211,6 +1233,87 @@
|
||||
"defaultValue": false,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 19,
|
||||
"category": 41,
|
||||
"nameResourceKey": "showWorkContactsInPersonalProfileName",
|
||||
"descriptionResourceKey": "showWorkContactsInPersonalProfileDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "blockOption",
|
||||
"value": false,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": true,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "crossProfilePoliciesShowWorkContactsInPersonalProfile",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": true,
|
||||
"unconfiguredValue": true,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
"nameResourceKey": "copyPasteBetweenWorkAndPersonalProfilesName",
|
||||
"descriptionResourceKey": "copyPasteBetweenWorkAndPersonalProfilesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "crossProfilePoliciesAllowCopyPaste",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": false,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 41,
|
||||
"nameResourceKey": "dataSharingBetweenWorkAndPersonalProfilesName",
|
||||
"descriptionResourceKey": "dataSharingBetweenWorkAndPersonalProfilesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "DeviceDefaultDataSharingBetweenWorkAndPersonalProfilesOption",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "BlockAllDataSharingBetweenWorkAndPersonalProfilesOption",
|
||||
"value": "crossProfileDataSharingBlocked",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "BlockWorkToPersonalDataSharingBetweenWorkAndPersonalProfilesOption",
|
||||
"value": "dataSharingFromWorkToPersonalBlocked",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "NoRestrictionsDataSharingBetweenWorkAndPersonalProfilesOption",
|
||||
"value": "crossProfileDataSharingAllowed",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "crossProfilePoliciesAllowDataSharing",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"unconfiguredValue": "notConfigured",
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
@@ -258,6 +258,43 @@
|
||||
"policyType": 9,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"columns": [
|
||||
{
|
||||
"metadata": {
|
||||
"dataType": 20,
|
||||
"category": 41,
|
||||
"nameResourceKey": "empty",
|
||||
"descriptionResourceKey": "empty",
|
||||
"emptyValueResourceKey": "trustedServerCertificateNameExample",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "trustedServerCertificateNamesName",
|
||||
"booleanActions": 0,
|
||||
"policyType": 9,
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 41,
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "trustedServerCertificateNames",
|
||||
"booleanActions": 0,
|
||||
"policyType": 9,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"complexOptions": [
|
||||
{
|
||||
@@ -491,6 +528,43 @@
|
||||
"policyType": 9,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"columns": [
|
||||
{
|
||||
"metadata": {
|
||||
"dataType": 20,
|
||||
"category": 41,
|
||||
"nameResourceKey": "empty",
|
||||
"descriptionResourceKey": "empty",
|
||||
"emptyValueResourceKey": "trustedServerCertificateNameExample",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "trustedServerCertificateNamesName",
|
||||
"booleanActions": 0,
|
||||
"policyType": 9,
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 41,
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "trustedServerCertificateNames",
|
||||
"booleanActions": 0,
|
||||
"policyType": 9,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"complexOptions": [
|
||||
{
|
||||
@@ -782,6 +856,43 @@
|
||||
"policyType": 9,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"columns": [
|
||||
{
|
||||
"metadata": {
|
||||
"dataType": 20,
|
||||
"category": 41,
|
||||
"nameResourceKey": "empty",
|
||||
"descriptionResourceKey": "empty",
|
||||
"emptyValueResourceKey": "trustedServerCertificateNameExample",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "trustedServerCertificateNamesName",
|
||||
"booleanActions": 0,
|
||||
"policyType": 9,
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 41,
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "trustedServerCertificateNames",
|
||||
"booleanActions": 0,
|
||||
"policyType": 9,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"complexOptions": [
|
||||
{
|
||||
|
||||
@@ -85,23 +85,6 @@
|
||||
"policyType": 28,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
"nameResourceKey": "blockBackupServiceName",
|
||||
"descriptionResourceKey": "blockBackupServiceDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "backupBlocked",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 28,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
@@ -153,23 +136,6 @@
|
||||
"policyType": 28,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
"nameResourceKey": "blockCellularWiFiTetheringName",
|
||||
"descriptionResourceKey": "blockCellularWiFiTetheringDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "cellularBlockWiFiTethering",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 28,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
@@ -186,6 +152,23 @@
|
||||
"defaultValue": false,
|
||||
"policyType": 28,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 41,
|
||||
"nameResourceKey": "blockAppsInstallFromUnknownSourcesName",
|
||||
"descriptionResourceKey": "blockAppsInstallFromUnknownSourcesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "appsBlockInstallFromUnknownSources",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 28,
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -505,6 +505,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "enforcedSoftwareUpdateDelayName",
|
||||
"descriptionResourceKey": "enforcedSoftwareUpdateDelayDescription",
|
||||
"emptyValueResourceKey": "EnforcedSoftwareUpdateDelayNamePlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -513,7 +514,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdatesEnforcedDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 46,
|
||||
"enabled": true
|
||||
}
|
||||
|
||||
@@ -113,6 +113,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "enforcedSoftwareUpdateDelayName",
|
||||
"descriptionResourceKey": "enforcedSoftwareUpdateDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -121,7 +122,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdatesEnforcedDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -130,6 +130,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateMajorOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateMajorOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -138,7 +139,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateMajorOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
@@ -154,6 +154,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "enforcedSoftwareUpdateDelayName",
|
||||
"descriptionResourceKey": "enforcedSoftwareUpdateDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -162,7 +163,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdatesEnforcedDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -171,6 +171,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateMinorOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateMinorOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -179,7 +180,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateMinorOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
@@ -195,6 +195,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "enforcedSoftwareUpdateDelayName",
|
||||
"descriptionResourceKey": "enforcedSoftwareUpdateDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -203,7 +204,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdatesEnforcedDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -212,6 +212,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateNonOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateNonOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -220,7 +221,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateNonOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
@@ -229,13 +229,14 @@
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "delayMajorAndMinorOSUpdateVisibilityOption",
|
||||
"value": "delayMajorOsUpdateVisibility,delayOSUpdateVisibility",
|
||||
"value": "delayOSUpdateVisibility,delayMajorOsUpdateVisibility",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 14,
|
||||
"category": 41,
|
||||
"nameResourceKey": "enforcedSoftwareUpdateDelayName",
|
||||
"descriptionResourceKey": "enforcedSoftwareUpdateDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -244,7 +245,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdatesEnforcedDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -253,6 +253,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateMajorOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateMajorOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -261,7 +262,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateMajorOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -270,6 +270,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateMinorOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateMinorOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -278,7 +279,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateMinorOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
@@ -287,13 +287,14 @@
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "delayMajorAndNonOsUpdateVisibilityOption",
|
||||
"value": "delayMajorOsUpdateVisibility,delayAppUpdateVisibility",
|
||||
"value": "delayAppUpdateVisibility,delayMajorOsUpdateVisibility",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 14,
|
||||
"category": 41,
|
||||
"nameResourceKey": "enforcedSoftwareUpdateDelayName",
|
||||
"descriptionResourceKey": "enforcedSoftwareUpdateDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -302,7 +303,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdatesEnforcedDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -311,6 +311,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateMajorOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateMajorOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -319,7 +320,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateMajorOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -328,6 +328,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateNonOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateNonOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -336,7 +337,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateNonOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
@@ -352,6 +352,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "enforcedSoftwareUpdateDelayName",
|
||||
"descriptionResourceKey": "enforcedSoftwareUpdateDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -360,7 +361,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdatesEnforcedDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -369,6 +369,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateMinorOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateMinorOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -377,7 +378,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateMinorOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -386,6 +386,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateNonOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateNonOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -394,7 +395,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateNonOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
@@ -403,13 +403,14 @@
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "delayAllUpdateVisibilityOption",
|
||||
"value": "delayMajorOsUpdateVisibility,delayOSUpdateVisibility,delayAppUpdateVisibility",
|
||||
"value": "delayOSUpdateVisibility,delayAppUpdateVisibility,delayMajorOsUpdateVisibility",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 14,
|
||||
"category": 41,
|
||||
"nameResourceKey": "enforcedSoftwareUpdateDelayName",
|
||||
"descriptionResourceKey": "enforcedSoftwareUpdateDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -418,7 +419,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdatesEnforcedDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -427,6 +427,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateMajorOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateMajorOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -435,7 +436,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateMajorOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -444,6 +444,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateMinorOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateMinorOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -452,7 +453,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateMinorOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -461,6 +461,7 @@
|
||||
"category": 41,
|
||||
"nameResourceKey": "softwareUpdateNonOSDeferredInstallDelayName",
|
||||
"descriptionResourceKey": "softwareUpdateNonOSDeferredInstallDelayDescription",
|
||||
"emptyValueResourceKey": "enforcedSoftwareUpdateDelayEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -469,7 +470,6 @@
|
||||
],
|
||||
"entityKey": "softwareUpdateNonOSDeferredInstallDelayInDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 30,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
}
|
||||
|
||||
@@ -672,6 +672,23 @@
|
||||
"policyType": 42,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionManagedAppsInBundleIdACLIncludedName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionManagedAppsInBundleIdACLIncludedDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "managedAppsInBundleIdACLIncluded",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 42,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 20,
|
||||
"category": 56,
|
||||
@@ -722,6 +739,22 @@
|
||||
"policyType": 42,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 20,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionSignInHelpTextName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionSignInHelpTextDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "signInHelpText",
|
||||
"booleanActions": 0,
|
||||
"policyType": 42,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"columns": [
|
||||
{
|
||||
|
||||
@@ -640,6 +640,23 @@
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionManagedAppsInBundleIdACLIncludedName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionManagedAppsInBundleIdACLIncludedDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "managedAppsInBundleIdACLIncluded",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 56,
|
||||
@@ -674,6 +691,74 @@
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionUserSetupDelayedName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionUserSetupDelayedDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "userSetupDelayed",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionKerberosAppsInBundleIdACLIncludedName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionKerberosAppsInBundleIdACLIncludedDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "kerberosAppsInBundleIdACLIncluded",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionCredentialsCacheMonitoredName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionCredentialsCacheMonitoredDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "credentialsCacheMonitored",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionTLSForLDAPRequiredName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionTLSForLDAPRequiredDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "tlsForLDAPRequired",
|
||||
"booleanActions": 9,
|
||||
"defaultValue": false,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 56,
|
||||
@@ -788,6 +873,54 @@
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 20,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionUsernameLabelCustomName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionUsernameLabelCustomDescription",
|
||||
"emptyValueResourceKey": "singleSignOnExtensionUsernameLabelCustomEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "usernameLabelCustom",
|
||||
"booleanActions": 0,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionModeCredentialUsedName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionModeCredentialUsedDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "singleSignOnExtensionModeCredentialUsedAlwaysName",
|
||||
"value": "always",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "singleSignOnExtensionModeCredentialUsedWhenNotSpecifiedName",
|
||||
"value": "whenNotSpecified",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "singleSignOnExtensionModeCredentialUsedKerberosDefaultName",
|
||||
"value": "kerberosDefault",
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "modeCredentialUsed",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "kerberosDefault",
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 20,
|
||||
"category": 56,
|
||||
@@ -838,6 +971,22 @@
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 20,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionSignInHelpTextName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionSignInHelpTextDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "signInHelpText",
|
||||
"booleanActions": 0,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 20,
|
||||
"category": 56,
|
||||
@@ -960,6 +1109,42 @@
|
||||
"booleanActions": 0,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"columns": [
|
||||
{
|
||||
"metadata": {
|
||||
"dataType": 20,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionPreferredKDCsColumnName",
|
||||
"emptyValueResourceKey": "singleSignOnExtensionPreferredKDCsColumnEmptyValue",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "preferredKDCsColumn",
|
||||
"booleanActions": 0,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 56,
|
||||
"nameResourceKey": "singleSignOnExtensionPreferredKDCsName",
|
||||
"descriptionResourceKey": "singleSignOnExtensionPreferredKDCsDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "preferredKDCs",
|
||||
"booleanActions": 0,
|
||||
"policyType": 58,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": true
|
||||
|
||||
@@ -344,6 +344,24 @@
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 14,
|
||||
"category": 85,
|
||||
"nameResourceKey": "macTouchIdTimeoutInHoursName",
|
||||
"descriptionResourceKey": "macTouchIdTimeoutInHoursDescription",
|
||||
"emptyValueResourceKey": "macTouchIdTimeoutInHoursEmptyValueKey",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "touchIdTimeoutInHours",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 48,
|
||||
"policyType": 61,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 0,
|
||||
"category": 85,
|
||||
|
||||
@@ -57,6 +57,67 @@
|
||||
"defaultValue": false,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 16,
|
||||
"category": 87,
|
||||
"nameResourceKey": "personalProfilePersonalApplicationsListTypeName",
|
||||
"descriptionResourceKey": "personalProfilePersonalApplicationsListTypeDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
{
|
||||
"nameResourceKey": "notConfigured",
|
||||
"value": "notConfigured",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "blockedList",
|
||||
"value": "blockedApps",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 25,
|
||||
"category": 87,
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"nameResourceKey": "allowedList",
|
||||
"value": "allowedApps",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 25,
|
||||
"category": 87,
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"entityKey": "personalProfilePlayStoreMode",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "notConfigured",
|
||||
"policyType": 2,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
@@ -747,6 +747,8 @@
|
||||
],
|
||||
"entityKey": "passwordRequiredType",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "deviceDefault",
|
||||
"unconfiguredValue": "deviceDefault",
|
||||
"policyType": 29,
|
||||
"enabled": true
|
||||
}
|
||||
|
||||
@@ -364,6 +364,8 @@
|
||||
],
|
||||
"entityKey": "passwordRequiredType",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": "deviceDefault",
|
||||
"unconfiguredValue": "deviceDefault",
|
||||
"policyType": 30,
|
||||
"enabled": true
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "complianceMinimumPasswordLengthName",
|
||||
"descriptionResourceKey": "complianceMinimumPasswordLengthDescription",
|
||||
"emptyValueResourceKey": "ComplianceMinimumPasswordLengthPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -43,7 +44,6 @@
|
||||
],
|
||||
"entityKey": "passwordMinimumLength",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 4,
|
||||
"policyType": 34,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -172,7 +172,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "compliancePasswordExpirationName",
|
||||
"descriptionResourceKey": "compliancePasswordExpirationDescription",
|
||||
"emptyValueResourceKey": "IOSMacPasswordExpirationInDaysEmptyValueKey",
|
||||
"emptyValueResourceKey": "CompliancePasswordExpirationPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -181,7 +181,6 @@
|
||||
],
|
||||
"entityKey": "passwordExpirationDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 41,
|
||||
"policyType": 34,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -190,6 +189,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "complianceNumberOfPreviousPasswordsToBlockName",
|
||||
"descriptionResourceKey": "complianceNumberOfPreviousPasswordsToBlockDescription",
|
||||
"emptyValueResourceKey": "ComplianceNumberOfPreviousPasswordsToBlockPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -198,7 +198,6 @@
|
||||
],
|
||||
"entityKey": "passwordPreviousPasswordBlockCount",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 5,
|
||||
"policyType": 34,
|
||||
"enabled": true
|
||||
}
|
||||
|
||||
@@ -100,6 +100,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "complianceMinimumPasswordLengthName",
|
||||
"descriptionResourceKey": "complianceMinimumPasswordLengthDescription",
|
||||
"emptyValueResourceKey": "ComplianceMinimumPasswordLengthPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -108,7 +109,6 @@
|
||||
],
|
||||
"entityKey": "passwordMinimumLength",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 4,
|
||||
"policyType": 35,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -166,7 +166,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "compliancePasswordExpirationName",
|
||||
"descriptionResourceKey": "compliancePasswordExpirationDescription",
|
||||
"emptyValueResourceKey": "passwordExpirationInDaysEmptyValueTwoYearsKey",
|
||||
"emptyValueResourceKey": "CompliancePasswordExpirationPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -175,7 +175,6 @@
|
||||
],
|
||||
"entityKey": "passwordExpirationDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 41,
|
||||
"policyType": 35,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -184,6 +183,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "complianceNumberOfPreviousPasswordsToBlockName",
|
||||
"descriptionResourceKey": "complianceNumberOfPreviousPasswordsToBlockDescription",
|
||||
"emptyValueResourceKey": "ComplianceNumberOfPreviousPasswordsToBlockPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -192,7 +192,6 @@
|
||||
],
|
||||
"entityKey": "passwordPreviousPasswordBlockCount",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 5,
|
||||
"policyType": 35,
|
||||
"enabled": true
|
||||
},
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "complianceMinimumPasswordLengthName",
|
||||
"descriptionResourceKey": "complianceMinimumPasswordLengthDescription",
|
||||
"emptyValueResourceKey": "ComplianceMinimumPasswordLengthPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -43,7 +44,6 @@
|
||||
],
|
||||
"entityKey": "passwordMinimumLength",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 4,
|
||||
"policyType": 37,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -176,7 +176,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "compliancePasswordExpirationName",
|
||||
"descriptionResourceKey": "compliancePasswordExpirationDescription",
|
||||
"emptyValueResourceKey": "IOSMacPasswordExpirationInDaysEmptyValueKey",
|
||||
"emptyValueResourceKey": "CompliancePasswordExpirationPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -185,7 +185,6 @@
|
||||
],
|
||||
"entityKey": "passwordExpirationDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 41,
|
||||
"policyType": 37,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -194,6 +193,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "complianceNumberOfPreviousPasswordsToBlockName",
|
||||
"descriptionResourceKey": "complianceNumberOfPreviousPasswordsToBlockDescription",
|
||||
"emptyValueResourceKey": "ComplianceNumberOfPreviousPasswordsToBlockPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -202,7 +202,6 @@
|
||||
],
|
||||
"entityKey": "passwordPreviousPasswordBlockCount",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 5,
|
||||
"policyType": 37,
|
||||
"enabled": true
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "complianceMinimumPasswordLengthName",
|
||||
"descriptionResourceKey": "complianceMinimumPasswordLengthDescription",
|
||||
"emptyValueResourceKey": "ComplianceMinimumPasswordLengthPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -43,7 +44,6 @@
|
||||
],
|
||||
"entityKey": "passwordMinimumLength",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 4,
|
||||
"policyType": 38,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -176,7 +176,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "compliancePasswordExpirationName",
|
||||
"descriptionResourceKey": "compliancePasswordExpirationDescription",
|
||||
"emptyValueResourceKey": "IOSMacPasswordExpirationInDaysEmptyValueKey",
|
||||
"emptyValueResourceKey": "CompliancePasswordExpirationPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -185,7 +185,6 @@
|
||||
],
|
||||
"entityKey": "passwordExpirationDays",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 41,
|
||||
"policyType": 38,
|
||||
"enabled": true
|
||||
},
|
||||
@@ -194,6 +193,7 @@
|
||||
"category": 106,
|
||||
"nameResourceKey": "complianceNumberOfPreviousPasswordsToBlockName",
|
||||
"descriptionResourceKey": "complianceNumberOfPreviousPasswordsToBlockDescription",
|
||||
"emptyValueResourceKey": "ComplianceNumberOfPreviousPasswordsToBlockPlaceholder",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -202,7 +202,6 @@
|
||||
],
|
||||
"entityKey": "passwordPreviousPasswordBlockCount",
|
||||
"booleanActions": 0,
|
||||
"defaultValue": 5,
|
||||
"policyType": 38,
|
||||
"enabled": true
|
||||
}
|
||||
|
||||
@@ -178,6 +178,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
@@ -383,6 +426,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
@@ -588,6 +674,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
@@ -793,6 +922,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
@@ -998,6 +1170,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 8,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
|
||||
@@ -178,6 +178,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
@@ -399,6 +442,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
@@ -604,6 +690,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
@@ -809,6 +938,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
@@ -1014,6 +1186,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
@@ -1219,6 +1434,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 12,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
|
||||
@@ -160,6 +160,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 25,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 25,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 25,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -95,6 +95,49 @@
|
||||
{
|
||||
"nameResourceKey": "derivedCredentialsOption",
|
||||
"value": "derivedCredential",
|
||||
"children": [
|
||||
{
|
||||
"dataType": 9,
|
||||
"category": 120,
|
||||
"childSettings": [
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsSearchingForTenantLevel",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 105,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"dataType": 10,
|
||||
"category": 120,
|
||||
"nameResourceKey": "derivedCredentialsTenantLevelNotConfigured",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"booleanActions": 0,
|
||||
"policyType": 105,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"options": [
|
||||
|
||||
],
|
||||
"entityKey": "derivedCredentialSettings@odata.bind",
|
||||
"booleanActions": 0,
|
||||
"policyType": 105,
|
||||
"enabled": true
|
||||
}
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
|
||||
@@ -3304,8 +3304,8 @@
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 112,
|
||||
"nameResourceKey": "trustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -3515,8 +3515,8 @@
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 112,
|
||||
"nameResourceKey": "trustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -3795,8 +3795,8 @@
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 112,
|
||||
"nameResourceKey": "trustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -4187,8 +4187,8 @@
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 112,
|
||||
"nameResourceKey": "trustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -4398,8 +4398,8 @@
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 112,
|
||||
"nameResourceKey": "trustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -4678,8 +4678,8 @@
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 112,
|
||||
"nameResourceKey": "trustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
|
||||
@@ -167,8 +167,8 @@
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 112,
|
||||
"nameResourceKey": "trustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -378,8 +378,8 @@
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 112,
|
||||
"nameResourceKey": "trustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
@@ -663,8 +663,8 @@
|
||||
],
|
||||
"dataType": 21,
|
||||
"category": 112,
|
||||
"nameResourceKey": "trustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "trustedServerCertificateNamesDescription",
|
||||
"nameResourceKey": "androidTrustedServerCertificateNamesName",
|
||||
"descriptionResourceKey": "androidTrustedServerCertificateNamesDescription",
|
||||
"childSettings": [
|
||||
|
||||
],
|
||||
|
||||
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.
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.
@@ -20,7 +20,7 @@ $global:documentationProviders = @()
|
||||
|
||||
function Get-ModuleVersion
|
||||
{
|
||||
'1.0.8'
|
||||
'1.1.0'
|
||||
}
|
||||
|
||||
function Invoke-InitializeModule
|
||||
@@ -628,12 +628,21 @@ function Add-ScopeTagStrings
|
||||
if(($obj.roleScopeTagIds | measure).Count -gt 0)
|
||||
{
|
||||
foreach($scopeTagId in $obj.roleScopeTagIds)
|
||||
{
|
||||
$scopeTagObj = $script:scopeTags | Where Id -eq $scopeTagId
|
||||
if($scopeTagObj)
|
||||
{
|
||||
$scopeTagName = $scopeTagId
|
||||
if($scopeTagId -eq "0")
|
||||
{
|
||||
$objScopeTags += $scopeTagObj.displayName
|
||||
$scopeTagName = (Get-LanguageString "SettingDetails.default")
|
||||
}
|
||||
elseif($script:scopeTags)
|
||||
{
|
||||
$scopeTagObj = $script:scopeTags | Where Id -eq $scopeTagId
|
||||
if($scopeTagObj.displayName)
|
||||
{
|
||||
$scopeTagName = $scopeTagObj.displayName
|
||||
}
|
||||
}
|
||||
$objScopeTags += $scopeTagName
|
||||
}
|
||||
}
|
||||
if($objScopeTags.Count -gt 0)
|
||||
@@ -1793,7 +1802,11 @@ function Invoke-TranslateSection
|
||||
elseif($rawValue -eq $null -and ![String]::IsNullOrEmpty($prop.defaultValue) -and $global:chkSetDefaultValue.IsChecked)
|
||||
{
|
||||
$propValue = $prop.defaultValue
|
||||
}
|
||||
}
|
||||
elseif($rawValue -eq $null -and ![String]::IsNullOrEmpty($prop.emptyValueResourceKey) -and $global:chkSetDefaultValue.IsChecked)
|
||||
{
|
||||
$propValue = Get-LanguageString $prop.emptyValueResourceKey
|
||||
}
|
||||
else
|
||||
{
|
||||
$propValue = $rawValue
|
||||
@@ -1834,6 +1847,11 @@ function Invoke-TranslateSection
|
||||
}
|
||||
$rawValue = $value
|
||||
}
|
||||
elseif($script:currentObject.'@ObjectFromFile' -eq $true)
|
||||
{
|
||||
$value = "##TBD - Linked Certificate"
|
||||
$rawValue = $value
|
||||
}
|
||||
}
|
||||
elseif($prop.dataType -eq 200) # Multi option based on boolean value
|
||||
{
|
||||
@@ -2064,6 +2082,8 @@ function Add-PropertyInfo
|
||||
}
|
||||
|
||||
$script:objectSettingsData += Get-PropertyInfo $prop $value $originalValue $jsonValue
|
||||
|
||||
Invoke-CustomPostAddValue $prop
|
||||
}
|
||||
|
||||
function Add-PropertyInfoObject
|
||||
@@ -2110,6 +2130,15 @@ function Get-PropertyInfo
|
||||
$jsonValue = $rawValue | ConvertTo-Json -Depth 10 -Compress
|
||||
}
|
||||
|
||||
if($prop.emptyValueResourceKey)
|
||||
{
|
||||
$defValue = Get-LanguageString $prop.emptyValueResourceKey
|
||||
}
|
||||
else
|
||||
{
|
||||
$defValue = $prop.defaultValue
|
||||
}
|
||||
|
||||
return New-Object PSObject -Property @{
|
||||
Name=$name
|
||||
Description=$description
|
||||
@@ -2121,7 +2150,7 @@ function Get-PropertyInfo
|
||||
DataType=$prop.dataType
|
||||
RawValue=$originalValue
|
||||
RawJsonValue=$jsonValue
|
||||
DefaultValue=$prop.defaultValue
|
||||
DefaultValue=$defValue
|
||||
UnconfiguredValue=$prop.unconfiguredValue
|
||||
Enabled=$prop.Enabled
|
||||
EntityKey=$prop.EntityKey
|
||||
@@ -2156,6 +2185,23 @@ function Get-CustomProfileValue
|
||||
}
|
||||
}
|
||||
|
||||
function Invoke-CustomPostAddValue
|
||||
{
|
||||
param($prop)
|
||||
|
||||
foreach($docProvider in ($global:documentationProviders | Sort -Property Priority))
|
||||
{
|
||||
if($docProvider.PostAddValue)
|
||||
{
|
||||
$retObj = & $docProvider.PostAddValue $script:currentObject $prop $script:propertySeparator $script:objectSeparator
|
||||
if($retObj -ne $null)
|
||||
{
|
||||
return $retObj
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Get-CustomPropertyObject
|
||||
{
|
||||
param($obj, $prop)
|
||||
@@ -2852,6 +2898,8 @@ function Invoke-TranslateAssignments
|
||||
}
|
||||
}
|
||||
|
||||
$groupInfo = $null
|
||||
|
||||
if($groupIds.Count -gt 0)
|
||||
{
|
||||
$ht = @{}
|
||||
@@ -2861,6 +2909,12 @@ function Invoke-TranslateAssignments
|
||||
|
||||
$groupInfo = (Invoke-GraphRequest -Url "/directoryObjects/getByIds?`$select=displayName,id" -Content $body -Method "Post").Value
|
||||
}
|
||||
|
||||
if(($null -eq $groupInfo -or ($groupInfo | measure).Count -eq 0) -and $obj."@ObjectFromFile" -eq $true -and $script:migTable)
|
||||
{
|
||||
### Get group info from mig table when documenting from file if there's no access to the environment
|
||||
$groupInfo = $script:migTable.Objects | Where Type -eq "Group"
|
||||
}
|
||||
|
||||
if($filterIds.Count -gt 0)
|
||||
{
|
||||
@@ -3152,7 +3206,10 @@ function Show-DocumentationForm
|
||||
$objectTypes,
|
||||
[Switch]
|
||||
[Parameter(Mandatory=$false,ParameterSetName = "Objects")]
|
||||
$SelectedDocuments)
|
||||
$SelectedDocuments,
|
||||
[Switch]
|
||||
$ShowFolderSource
|
||||
)
|
||||
|
||||
$objectList = @()
|
||||
|
||||
@@ -3226,6 +3283,22 @@ function Show-DocumentationForm
|
||||
$global:btnAddToDocumentationList.Visibility = "Collapsed"
|
||||
}
|
||||
|
||||
if($ShowFolderSource -ne $true)
|
||||
{
|
||||
$global:grdDocumentFromFolder.Visibility = "Collapsed"
|
||||
$global:spDocumentFromFolder.Visibility = "Collapsed"
|
||||
}
|
||||
else
|
||||
{
|
||||
Add-XamlEvent $script:docForm "browseDocumentFromFolder" "add_click" {
|
||||
$folder = Get-Folder (Get-XamlProperty $script:docForm "txtDocumentFromFolder" "Text") "Select root folder for export files"
|
||||
if($folder)
|
||||
{
|
||||
Set-XamlProperty $script:docForm "txtDocumentFromFolder" "Text" $folder
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$column = Get-GridCheckboxColumn "IsSelected"
|
||||
$global:grdDocumentObjects.Columns.Add($column)
|
||||
|
||||
@@ -3316,6 +3389,11 @@ function Show-DocumentationForm
|
||||
|
||||
$txtDocumentationRawData.Text = ""
|
||||
|
||||
$loadExportedInfo = $true
|
||||
$script:migTable = $null
|
||||
$script:scopeTags = $null
|
||||
|
||||
$diSource = $nul
|
||||
$global:intentCategories = $null
|
||||
$global:catRecommendedSettings = $null
|
||||
$global:intentCategoryDefs = $null
|
||||
@@ -3374,6 +3452,19 @@ function Show-DocumentationForm
|
||||
}
|
||||
elseif($global:grdDocumentObjects.Tag -eq "ObjectTypes")
|
||||
{
|
||||
$fromExportFolder = $false
|
||||
if($global:txtDocumentFromFolder.Text)
|
||||
{
|
||||
$diSource = [IO.DirectoryInfo]$global:txtDocumentFromFolder.Text
|
||||
if($diSource.Exists -eq $false)
|
||||
{
|
||||
[System.Windows.MessageBox]::Show("Source folder not found:`n`n$($diSource.FullName)", "Documentation", "OK", "Error")
|
||||
Write-Status ""
|
||||
return
|
||||
}
|
||||
$fromExportFolder = $true
|
||||
}
|
||||
|
||||
$sourceList = @()
|
||||
foreach($objGroup in ($global:grdDocumentObjects.ItemsSource | Where IsSelected -eq $true))
|
||||
{
|
||||
@@ -3382,11 +3473,25 @@ function Show-DocumentationForm
|
||||
{
|
||||
Write-Status "Get $($objectType.Title) objects"
|
||||
|
||||
$graphObjects = @(Get-GraphObjects -property $objectType.ViewProperties -objectType $objectType)
|
||||
|
||||
if($objectType.PostListCommand)
|
||||
if($fromExportFolder -eq $false)
|
||||
{
|
||||
$graphObjects = & $objectType.PostListCommand $graphObjects $objectType
|
||||
$graphObjects = @(Get-GraphObjects -property $objectType.ViewProperties -objectType $objectType)
|
||||
|
||||
if($objectType.PostListCommand)
|
||||
{
|
||||
$graphObjects = & $objectType.PostListCommand $graphObjects $objectType
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$objectPath = [IO.Path]::Combine($diSource.FullName,$objectType.ID)
|
||||
if([IO.Directory]::Exists($objectPath) -eq $false)
|
||||
{
|
||||
Write-Log "Object path for $($objectType.Title) ($($objectType.ID)) not found. Skipping object type" 2
|
||||
continue
|
||||
}
|
||||
$graphObjects = Get-GraphFileObjects $objectPath -ObjectType $objectType
|
||||
$graphObjects | ForEach-Object { $_.Object | Add-Member Noteproperty -Name "@ObjectFromFile" -Value $true -Force }
|
||||
}
|
||||
$groupSourceList += $graphObjects
|
||||
}
|
||||
@@ -3412,6 +3517,39 @@ function Show-DocumentationForm
|
||||
return
|
||||
}
|
||||
|
||||
if($fromExportFolder -eq $true -and $diSource -and $loadExportedInfo -eq $true)
|
||||
{
|
||||
$loadExportedInfo = $false
|
||||
|
||||
$migFileName = [IO.Path]::Combine($diSource.FullName,"MigrationTable.json")
|
||||
if([IO.File]::Exists($migFileName) -eq $false)
|
||||
{
|
||||
Write-Log "MigrationTable not found. Groups will be documented with GroupId" 2
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Log "Load Migration table from $migFileName"
|
||||
$script:migTable = ConvertFrom-Json (Get-Content $migFileName -Raw)
|
||||
}
|
||||
|
||||
$scopeTagObjectType = $global:currentViewObject.ViewItems | Where Id -eq "ScopeTags"
|
||||
|
||||
if($scopeTagObjectType)
|
||||
{
|
||||
$scopePath = [IO.Path]::Combine($diSource.FullName,$scopeTagObjectType.Id)
|
||||
if([IO.Directory]::Exists($scopePath) -eq $false)
|
||||
{
|
||||
Write-Log "Object path for Scope (Tags) ($($scopePath)) not found" 2
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
$scopeTagObjects = Get-GraphFileObjects $scopePath -ObjectType $scopeTagObjectType
|
||||
$script:scopeTags = @(($scopeTagObjects | Select Object))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($global:cbDocumentationType.SelectedItem.PreProcess)
|
||||
{
|
||||
Write-Status "Run PreProcess for $($global:cbDocumentationType.SelectedItem.Name)"
|
||||
@@ -3436,7 +3574,14 @@ function Show-DocumentationForm
|
||||
}
|
||||
}
|
||||
|
||||
$obj = Get-GraphObject $tmpObj.Object $tmpObj.ObjectType
|
||||
if($tmpObj.Object."@ObjectFromFile" -eq $true)
|
||||
{
|
||||
$obj = $tmpObj
|
||||
}
|
||||
else
|
||||
{
|
||||
$obj = Get-GraphObject $tmpObj.Object $tmpObj.ObjectType
|
||||
}
|
||||
|
||||
if($obj)
|
||||
{
|
||||
@@ -3669,7 +3814,7 @@ function Set-OutputOptionsTabStatus
|
||||
|
||||
function Invoke-DocumentObjectTypes
|
||||
{
|
||||
Show-DocumentationForm -objectTypes $global:currentViewObject.ViewItems
|
||||
Show-DocumentationForm -objectTypes $global:currentViewObject.ViewItems -ShowFolderSource
|
||||
}
|
||||
|
||||
function Invoke-DocumentSelectedObjects
|
||||
|
||||
@@ -10,7 +10,7 @@ This module will also document some objects based on PowerShell functions
|
||||
|
||||
function Get-ModuleVersion
|
||||
{
|
||||
'1.0.6'
|
||||
'1.1.0'
|
||||
}
|
||||
|
||||
function Invoke-InitializeModule
|
||||
@@ -23,6 +23,7 @@ function Invoke-InitializeModule
|
||||
GetCustomChildObject = { Get-CDDocumentCustomChildObjet @args }
|
||||
GetCustomPropertyObject = { Get-CDDocumentCustomPropertyObject @args }
|
||||
AddCustomProfileProperty = { Add-CDDocumentCustomProfileProperty @args }
|
||||
PostAddValue = { Invoke-CDDocumentCustomPostAdd @args }
|
||||
})
|
||||
}
|
||||
|
||||
@@ -92,6 +93,13 @@ function Invoke-CDDocumentObject
|
||||
return [PSCustomObject]@{
|
||||
Properties = @("Name","Value","Category","SubCategory")
|
||||
}
|
||||
}
|
||||
elseif($type -eq '#microsoft.graph.deviceAndAppManagementAssignmentFilter')
|
||||
{
|
||||
Invoke-CDDocumentAssignmentFilter $documentationObj
|
||||
return [PSCustomObject]@{
|
||||
Properties = @("Name","Value")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,6 +177,73 @@ Property separator character
|
||||
Object separator character
|
||||
#>
|
||||
|
||||
function Invoke-CDDocumentCustomPostAdd
|
||||
{
|
||||
param($obj, $prop, $propSeparator, $objSeparator)
|
||||
|
||||
if($obj.'@OData.Type' -eq "#microsoft.graph.windowsUpdateForBusinessConfiguration")
|
||||
{
|
||||
if($prop.EntityKey -eq "featureUpdatesDeferralPeriodInDays")
|
||||
{
|
||||
# Inject Windows 11 update setting. Not included in the file
|
||||
$tmpProp = [PSCustomObject]@{
|
||||
nameResourceKey = "allowWindows11UpgradeName"
|
||||
descriptionResourceKey = "allowWindows11UpgradeDescription"
|
||||
entityKey = "allowWindows11Upgrade"
|
||||
dataType = 0
|
||||
booleanActions = 109
|
||||
category = $prop.Category
|
||||
}
|
||||
$propValue = Invoke-TranslateBoolean $obj $tmpProp
|
||||
|
||||
$script:UpdateCategory = $prop.Category
|
||||
|
||||
Add-PropertyInfo $tmpProp $propValue -originalValue $obj.allowWindows11Upgrade
|
||||
}
|
||||
|
||||
if($prop.EntityKey -eq "featureUpdatesRollbackWindowInDays")
|
||||
{
|
||||
if($obj.businessReadyUpdatesOnly -eq "businessReadyOnly")
|
||||
{
|
||||
$propValue = Get-LanguageString "BooleanActions.notConfigured"
|
||||
}
|
||||
else
|
||||
{
|
||||
$propValue = Get-LanguageString "BooleanActions.enable"
|
||||
}
|
||||
|
||||
# Inject Pre-release setting. Not included in the file
|
||||
$tmpProp = [PSCustomObject]@{
|
||||
nameResourceKey = "preReleaseBuilds"
|
||||
descriptionResourceKey = "preReleaseBuildsDescription"
|
||||
entityKey = "preReleaseEnabled" # Not a class property!
|
||||
dataType = 0
|
||||
booleanActions = 2
|
||||
category = $prop.Category
|
||||
}
|
||||
|
||||
Add-PropertyInfo $tmpProp $propValue -originalValue $obj.businessReadyUpdatesOnly
|
||||
|
||||
if($obj.businessReadyUpdatesOnly -ne "businessReadyOnly")
|
||||
{
|
||||
# Pre-release channel selected. Inject info
|
||||
$propValue = Get-LanguageString "SettingDetails.$($obj.businessReadyUpdatesOnly)Option"
|
||||
|
||||
$tmpProp = [PSCustomObject]@{
|
||||
nameResourceKey = "preReleaseChannel"
|
||||
descriptionResourceKey = "preReleaseBuildsDescription"
|
||||
entityKey = "businessReadyUpdatesOnly"
|
||||
dataType = 0
|
||||
booleanActions = 2
|
||||
category = $prop.Category
|
||||
}
|
||||
|
||||
Add-PropertyInfo $tmpProp $propValue -originalValue $obj.businessReadyUpdatesOnly
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Add-CDDocumentCustomProfileValue
|
||||
{
|
||||
param($obj, $prop, $topObj, $propSeparator, $objSeparator)
|
||||
@@ -318,7 +393,19 @@ function Add-CDDocumentCustomProfileValue
|
||||
$propValue = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($obj.eapXml))
|
||||
Add-PropertyInfo $prop $propValue -originalValue $propValue
|
||||
return $false
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif($obj.'@OData.Type' -eq "#microsoft.graph.windowsUpdateForBusinessConfiguration")
|
||||
{
|
||||
if($prop.EntityKey -eq "businessReadyUpdatesOnly" -or
|
||||
$prop.EntityKey -eq "autoRestartNotificationDismissal" -or
|
||||
$prop.EntityKey -eq "scheduleRestartWarningInHours" -or
|
||||
$prop.EntityKey -eq "scheduleImminentRestartWarningInMinutes" -or
|
||||
$prop.EntityKey -eq "deliveryOptimizationMode")
|
||||
{
|
||||
# Not used anymore
|
||||
return $false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -695,6 +782,11 @@ function Add-CDDocumentCustomProfileProperty
|
||||
}
|
||||
$obj | Add-Member Noteproperty -Name "syntheticWipOrApps" -Value $syntheticWipOrApps -Force
|
||||
|
||||
if($null -eq $obj.profileTarget)
|
||||
{
|
||||
$obj.profileTarget = "user"
|
||||
}
|
||||
|
||||
$retValue = $true
|
||||
}
|
||||
elseif($obj.'@OData.Type' -like "#microsoft.graph.iosDeviceFeaturesConfiguration")
|
||||
@@ -872,6 +964,29 @@ function Add-CDDocumentCustomProfileProperty
|
||||
|
||||
$obj | Add-Member Noteproperty -Name "featureUpdateDisplayName" -Value $verInfoTxt
|
||||
|
||||
if($obj.rolloutSettings.offerStartDateTimeInUTC -and
|
||||
$obj.rolloutSettings.offerEndDateTimeInUTC)
|
||||
{
|
||||
$featureUpdateRolloutOption = "gradualRollout"
|
||||
$obj | Add-Member Noteproperty -Name "featureUpdateRolloutStartDate" -Value ((Get-Date $obj.rolloutSettings.offerStartDateTimeInUTC).ToLongDateString())
|
||||
$obj | Add-Member Noteproperty -Name "featureUpdateRolloutEndDate" -Value ((Get-Date $obj.rolloutSettings.offerEndDateTimeInUTC).ToLongDateString())
|
||||
if($null -ne $obj.rolloutSettings.offerIntervalInDays)
|
||||
{
|
||||
$obj | Add-Member Noteproperty -Name "featureUpdateRolloutInterval" -Value ($obj.rolloutSettings.offerIntervalInDays)
|
||||
}
|
||||
}
|
||||
elseif($obj.rolloutSettings.offerStartDateTimeInUTC)
|
||||
{
|
||||
$featureUpdateRolloutOption = "startDateOnly"
|
||||
$obj | Add-Member Noteproperty -Name "featureUpdateRolloutStartDate" -Value ((Get-Date $obj.rolloutSettings.offerStartDateTimeInUTC).ToLongDateString())
|
||||
}
|
||||
else
|
||||
{
|
||||
$featureUpdateRolloutOption = "immediateStart"
|
||||
}
|
||||
|
||||
$obj | Add-Member Noteproperty -Name "featureUpdateRolloutOption" -Value $featureUpdateRolloutOption
|
||||
|
||||
$retValue = $true
|
||||
}
|
||||
elseif($obj.'@OData.Type' -eq "#microsoft.graph.iosUpdateConfiguration")
|
||||
@@ -2500,4 +2615,44 @@ function Invoke-CDDocumentNotification
|
||||
})
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region
|
||||
function Invoke-CDDocumentAssignmentFilter
|
||||
{
|
||||
param($documentationObj)
|
||||
|
||||
$obj = $documentationObj.Object
|
||||
$objectType = $documentationObj.ObjectType
|
||||
|
||||
$script:objectSeparator = ?? $global:cbDocumentationObjectSeparator.SelectedValue ([System.Environment]::NewLine)
|
||||
$script:propertySeparator = ?? $global:cbDocumentationPropertySeparator.SelectedValue ","
|
||||
|
||||
###################################################
|
||||
# Basic info
|
||||
###################################################
|
||||
|
||||
Add-BasicDefaultValues $obj $objectType
|
||||
|
||||
# "Filters" is not in the translation file
|
||||
Add-BasicPropertyValue (Get-LanguageString "TableHeaders.configurationType") "Filters"
|
||||
Add-BasicPropertyValue (Get-LanguageString "Inputs.platformLabel") (Get-LanguageString "Platform.$($obj.platform)")
|
||||
|
||||
###################################################
|
||||
# Settings
|
||||
###################################################
|
||||
|
||||
$label = Get-LanguageString "ApplicabilityRules.GridLabel.rule"
|
||||
|
||||
# "Rules" is not in the translation file
|
||||
$category = "Rules"
|
||||
|
||||
Add-CustomSettingObject ([PSCustomObject]@{
|
||||
Name = $label
|
||||
Value = $obj.rule
|
||||
EntityKey = "rule"
|
||||
Category = $category
|
||||
SubCategory = $null
|
||||
})
|
||||
}
|
||||
#endregion
|
||||
@@ -3,7 +3,7 @@
|
||||
#https://docs.microsoft.com/en-us/office/vba/api/overview/word
|
||||
function Get-ModuleVersion
|
||||
{
|
||||
'1.0.7'
|
||||
'1.1.0'
|
||||
}
|
||||
|
||||
function Invoke-InitializeModule
|
||||
@@ -70,6 +70,14 @@ function Add-WordOptionsControl
|
||||
$global:spWordCustomProperties.Visibility = (?: ($global:cbWordDocumentationProperties.SelectedValue -ne "custom") "Collapsed" "Visible")
|
||||
$global:txtWordCustomProperties.Visibility = (?: ($global:cbWordDocumentationProperties.SelectedValue -ne "custom") "Collapsed" "Visible")
|
||||
|
||||
$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")
|
||||
|
||||
$global:gdWordDocumentationLimitOptions.Visibility = (?: ($global:cbWordDocumentationLevel.SelectedValue -ne "limited") "Collapsed" "Visible")
|
||||
$global:txtWordDocumentationLimitMaxLength.Text = Get-Setting "Documentation" "WordDocumentationLimitMaxLength" ""
|
||||
$global:txtWordDocumentationLimitTruncateLength.Text = Get-Setting "Documentation" "WordDocumentationLimitTruncateLength" ""
|
||||
$global:chkWordDocumentationLimitAttatch.IsChecked = ((Get-Setting "Documentation" "WordDocumentationLimitAttatch" "true") -ne "false")
|
||||
|
||||
$global:txtWordDocumentTemplate.Text = Get-Setting "Documentation" "WordDocumentTemplate" ""
|
||||
$global:txtWordDocumentName.Text = (Get-Setting "Documentation" "WordDocumentName" "%MyDocuments%\%Organization%-%Date%.docx")
|
||||
|
||||
@@ -88,6 +96,8 @@ function Add-WordOptionsControl
|
||||
|
||||
$global:chkWordIncludeScripts.IsChecked = ((Get-Setting "Documentation" "WordIncludeScripts" "true") -ne "false")
|
||||
$global:chkWordExcludeScriptSignature.IsChecked = ((Get-Setting "Documentation" "WordExcludeScriptSignature" "false") -ne "false")
|
||||
$global:chkWordAttatchJsonFile.IsChecked = ((Get-Setting "Documentation" "WordAttatchJsonFile" "false") -ne "false")
|
||||
|
||||
$global:txtWordScriptTableStyle.Text = Get-Setting "Documentation" "WordScriptTableStyle" ""
|
||||
$global:txtWordScriptStyle.Text = Get-Setting "Documentation" "WordScriptStyle"
|
||||
|
||||
@@ -109,6 +119,10 @@ function Add-WordOptionsControl
|
||||
$global:txtWordCustomProperties.Visibility = (?: ($this.SelectedValue -ne "custom") "Collapsed" "Visible")
|
||||
}
|
||||
|
||||
Add-XamlEvent $script:wordForm "cbWordDocumentationLevel" "add_selectionChanged" {
|
||||
$global:gdWordDocumentationLimitOptions.Visibility = (?: ($this.SelectedValue -ne "limited") "Collapsed" "Visible")
|
||||
}
|
||||
|
||||
$script:wordForm
|
||||
}
|
||||
function Invoke-WordActivate
|
||||
@@ -123,6 +137,11 @@ function Invoke-WordPreProcessItems
|
||||
Save-Setting "Documentation" "WordDocumentTemplate" $global:txtWordDocumentTemplate.Text
|
||||
Save-Setting "Documentation" "WordDocumentName" $global:txtWordDocumentName.Text
|
||||
|
||||
Save-Setting "Documentation" "WordDocumentationLevel" $global:cbWordDocumentationLevel.SelectedValue
|
||||
Save-Setting "Documentation" "WordDocumentationLimitMaxLength" $global:txtWordDocumentationLimitMaxLength.Text
|
||||
Save-Setting "Documentation" "WordDocumentationLimitTruncateLength" $global:txtWordDocumentationLimitTruncateLength.Text
|
||||
Save-Setting "Documentation" "WordDocumentationLimitAttatch" $global:chkWordDocumentationLimitAttatch.IsChecked
|
||||
|
||||
Save-Setting "Documentation" "WordAddCategories" $global:chkWordAddCategories.IsChecked
|
||||
Save-Setting "Documentation" "WordAddSubCategories" $global:chkWordAddSubCategories.IsChecked
|
||||
Save-Setting "Documentation" "WordOpenDocument" $global:chkWordOpenDocument.IsChecked
|
||||
@@ -139,9 +158,58 @@ function Invoke-WordPreProcessItems
|
||||
|
||||
Save-Setting "Documentation" "WordIncludeScripts" $global:chkWordIncludeScripts.IsChecked
|
||||
Save-Setting "Documentation" "WordExcludeScriptSignature" $global:chkWordExcludeScriptSignature.IsChecked
|
||||
Save-Setting "Documentation" "WordAttatchJsonFile" $global:chkWordAttatchJsonFile.IsChecked
|
||||
|
||||
Save-Setting "Documentation" "WordScriptTableStyle" $global:txtWordScriptTableStyle.Text
|
||||
Save-Setting "Documentation" "WordScriptStyle" $global:txtWordScriptStyle.Text
|
||||
|
||||
$script:limitMaxValue = 100
|
||||
$script:truncateValueLength = $script:limitMaxValue
|
||||
|
||||
if($global:cbWordDocumentationLevel.SelectedValue -eq "limited")
|
||||
{
|
||||
if($global:txtWordDocumentationLimitMaxLength.Text)
|
||||
{
|
||||
try
|
||||
{
|
||||
$script:limitMaxValue = [int]::Parse($global:txtWordDocumentationLimitMaxLength.Text)
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-LogError "Failed to parse $($global:txtWordDocumentationLimitMaxLength.Text) to int. Max value length will be set to 100." $_.Exception
|
||||
}
|
||||
}
|
||||
|
||||
if($global:txtWordDocumentationLimitTruncateLength.Text)
|
||||
{
|
||||
try
|
||||
{
|
||||
$script:truncateValueLength = [int]::Parse($global:txtWordDocumentationLimitTruncateLength.Text)
|
||||
}
|
||||
catch
|
||||
{
|
||||
Write-LogError "Failed to parse $($global:txtWordDocumentationLimitTruncateLength.Text) to int. Truncat length will be set to $script:limitMaxValue." $_.Exception
|
||||
}
|
||||
}
|
||||
|
||||
if($script:limitMaxValue -lt 20)
|
||||
{
|
||||
Write-Log "Max value length must be 20 or more. Changed to 20" 2
|
||||
$script:limitMaxValue = 0
|
||||
}
|
||||
|
||||
if($script:truncateValueLength -lt 0)
|
||||
{
|
||||
Write-Log "Truncate length must be 0 or more. Changed to 0" 2
|
||||
$script:truncateValueLength = 0
|
||||
}
|
||||
elseif($script:truncateValueLength -gt $script:limitMaxValue)
|
||||
{
|
||||
Write-Log "Truncate length cannot be larger than Max value length. Canged to: $($script:limitMaxValue)" 2
|
||||
$script:truncateValueLength = $script:limitMaxValue
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
$script:wordApp = New-Object -ComObject Word.Application
|
||||
@@ -284,6 +352,17 @@ function Invoke-WordPreProcessItems
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(($script:doc.TablesOfContents | measure).Count -eq 0)
|
||||
{
|
||||
# Where should it be added?
|
||||
# $script:doc.TablesOfContents.Add($script:wordApp.Selection.Range) | out-null
|
||||
}
|
||||
|
||||
Invoke-DocGoToEnd
|
||||
$script:wordApp.Selection.InsertNewPage()
|
||||
}
|
||||
}
|
||||
|
||||
function Invoke-WordPostProcessItems
|
||||
@@ -459,30 +538,39 @@ function Invoke-WordProcessItem
|
||||
{
|
||||
$properties = (?? $documentedObj.DefaultDocumentationProperties (@("Name","Value")))
|
||||
}
|
||||
|
||||
if($global:cbWordDocumentationLevel.SelectedValue -eq "basic" -and $tableType -ne "BasicInfo")
|
||||
{
|
||||
continue
|
||||
}
|
||||
|
||||
$lngId = ?: ($tableType -eq "BasicInfo") "SettingDetails.basics" "TableHeaders.settings" -AddCategories
|
||||
|
||||
Add-DocTableItems $obj $objectType ($documentedObj.$tableType) $properties $lngId `
|
||||
-AddCategories:($global:chkWordAddCategories.IsChecked -eq $true) `
|
||||
-AddSubcategories:($global:chkWordAddSubCategories.IsChecked -eq $true)
|
||||
-AddSubcategories:($global:chkWordAddSubCategories.IsChecked -eq $true) `
|
||||
-ForceFullValue:($tableType -eq "BasicInfo")
|
||||
}
|
||||
|
||||
if(($documentedObj.ComplianceActions | measure).Count -gt 0)
|
||||
if($global:cbWordDocumentationLevel.SelectedValue -ne "basic")
|
||||
{
|
||||
$properties = @("Action","Schedule","MessageTemplate","EmailCC")
|
||||
if(($documentedObj.ComplianceActions | measure).Count -gt 0)
|
||||
{
|
||||
$properties = @("Action","Schedule","MessageTemplate","EmailCC")
|
||||
|
||||
Add-DocTableItems $obj $objectType $documentedObj.ComplianceActions $properties "Category.complianceActionsLabel"
|
||||
Add-DocTableItems $obj $objectType $documentedObj.ComplianceActions $properties "Category.complianceActionsLabel"
|
||||
}
|
||||
|
||||
if(($documentedObj.ApplicabilityRules | measure).Count -gt 0)
|
||||
{
|
||||
$properties = @("Rule","Property","Value")
|
||||
|
||||
Add-DocTableItems $obj $objectType $documentedObj.ApplicabilityRules $properties "SettingDetails.applicabilityRules"
|
||||
}
|
||||
|
||||
Add-DocObjectSettings $obj $objectType $documentedObj
|
||||
}
|
||||
|
||||
if(($documentedObj.ApplicabilityRules | measure).Count -gt 0)
|
||||
{
|
||||
$properties = @("Rule","Property","Value")
|
||||
|
||||
Add-DocTableItems $obj $objectType $documentedObj.ApplicabilityRules $properties "SettingDetails.applicabilityRules"
|
||||
}
|
||||
|
||||
Add-DocObjectSettings $obj $objectType $documentedObj
|
||||
|
||||
if(($documentedObj.Assignments | measure).Count -gt 0)
|
||||
{
|
||||
$params = @{}
|
||||
@@ -523,6 +611,20 @@ function Invoke-WordProcessItem
|
||||
|
||||
Add-DocTableItems $obj $objectType $documentedObj.Assignments $properties "TableHeaders.assignments" @params
|
||||
}
|
||||
|
||||
if($global:chkWordAttatchJsonFile.IsChecked -eq $true)
|
||||
{
|
||||
$fileName = Export-GraphObject $obj $objectType ([IO.Path]::GetTempPath()) -IsFullObject -PassThru -SkipAddID
|
||||
if($fileName)
|
||||
{
|
||||
$fi = [IO.FileInfo]$fileName
|
||||
if($fi.Exists)
|
||||
{
|
||||
$script:doc.Application.Selection.InlineShapes.AddOLEObject("",$fi.FullName,$false,$true,"$($env:WinDir)\System32\Notepad.exe",0,$fi.Name)
|
||||
try { $fi.Delete() } catch {} # Cleanup
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -606,7 +708,7 @@ function Set-WordColumnHeaderLanguageId
|
||||
|
||||
function Add-DocTableItems
|
||||
{
|
||||
param($obj, $objectType, $items, $properties, $lngId, [switch]$AddCategories, [switch]$AddSubcategories, $captionOverride)
|
||||
param($obj, $objectType, $items, $properties, $lngId, [switch]$AddCategories, [switch]$AddSubcategories, $captionOverride, [switch]$forceFullValue)
|
||||
|
||||
$tblHeaderStyle = $global:txtWordTableHeaderStyle.Text
|
||||
$tblCategoryStyle = $global:txtWordCategoryHeaderStyle.Text
|
||||
@@ -665,7 +767,48 @@ function Add-DocTableItems
|
||||
{
|
||||
$tmpObj = $tmpObj."$($propArr[$x])"
|
||||
}
|
||||
$script:docTable.Cell($row, $i).Range.Text = "$($tmpObj.$propName)"
|
||||
$propValue = "$($tmpObj.$propName)"
|
||||
$propValueFull = $null
|
||||
|
||||
if($forceFullValue -ne $true -and $global:cbWordDocumentationLevel.SelectedValue -eq "limited" -and $propValue.Length -gt $script:limitMaxValue)
|
||||
{
|
||||
$propValueFull = $propValue
|
||||
if($script:truncateValueLength -gt 0)
|
||||
{
|
||||
$propValue = ($propValue.Substring(0, $script:truncateValueLength) + "...")
|
||||
if($global:chkWordDocumentationLimitAttatch.IsChecked -eq $true)
|
||||
{
|
||||
$propValue = ("`r`n" + $propValue)
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$propValue = $null
|
||||
}
|
||||
}
|
||||
|
||||
if($null -ne $propValue)
|
||||
{
|
||||
$script:docTable.Cell($row, $i).Range.Text = $propValue
|
||||
}
|
||||
|
||||
if($propValueFull -and $global:chkWordDocumentationLimitAttatch.IsChecked -eq $true)
|
||||
{
|
||||
if($null -ne $propValue)
|
||||
{
|
||||
#$script:doc.Application.Selection.TypeParagraph()
|
||||
}
|
||||
|
||||
$tmpName = "$((Get-GraphObjectName $obj $objectType))-$propName"
|
||||
|
||||
$tmpFile = [System.IO.Path]::Combine([System.IO.Path]::GetTempPath(), "$($tmpName).txt")
|
||||
$tmpFile = Remove-InvalidFileNameChars $tmpFile
|
||||
$propValueFull | Out-File -LiteralPath $tmpFile -Force
|
||||
$fi = [IO.FileInfo]$tmpFile
|
||||
[void]$script:docTable.Cell($row, $i).Range.InlineShapes.AddOLEObject("",$fi.FullName,$false,$true,"$($env:WinDir)\System32\Notepad.exe",0,"Full value")
|
||||
#$script:doc.Application.Selection.InlineShapes.AddOLEObject("",$fi.FullName,$false,$true,"$($env:WinDir)\System32\Notepad.exe",0,"Full value", $script:docTable.Cell($row, $i).Range)
|
||||
try { $fi.Delete() } catch {}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
@@ -11,7 +11,7 @@ This module is for the Endpoint Manager/Intune View. It manages Export/Import/Co
|
||||
#>
|
||||
function Get-ModuleVersion
|
||||
{
|
||||
'3.1.14'
|
||||
'3.4.0'
|
||||
}
|
||||
|
||||
function Invoke-InitializeModule
|
||||
@@ -239,8 +239,9 @@ function Invoke-InitializeModule
|
||||
PreReplaceCommand = { Start-PreReplaceEnrollmentRestrictions @args } # Note: Uses same PreReplaceCommand as restrictions
|
||||
PostReplaceCommand = { Start-PostReplaceEnrollmentRestrictions @args } # Note: Uses same PostReplaceCommand as restrictions
|
||||
PreFilesImportCommand = { Start-PreFilesImportEnrollmentRestrictions @args } # Note: Uses same PreFilesImportCommand as restrictions
|
||||
PostListCommand = { Start-PostListESP @args }
|
||||
#PreUpdateCommand = { Start-PreUpdateEnrollmentRestrictions @args } # Note: Uses same PreUpdateCommand as restrictions
|
||||
QUERYLIST = "`$filter=endsWith(id,'Windows10EnrollmentCompletionPageConfiguration')"
|
||||
#QUERYLIST = "`$filter=endsWith(id,'Windows10EnrollmentCompletionPageConfiguration')"
|
||||
Permissons=@("DeviceManagementServiceConfig.ReadWrite.All")
|
||||
SkipRemoveProperties = @('Id')
|
||||
AssignmentsType = "enrollmentConfigurationAssignments"
|
||||
@@ -253,19 +254,21 @@ function Invoke-InitializeModule
|
||||
Id = "EnrollmentRestrictions"
|
||||
API = "/deviceManagement/deviceEnrollmentConfigurations"
|
||||
ViewID = "IntuneGraphAPI"
|
||||
QUERYLIST = "`$filter=not endsWith(id,'Windows10EnrollmentCompletionPageConfiguration')"
|
||||
#QUERYLIST = "`$filter=not endsWith(id,'Windows10EnrollmentCompletionPageConfiguration')"
|
||||
PostExportCommand = { Start-PostExportEnrollmentRestrictions @args }
|
||||
PreImportCommand = { Start-PreImportEnrollmentRestrictions @args }
|
||||
PreDeleteCommand = { Start-PreDeleteEnrollmentRestrictions @args }
|
||||
PreReplaceCommand = { Start-PreReplaceEnrollmentRestrictions @args }
|
||||
PostReplaceCommand = { Start-PostReplaceEnrollmentRestrictions @args }
|
||||
PreFilesImportCommand = { Start-PreFilesImportEnrollmentRestrictions @args }
|
||||
PostListCommand = { Start-PostListEnrollmentRestrictions @args }
|
||||
#PreUpdateCommand = { Start-PreUpdateEnrollmentRestrictions @args }
|
||||
PropertiesToRemoveForUpdate = @('priority')
|
||||
Permissons=@("DeviceManagementServiceConfig.ReadWrite.All")
|
||||
SkipRemoveProperties = @('Id')
|
||||
AssignmentsType = "enrollmentConfigurationAssignments"
|
||||
GroupId = "EnrollmentRestrictions"
|
||||
ViewProperties = @("displayName","platformType","description","Id")
|
||||
})
|
||||
|
||||
Add-ViewItem (New-Object PSObject -Property @{
|
||||
@@ -405,8 +408,10 @@ function Invoke-InitializeModule
|
||||
Expand="categories,assignments" # ODataMetadata is set to minimal so assignments can't be autodetected
|
||||
ODataMetadata="minimal" # categories property not supported with ODataMetadata full
|
||||
PostFileImportCommand = { Start-PostFileImportApplications @args }
|
||||
PostCopyCommand = { Start-PostCopyApplications @args }
|
||||
PreUpdateCommand = { Start-PreUpdateApplication @args }
|
||||
PreImportCommand = { Start-PreImportCommandApplication @args }
|
||||
DetailExtension = { Add-DetailExtensionApplications @args }
|
||||
GroupId = "Apps"
|
||||
})
|
||||
|
||||
@@ -1322,19 +1327,24 @@ function Add-ScriptExportExtensions
|
||||
{
|
||||
param($form, $buttonPanel, $index = 0)
|
||||
|
||||
$xaml = @"
|
||||
$ctrl = $form.FindName("chkExportScript")
|
||||
if(-not $ctrl)
|
||||
{
|
||||
$xaml = @"
|
||||
<StackPanel $($global:wpfNS) Orientation="Horizontal" Margin="0,0,5,0">
|
||||
<Label Content="Export script" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Export the powershell script to a ps1 file" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Export the script associated with PowerShell or Shell profiles" />
|
||||
</StackPanel>
|
||||
"@
|
||||
$label = [Windows.Markup.XamlReader]::Parse($xaml)
|
||||
$label = [Windows.Markup.XamlReader]::Parse($xaml)
|
||||
|
||||
$global:chkExportScript = [System.Windows.Controls.CheckBox]::new()
|
||||
$global:chkExportScript.IsChecked = $true
|
||||
$global:chkExportScript.VerticalAlignment = "Center"
|
||||
$global:chkExportScript = [System.Windows.Controls.CheckBox]::new()
|
||||
$global:chkExportScript.IsChecked = $true
|
||||
$global:chkExportScript.VerticalAlignment = "Center"
|
||||
$global:chkExportScript.Name = "chkExportScript"
|
||||
|
||||
@($label, $global:chkExportScript)
|
||||
@($label, $global:chkExportScript)
|
||||
}
|
||||
}
|
||||
|
||||
function Start-PostExportScripts
|
||||
@@ -1672,40 +1682,60 @@ function Start-PreImportAssignmentsAppConfiguration
|
||||
#endregon
|
||||
|
||||
#region Applications
|
||||
|
||||
function Start-PostCopyApplications
|
||||
{
|
||||
param($objCopyFrom, $objNew, $objectType)
|
||||
|
||||
Start-ImportApp $objNew
|
||||
Write-Status ""
|
||||
}
|
||||
|
||||
function Start-PostFileImportApplications
|
||||
{
|
||||
param($obj, $objectType, $file)
|
||||
|
||||
|
||||
$tmpObj = Get-Content -LiteralPath $file | ConvertFrom-Json
|
||||
|
||||
if(-not $tmpObj.'@odata.type') { return }
|
||||
|
||||
$pkgPath = Get-SettingValue "EMIntuneAppPackages"
|
||||
|
||||
if(-not $pkgPath -or [IO.Directory]::Exists($pkgPath) -eq $false)
|
||||
{
|
||||
Write-LogDebug "Package source directory is either missing or does not exist" 2
|
||||
return
|
||||
}
|
||||
|
||||
$packageFile = "$($pkgPath)\$($obj.fileName)"
|
||||
|
||||
if([IO.File]::Exists($packageFile) -eq $false)
|
||||
{
|
||||
Write-LogDebug "Package source file $packageFile not found" 2
|
||||
return
|
||||
}
|
||||
|
||||
Write-Status "Import appliction package file $($obj.fileName)"
|
||||
Write-Log "Import application file '$($packageFile)' for $($obj.displayName)"
|
||||
|
||||
if(-not ($obj.PSObject.Properties | Where Name -eq '@odata.type'))
|
||||
{
|
||||
# Add @odata.type property if it is missing. Required by app package import
|
||||
$obj | Add-Member -MemberType NoteProperty -Name '@odata.type' -Value $tmpObj.'@odata.type'
|
||||
$obj | Add-Member -MemberType NoteProperty -Name '@odata.type' -Value $objectType.'@odata.type'
|
||||
}
|
||||
|
||||
Start-ImportApp $obj
|
||||
}
|
||||
|
||||
function local:Start-ImportApp
|
||||
{
|
||||
param($obj, $packageFile = $null)
|
||||
|
||||
if(-not $obj.'@odata.type') { return }
|
||||
|
||||
if($null -eq $packageFile)
|
||||
{
|
||||
$pkgPath = Get-SettingValue "EMIntuneAppPackages"
|
||||
|
||||
if(-not $pkgPath -or [IO.Directory]::Exists($pkgPath) -eq $false)
|
||||
{
|
||||
Write-LogDebug "Package source directory is either missing or does not exist" 2
|
||||
return
|
||||
}
|
||||
|
||||
$packageFile = "$($pkgPath)\$($obj.fileName)"
|
||||
}
|
||||
$fi = [IO.FileInfo]$packageFile
|
||||
|
||||
if($fi.Exists -eq $false)
|
||||
{
|
||||
Write-LogDebug "Package source file $($fi.FullName) not found" 2
|
||||
return
|
||||
}
|
||||
|
||||
$appType = $tmpObj.'@odata.type'.Trim('#')
|
||||
Write-Status "Import appliction package file $($fi.FullName)"
|
||||
Write-Log "Import application file '$($($fi.FullName))' for $($obj.displayName)"
|
||||
|
||||
$appType = $obj.'@odata.type'.Trim('#')
|
||||
|
||||
if($appType -eq "microsoft.graph.win32LobApp")
|
||||
{
|
||||
@@ -1760,6 +1790,55 @@ function Start-PreImportCommandApplication
|
||||
}
|
||||
}
|
||||
|
||||
function Add-DetailExtensionApplications
|
||||
{
|
||||
param($form, $buttonPanel, $index = 0)
|
||||
|
||||
$btnUpload = New-Object System.Windows.Controls.Button
|
||||
$btnUpload.Content = 'Upload'
|
||||
$btnUpload.Name = 'btnUploadAppfile'
|
||||
$btnUpload.Margin = "0,0,5,0"
|
||||
$btnUpload.Width = "100"
|
||||
|
||||
$btnUpload.Add_Click({
|
||||
if($global:dgObjects.SelectedItem.Object.publishingState -ne "notPublished")
|
||||
{
|
||||
# Only allow upload of not published apps
|
||||
# Use portal to replace app file...
|
||||
if(([System.Windows.MessageBox]::Show("Are you sure you want to upload a new file for the app?`n`nApplication:`n$($global:dgObjects.SelectedItem.Object.displayName)", "Update app file?", "YesNo", "Warning")) -ne "Yes")
|
||||
{
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
$pkgPath = Get-SettingValue "EMIntuneAppPackages"
|
||||
|
||||
$of = [System.Windows.Forms.OpenFileDialog]::new()
|
||||
$of.FileName = $global:dgObjects.SelectedItem.Object.fileName
|
||||
$of.DefaultExt = "*.intunewin"
|
||||
$of.Filter = "Intune Win32 (*.intunewin)|*.*"
|
||||
$of.Multiselect = $false
|
||||
|
||||
if($pkgPath -and [IO.Directory]::Exists($pkgPath))
|
||||
{
|
||||
$of.InitialDirectory = $pkgPath
|
||||
}
|
||||
|
||||
if($of.ShowDialog() -eq "OK")
|
||||
{
|
||||
Write-Status "Import $($global:dgObjects.SelectedItem.Object.displayName) file"
|
||||
Start-ImportApp $global:dgObjects.SelectedItem.Object $of.FileName
|
||||
Write-Status ""
|
||||
}
|
||||
})
|
||||
|
||||
$tmp = $form.FindName($buttonPanel)
|
||||
if($tmp)
|
||||
{
|
||||
$tmp.Children.Insert($index, $btnUpload)
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Group Policy/Administrative Templates functions
|
||||
@@ -2241,6 +2320,14 @@ function Start-PostExportESP
|
||||
Save-EMDefaultPolicy $obj $objectType $path
|
||||
}
|
||||
}
|
||||
|
||||
function Start-PostListESP
|
||||
{
|
||||
param($objList, $objectType)
|
||||
|
||||
# endswith not working so filter them out
|
||||
$objList | Where { $_.Object.'@OData.Type' -eq '#microsoft.graph.windows10EnrollmentCompletionPageConfiguration' }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Enrollment Restriction functions
|
||||
@@ -2326,6 +2413,19 @@ function Start-PreUpdateEnrollmentRestrictions
|
||||
Remove-Property $obj "priority"
|
||||
}
|
||||
|
||||
function Start-PostListEnrollmentRestrictions
|
||||
{
|
||||
param($objList, $objectType)
|
||||
|
||||
# endswith not working so filter them out
|
||||
$objList | Where {
|
||||
($_.Object.'@OData.Type' -eq '#microsoft.graph.deviceEnrollmentPlatformRestrictionConfiguration' -or
|
||||
$_.Object.'@OData.Type' -eq '#microsoft.graph.deviceEnrollmentLimitConfiguration' -or
|
||||
$_.Object.'@OData.Type' -eq '#microsoft.graph.deviceEnrollmentPlatformRestrictionsConfiguration') -and
|
||||
$_.Object.id -notlike "*_PlatformRestrictions" -and $_.Object.platformType -ne "WindowsPhone" -and $_.Object.platformType -ne "AndroidAosp"
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region ScopeTags
|
||||
@@ -2596,6 +2696,7 @@ function Add-ConditionalAccessImportExtensions
|
||||
$global:cbImportCAState.Margin="0,5,0,0"
|
||||
$global:cbImportCAState.HorizontalAlignment="Left"
|
||||
$global:cbImportCAState.Width=250
|
||||
$global:cbImportCAState.Name = "cbImportCAState"
|
||||
|
||||
@($label, $global:cbImportCAState)
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ This module manages Application objects in Intune e.g. uploading application fil
|
||||
#>
|
||||
function Get-ModuleVersion
|
||||
{
|
||||
'3.1.2'
|
||||
'3.4.0'
|
||||
}
|
||||
|
||||
#########################################################################################
|
||||
@@ -209,6 +209,8 @@ function Copy-Win32LOBPackage
|
||||
|
||||
Remove-Item -Path $tmpFile
|
||||
|
||||
$fi = [IO.FileInfo]$intunewinFile
|
||||
|
||||
# Get encryption info from detection.xml and build encryptionInfo object
|
||||
|
||||
$encryptionInfo = @{}
|
||||
@@ -222,7 +224,7 @@ function Copy-Win32LOBPackage
|
||||
|
||||
$tmpIntunewinPath = ([IO.Path]::GetTempPath() + [Guid]::NewGuid().ToString("n"))
|
||||
mkdir $tmpIntunewinPath | Out-Null
|
||||
$tmpIntunewinFile = $tmpIntunewinPath + "\" + $DetectionXML.ApplicationInfo.FileName
|
||||
$tmpIntunewinFile = $tmpIntunewinPath + "\" + $fi.Name
|
||||
|
||||
# Extract the encrypted file from the intunewin file
|
||||
Export-IntunewinFileObject $intunewinFile $DetectionXML.ApplicationInfo.FileName $tmpIntunewinFile
|
||||
@@ -250,8 +252,8 @@ function Add-FileToIntuneApp
|
||||
{
|
||||
param($appId, $appType, $appFile, $fileBody)
|
||||
|
||||
$contentVersion = Invoke-GraphRequest -Url "/deviceAppManagement/mobileApps/$appId/$appType/contentVersions"
|
||||
$contentVersionId = $contentVersion.value[0].id
|
||||
$contentVersion = Invoke-GraphRequest -Url "/deviceAppManagement/mobileApps/$appId/$appType/contentVersions" -HttpMethod POST -Content "{}"
|
||||
$contentVersionId = $contentVersion.id
|
||||
$fileObj = Invoke-GraphRequest -Url "/deviceAppManagement/mobileApps/$appId/$appType/contentVersions/$contentVersionId/files" -HttpMethod POST -Content (ConvertTo-Json $fileBody -Depth 5)
|
||||
|
||||
if(-not $fileObj)
|
||||
@@ -274,10 +276,12 @@ function Add-FileToIntuneApp
|
||||
|
||||
Wait-IntuneFileState "/deviceAppManagement/mobileApps/$appId/$appType/contentVersions/$contentVersionId/files/$($fileObj.Id)" "CommitFile"
|
||||
|
||||
$fiUpload = [IO.FileInfo]$appFile
|
||||
# Commit the content version
|
||||
$commitAppBody = @{
|
||||
"@odata.type" = "#$appType"
|
||||
committedContentVersion = $contentVersionId
|
||||
fileName = $fiUpload.Name
|
||||
}
|
||||
|
||||
$reponse = Invoke-GraphRequest -Url "/deviceAppManagement/mobileApps/$appId" -HttpMethod PATCH -Content (ConvertTo-Json $commitAppBody -Depth 5)
|
||||
|
||||
@@ -10,7 +10,7 @@ This module manages Authentication for the application with MSAL. It is also res
|
||||
#>
|
||||
function Get-ModuleVersion
|
||||
{
|
||||
'3.3.2'
|
||||
'3.4.0'
|
||||
}
|
||||
|
||||
$global:msalAuthenticator = $null
|
||||
@@ -234,7 +234,7 @@ function Get-MSALUserInfo
|
||||
{
|
||||
Write-Log "Get current user"
|
||||
$tmpMe = MSGraph\Invoke-GraphRequest -Url "ME" -SkipAuthentication -ODataMetadata "Skip"
|
||||
if($tmpMe.creationType -ne "Invitation")
|
||||
if($null -ne $tmpMe -and $tmpMe.creationType -ne "Invitation")
|
||||
{
|
||||
### Only get user info from home tenant
|
||||
$global:Me = $tmpMe
|
||||
@@ -342,6 +342,12 @@ function Install-MSALDependencyModule
|
||||
{
|
||||
param($moduleToInstall, $button)
|
||||
|
||||
if($global:hideUI -eq $true)
|
||||
{
|
||||
Write-Log "Cannot install MSAL module in Silent mode"
|
||||
return
|
||||
}
|
||||
|
||||
$forceUserInstallation = $false
|
||||
|
||||
if($global:chkCurrentUser.IsChecked -eq $false -and (Get-IsAdmin) -eq $false)
|
||||
@@ -541,6 +547,38 @@ function Add-MSALPrereq
|
||||
}
|
||||
}
|
||||
|
||||
function Connect-MSALClientApp
|
||||
{
|
||||
param($clientId, $tenantId, $secret, $Certificate)
|
||||
$scopes = [String[]]".default"
|
||||
|
||||
if(-not $script:MSALApp)
|
||||
{
|
||||
$authority = "https://login.microsoftonline.com/$tenantId"
|
||||
#$redirectUri = "http://localhost"
|
||||
|
||||
if($secret)
|
||||
{
|
||||
$ClientApplicationBuilder = [Microsoft.Identity.Client.ConfidentialClientApplicationBuilder]::Create($clientId).WithClientSecret($ClientSecret).WithAuthority([URI]::new($authority)) #.WithRedirectUri($redirectUri)
|
||||
}
|
||||
elseif($Certificate)
|
||||
{
|
||||
$ClientApplicationBuilder = [Microsoft.Identity.Client.ConfidentialClientApplicationBuilder]::Create($clientId).WithCertificate($ClientSecret).WithAuthority([URI]::new($authority)) #.WithRedirectUri($redirectUri)
|
||||
}
|
||||
else
|
||||
{
|
||||
return
|
||||
}
|
||||
$script:MSALApp = $ClientApplicationBuilder.Build()
|
||||
}
|
||||
|
||||
if($script:MSALApp)
|
||||
{
|
||||
$accessTokenRequest = $script:MSALApp.AcquireTokenForClient($scopes)
|
||||
$global:MSALToken = Get-MsalAuthenticationToken $accessTokenRequest
|
||||
}
|
||||
}
|
||||
|
||||
function Get-MsalAuthenticationToken
|
||||
{
|
||||
param($aquireTokenObj)
|
||||
@@ -689,6 +727,9 @@ function Connect-MSALUser
|
||||
[switch]
|
||||
$Interactive,
|
||||
|
||||
[switch]
|
||||
$ClientApp,
|
||||
|
||||
$Account,
|
||||
|
||||
$Tenant
|
||||
@@ -697,6 +738,24 @@ function Connect-MSALUser
|
||||
# No login during first time the app is started
|
||||
if($global:FirstTimeRunning -and $global:MainAppStarted -eq $false) { return }
|
||||
|
||||
if($global:hideUI -eq $true)
|
||||
{
|
||||
if($global:AzureAppId -and $global:ClientSecret -and $global:TenantId)
|
||||
{
|
||||
Connect-MSALClientApp $global:AzureAppId $global:TenantId -secret $global:ClientSecret
|
||||
}
|
||||
elseif($global:AzureAppId -and $global:ClientCert -and $global:TenantId)
|
||||
{
|
||||
Connect-MSALClientApp $global:AzureAppId $global:TenantId -certificate $global:ClientCert
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Log "Azure AppId, Tenant Id and Sercret/Cert must be specified for batch login" 3
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
Write-LogDebug "Authenticate"
|
||||
|
||||
if(-not $global:appObj.ClientId)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
42
README.md
42
README.md
@@ -29,12 +29,48 @@ Before starting the app:
|
||||
|
||||
Before logging on:
|
||||
|
||||
* The app will use the Intune PowerShell Azure Enterprise Application by default but request all permissions required by the script. The will most likely cause a consent prompt since it uses more permission than the Intune module. Enable **Use Default Permissions** in Settings to only request the current permissions granted to the Enterprise App.
|
||||
**Note:** Using default permission might reduce functionality e.g. permissions for one or more object types might be missing
|
||||
* The app will use the Intune PowerShell Azure Enterprise Application by default and only use the permissions granted to that appliction. Disable **Use Default Permissions** in Settings to request additional permissions. The will cause a consent prompt if one or more permissions are missing for the app.
|
||||
**Note:** If the app has not been approved for the organization, a consent prompt will be disablyed.
|
||||
* Enable **Get Tenant List** in Settings if accessing multiple environments with the same account e.g. a guest account in other tenants. This might cause a Consent prompt
|
||||
|
||||
Start the script by running **Start.cmd**, **Start-WithJson.cmd**, **Start-WithConsole.cmd** or **Start-IntuneManagement.ps1**. **Start-WithConsole.cmd** will leave the command prompt window open so you can see the log while running the app.
|
||||
|
||||
## Silent Batch Job (Beta)
|
||||
|
||||
The script can be executed without UI. This is to support DevOps environment.
|
||||
|
||||
Silent batch job is supported by the following features:
|
||||
|
||||
* Export
|
||||
* Import
|
||||
|
||||
The Silent Batch Job feature requires an Azure App to be configured with a secret or a certificate. The app must also be delegated with the required permissions to Graph objects used by the tool.
|
||||
|
||||
The silent feature uses an exported json file with settings for the specified operation. This file can be generated in the Bulk Export/Import forms. Required settings for the silent job is configured in the form and then exported to a file. The path to the file is then passed on the command line. The file can be used for multiple environments if the **Add company name to the path** option is selected. Note that this requires that the appmust have at least read permission on the Organizations API.
|
||||
|
||||
The following variables can be used in the path and filename:
|
||||
|
||||
* %Date% - This will be translated to yyyy-MM-dd format (eg 2020-02-27)
|
||||
* %DateTime% - This will be translated to yyyyMMdd-HHmm format (eg 20200227-1750)
|
||||
* %Organization% - Name of the tenant
|
||||
* Any environment variable
|
||||
|
||||
The tool will by default generate the files; `BulkExport.json` and `BulkImport.json`. These files can be merged into one file but that must be done manually. These files can also be edited manually. Each setting represents a control in the UI form. When the script is triggered silently, it will create the form in the background, populate it with the values from the file and then trigger the bulk function.
|
||||
|
||||
**Note** The Silent Batch feature use settings configured in the UI. If this is triggered in a DevOps envionment, it is recommended to generate a settings JSON file with the desired settings and then use that in the DevOps environment
|
||||
|
||||
The app authentication can either be passed on the command line or stored in the settings. Tennant Settings is required for multiple environments.
|
||||
|
||||
**Command line example:**
|
||||
|
||||
Start-IntuneManagement.ps1 -Silent -TenantId "<*TenantID*>" -SilentBatchFile <*PathToFile*> [-AppId <*AppId*>] [-Secret <*Secret*> | -Certificate <*CertThumb*>]
|
||||
|
||||
Start-IntuneManagement.ps1 -Silent -SilentBatchFile "C:\Temp\BatchImport.json" -TenantId "00000000-0000-0000-0000-000000000000" -AppId "00000000-0000-0000-0000-000000000001" -Secret "KJ76P~B9###9-.8I####-_MySecret"
|
||||
|
||||
**Setting example:**
|
||||
|
||||
Start-IntuneManagement.ps1 -Silent -SilentBatchFile "C:\Temp\BatchImport.json" -TenantId "00000000-0000-0000-0000-000000000000"
|
||||
|
||||
## Documentation
|
||||
|
||||
This script has an extension that can document profiles and policies in Intune. The output is using the same language strings as the Intune portal.
|
||||
@@ -275,7 +311,7 @@ When multi tenant settings is Enabled/Disabled, the Profile Info is not updated
|
||||
|
||||
The *List Applications* API might not list an imported app immediately after the import. Click *Refresh* to reload the application objects.
|
||||
|
||||
~~When using the filter box to search for items, the checkbox must be clicked twice to select an item.~~</br />
|
||||
~~When using the filter box to search for items, the checkbox must be clicked twice to select an item.~~<br />
|
||||
Issue fixed in 3.3.2
|
||||
|
||||
Logout will only clear the token from cache and not from the browser e.g. if login is triggered after a logout, the user will still be listed in the 'Select user' dialog.
|
||||
|
||||
@@ -1,5 +1,91 @@
|
||||
# Release Notes
|
||||
|
||||
## 3.4.0 - 2022-03-01
|
||||
|
||||
**New features**
|
||||
|
||||
- **Silent batch job**
|
||||
Export/Import can now be executed without UI<br />
|
||||
See documentation for full requirements
|
||||
|
||||
**Note** Please report any issues to [Issue 39](https://github.com/Micke-K/IntuneManagement/issues/39)
|
||||
|
||||
This is based on [Issue 39](https://github.com/Micke-K/IntuneManagement/issues/39)
|
||||
|
||||
- **Documentation**
|
||||
|
||||
- Support for documenting an environment based on exported files<br />
|
||||
|
||||
Select the **Source files** folder in the Documentation Types (Bulk menu) dialog.
|
||||
|
||||
Note: Some values will NOT be included. These are referenced values and not a property on the object eg Certificate on a VPN profile, Root certificate on a SCEP profile etc. These values will be documented with ##TBD...<br />
|
||||
|
||||
This is based on [Issue 37](https://github.com/Micke-K/IntuneManagement/issues/37)
|
||||
|
||||
- Support for attaching the json file for the object in the word document
|
||||
|
||||
- Support for documentation output level (Word)<br />
|
||||
Documenting the full environment can create a document with 1000+ pages depending on the amount of profiles and policies. The documentation output level can now be used to reduce the document size. The output level options are:
|
||||
|
||||
- Full - Document every single value
|
||||
- Limited - Set max value and truncate size for documentation and as option, attach the original value as a text document to the value cell e.g. truncate all values over 500 characters to 10 characters and attach the full value as a text file in the document. This will reduce documentation size for profiles with large XML strings like ADMX ingestion
|
||||
- Basic - Only include the Basic and Assignments tables in the documentation
|
||||
|
||||
- Added support for documenting Filters
|
||||
|
||||
- Added UI for configuring custom columns<br />
|
||||
This can now be done in the Detail View<br />
|
||||
This is based on [Issue 30](https://github.com/Micke-K/IntuneManagement/issues/30)<br />
|
||||
|
||||
- Added support for updating Name and Descriptions of the object in Detail View<br />
|
||||
This is As-Is functionality. Not all object types have been tested.<br />
|
||||
It is recommended to use the portal for this.<br />
|
||||
This is based on a private request<br />
|
||||
|
||||
- Added support for copying an app
|
||||
|
||||
**Note** This requires that the **App packages folder** is specified in Settings and that the file for the app is available in that folder. If the app file is missing it can be uploaded manually in the Details view
|
||||
|
||||
This is based on [Issue 42](https://github.com/Micke-K/IntuneManagement/issues/42)
|
||||
|
||||
- Added support for manually upload an app file via the Details view
|
||||
|
||||
**Fixes**
|
||||
|
||||
- **Documentation**<br />
|
||||
|
||||
- Updated documentation files with support for new properties and removed unused values (Windows Updates, Windows Feature Updates etc.)
|
||||
- Fixed an issue where VPN profiles in some cases was missing the Base VPN settings
|
||||
- Fixed an issue when using a template<br />
|
||||
A table of content will no longer be created. That should be included in the template
|
||||
|
||||
- **Application import**
|
||||
|
||||
- Minor change in the app Win32 upload functionality to align to portal APIs
|
||||
- The File Name is now updated to be based on the actual uploaded file
|
||||
|
||||
**Important** Please create an issue if there are any problems
|
||||
|
||||
- Fixed an issue where ESP and Enrolment Restriction objects were not listed
|
||||
The original filters stopped working
|
||||
|
||||
**Note** The Enrolment restrictions has changed in Graph. There is now one object for each OS type. So there will be multiple restriction objects exported. platformType column was added to identify each object
|
||||
|
||||
This is based on [Issue 41](https://github.com/Micke-K/IntuneManagement/issues/41)
|
||||
|
||||
- Minor fixes in Import/Export extensions - Required for silent batch job support
|
||||
|
||||
- Fixed an issue where PostListCommand was not triggered
|
||||
|
||||
- Additional Endpoint Security columns were not listed
|
||||
- Azure Branding objects was missing the language column <br />
|
||||
<br />
|
||||
- Fixed issue where the Document button was not enabled when **Select All** was clicked (without selecting an object first)
|
||||
|
||||
This is based on [Issue 36](https://github.com/Micke-K/IntuneManagement/issues/36)
|
||||
|
||||
- Other minor bug fixes to support the new features
|
||||
|
||||
## 3.3.3 - 2021-12-15
|
||||
|
||||
**Fixes**
|
||||
@@ -80,7 +166,7 @@ This is a **BETA** release. It contains core changes for Authentication and Sett
|
||||
|
||||
**Default Settings Value Changes**
|
||||
|
||||
* **Use Default Permissions** is now set to Disabled by default. With the Tenant Specific Settings feature, this can now be enabled globally or per tenant. Consultants accessing multiple environments might not have permissions to grant consent requests so this could be enabled on a global level and then disabled for tenants where the permissions can be added.
|
||||
* **Use Default Permissions** is now set to Enabled by default. With the Tenant Specific Settings feature, this can now be enabled globally or per tenant. Consultants accessing multiple environments might not have permissions to grant consent requests so this could be enabled on a global level and then disabled for tenants where the permissions can be added.
|
||||
|
||||
**Fixes**
|
||||
|
||||
|
||||
@@ -5,7 +5,20 @@ param(
|
||||
[switch]
|
||||
$JSonSettings,
|
||||
[string]
|
||||
$JSonFile
|
||||
$JSonFile,
|
||||
[switch]
|
||||
$Silent,
|
||||
[string]
|
||||
$SilentBatchFile = "",
|
||||
[string]
|
||||
$TenantId,
|
||||
[string]
|
||||
$AppId,
|
||||
[string]
|
||||
$Secret,
|
||||
[string]
|
||||
$Certificate
|
||||
)
|
||||
Import-Module ($PSScriptRoot + "\CloudAPIPowerShellManagement.psd1") -Force
|
||||
Initialize-CloudAPIManagement -View "IntuneGraphAPI" -ShowConsoleWindow:($ShowConsoleWindow) -JSonSettings:($JSonSettings) -JSonFile $JSonFile
|
||||
$param = $PSBoundParameters
|
||||
Initialize-CloudAPIManagement -View "IntuneGraphAPI" @param
|
||||
|
||||
@@ -28,6 +28,65 @@
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
|
||||
|
||||
<Style x:Key='ErrorControl' TargetType='ContentControl'>
|
||||
<Setter Property='Template'>
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType='ContentControl'>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Rectangle Width="16" Height="16" ToolTip="{Binding ToolTip}" Name="errorIcon" Visibility="Collapsed">
|
||||
<Rectangle.Fill>
|
||||
<DrawingBrush>
|
||||
<DrawingBrush.Drawing>
|
||||
<DrawingGroup>
|
||||
<DrawingGroup.Children>
|
||||
<GeometryDrawing Brush="#00FFFFFF" Geometry="F1M16,16L0,16 0,0 16,0z" />
|
||||
<GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M8,16C3.589,16 0,12.411 0,8 0,3.589 3.589,0 8,0 12.411,0 16,3.589 16,8 16,12.411 12.411,16 8,16" />
|
||||
<GeometryDrawing Brush="#FFE41400" Geometry="F1M9,10L7,10 7,3 9,3z M9,13L7,13 7,11 9,11z M8,1C4.134,1 1,4.134 1,8 1,11.865 4.134,15 8,15 11.865,15 15,11.865 15,8 15,4.134 11.865,1 8,1" />
|
||||
<GeometryDrawing Brush="#FFEFEFF0" Geometry="F1M9,11L7,11 7,13 9,13z M9,10L7,10 7,3 9,3z" />
|
||||
</DrawingGroup.Children>
|
||||
</DrawingGroup>
|
||||
</DrawingBrush.Drawing>
|
||||
</DrawingBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
|
||||
<ContentPresenter Grid.Column="1" Name="errorControl" />
|
||||
</Grid>
|
||||
<ControlTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding RelativeSource={RelativeSource self},Path=Tag}" Value="True">
|
||||
<Setter TargetName="errorIcon" Property="Visibility" Value="Visible" />
|
||||
</DataTrigger>
|
||||
</ControlTemplate.Triggers>
|
||||
<ControlTemplate.Resources>
|
||||
<Style TargetType="TextBox">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=Tag, RelativeSource={RelativeSource AncestorType={x:Type ContentControl}}}" Value="True">
|
||||
<Setter Property="Border.BorderBrush" Value="Red" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ControlTemplate.Resources>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
|
||||
<Style x:Key="ErrorBorder" TargetType="Control">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding HasErrors}" Value="True">
|
||||
<Setter Property="Border.BorderBrush" Value="Red"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
|
||||
|
||||
|
||||
<Style x:Key="HoverUnderlineStyleWithBackground" TargetType="TextBlock">
|
||||
<Style.Triggers>
|
||||
@@ -131,4 +190,5 @@
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
||||
@@ -108,9 +108,19 @@
|
||||
-->
|
||||
</Grid >
|
||||
|
||||
<StackPanel Name="spExportSubMenu" Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row='2' Grid.ColumnSpan='2' >
|
||||
<Button Name="btnExport" Content="Export" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
<Grid Grid.Row='2' Grid.ColumnSpan='2' >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" >
|
||||
<Button Name="btnExportSettingsForSilentExport" Content="Save" Width='100' Margin="5,0,0,0" ToolTip="Save settings for batch job" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Name="spExportSubMenu" Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" >
|
||||
<Button Name="btnExport" Content="Export" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid >
|
||||
|
||||
</Grid >
|
||||
|
||||
@@ -118,9 +118,19 @@
|
||||
|
||||
</Grid>
|
||||
|
||||
<StackPanel Name="spImportSubMenu" Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row='2' Grid.ColumnSpan='2' >
|
||||
<Button Name="btnImport" Content="Import" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
<Grid Grid.Row='2' Grid.ColumnSpan='2' >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" >
|
||||
<Button Name="btnExportSettingsForSilentImport" Content="Save" Width='100' Margin="5,0,0,0" ToolTip="Save settings for batch job" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Name="spImportSubMenu" Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" >
|
||||
<Button Name="btnImport" Content="Import" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
</Grid >
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -65,6 +67,24 @@
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='5' Name='chkSetDefaultValue' VerticalAlignment="Center" IsChecked="true" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="6" Grid.ColumnSpan="2" Name="spDocumentFromFolder">
|
||||
<Label Content="Source files" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Create documentation from exported files" />
|
||||
</StackPanel>
|
||||
|
||||
<Grid Grid.Row='7' Margin="5,0,0,0" Grid.ColumnSpan="2" Name="grdDocumentFromFolder">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="" Name="txtDocumentFromFolder" />
|
||||
<Button Grid.Column="2" Name="browseDocumentFromFolder" Padding="5,0,5,0" Width="50" ToolTip="Browse for export folder">...</Button>
|
||||
</Grid>
|
||||
|
||||
|
||||
<Label Content="Objects to document" Grid.Row="0" Grid.Column="4" />
|
||||
<DataGrid Name="grdDocumentObjects" Grid.Row="1" Grid.RowSpan="99" Grid.Column="4" CanUserAddRows="False" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="White" Margin="0,0,5,0">
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -30,18 +31,81 @@
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0">
|
||||
<Label Content="Output Properties" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the output type. Simple will only add Value and Name for Settings. Extended will output the same as Raw Output. Use Custom to select custom properties" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbWordDocumentationProperties" Margin="0,5,0,0" MinWidth="250" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
<Grid Grid.ColumnSpan="2">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0">
|
||||
<Label Content="Output Properties" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the output type. Simple will only add Value and Name for Settings. Extended will output the same as Raw Output. Use Custom to select custom properties" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbWordDocumentationProperties" Margin="0,5,0,0" MinWidth="250" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1" Name="spWordCustomProperties">
|
||||
<Label Content="Custom Properties" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Comma separated list with properties to export. The properties must match with values from Raw Data" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtWordCustomProperties" Margin="0,5,5,5" Grid.Row="1" Grid.Column="1"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1" Name="spWordCustomProperties">
|
||||
<Label Content="Custom Properties" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Comma separated list with properties to export. The properties must match with values from Raw Data" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtWordCustomProperties" Margin="0,5,5,5" Grid.Row="1" Grid.Column="1"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" Grid.ColumnSpan="2">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0">
|
||||
<Label Content="Output Level" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the output level. Full will document full value of each setting, Limited will truncate the value if more than 100 characters and Basic will only include the basic information and assignments but no settings" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbWordDocumentationLevel" Margin="0,5,0,0" MinWidth="250" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<Grid Grid.Row="1" Grid.ColumnSpan="2" Name="gdWordDocumentationLimitOptions">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" >
|
||||
<Label Content="Attach full value" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Attach value as a text file if exceeds the Max value length" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Name='chkWordDocumentationLimitAttatch' VerticalAlignment="Center" IsChecked="true" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1">
|
||||
<Label Content="Max value length" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the max sting length of the value. Value over this size will be truncated. Default is 100" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtWordDocumentationLimitMaxLength" Margin="0,5,5,5" Width="100" Grid.Row="1" HorizontalAlignment="Left" Grid.Column="1"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="2">
|
||||
<Label Content="Truncated value length" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the length for the truncate size. Default is same size as Max value length. Specify 0 to skip tuncated text and only include the attached value (must be enabled)" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtWordDocumentationLimitTruncateLength" Margin="0,5,5,5" Width="100" HorizontalAlignment="Left" Grid.Row="2" Grid.Column="1"/>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" Grid.Row="2">
|
||||
<Label Content="Word document template" />
|
||||
@@ -74,7 +138,7 @@
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="" Name="txtWordDocumentName" />
|
||||
<Button Grid.Column="2" Name="browseWordDocumentName" Padding="5,0,5,0" Width="50" ToolTip="Select output document">...</Button>
|
||||
<Button Grid.Column="2" Name="browseWordDocumentName" Padding="5,0,5,0" Width="50" ToolTip="Select output document">...</Button>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="5">
|
||||
@@ -167,6 +231,12 @@
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='19' Name='chkWordExcludeScriptSignature' VerticalAlignment="Center" IsChecked="true" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='20' Margin="0,0,5,0">
|
||||
<Label Content="Attatch Json file" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Attatch the Json file to the documentation" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='20' Name='chkWordAttatchJsonFile' VerticalAlignment="Center" IsChecked="false" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="21">
|
||||
<Label Content="Script table style" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the table style to use for scripts. Ducument table style will be use as default" />
|
||||
|
||||
@@ -1,24 +1,150 @@
|
||||
<Grid Margin="0,5,0,5" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<TabControl SelectedIndex="0" Margin="0,5,0,5" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<TabItem Header="Json">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBox Name="txtValue"
|
||||
Grid.Column="1" Grid.Row="1"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
ScrollViewer.CanContentScroll="True"
|
||||
IsReadOnly="True"
|
||||
MinWidth="250" Margin="0" AcceptsReturn="True" />
|
||||
<TextBox Name="txtValue"
|
||||
Grid.Column="1" Grid.Row="1"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
ScrollViewer.CanContentScroll="True"
|
||||
IsReadOnly="True"
|
||||
MinWidth="250" Margin="0" AcceptsReturn="True" />
|
||||
|
||||
<WrapPanel Name="pnlButtons" Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,5,0,0">
|
||||
<Button Name="btnFull" MinWidth="100" Margin="0,0,5,0" ToolTip="Load full info of the object">Load full</Button>
|
||||
<Button Name="btnCopy" MinWidth="100" Margin="0,0,0,0" ToolTip="Copy text to clipboard">Copy</Button>
|
||||
</WrapPanel>
|
||||
</Grid>
|
||||
<WrapPanel Name="pnlButtons" Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,5,0,0">
|
||||
<Button Name="btnFull" MinWidth="100" Margin="0,0,5,0" ToolTip="Load full info of the object">Load full</Button>
|
||||
<Button Name="btnCopy" MinWidth="100" Margin="0,0,0,0" ToolTip="Copy text to clipboard">Copy</Button>
|
||||
</WrapPanel>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Settings">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0" HorizontalAlignment="Left">
|
||||
<Label Content="Name" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Name of the object" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectName" Margin="0,5,5,0" Grid.Row="0" Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1" HorizontalAlignment="Left">
|
||||
<Label Content="Description" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Name of the object" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectDescription" Margin="0,5,5,0" Grid.Row="1" Grid.Column="1" AcceptsReturn="True" Height="100" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="1" Margin="5,5,5,0" Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Right">
|
||||
<Button Name="btnObjectSettingsSave" Content="Save" Margin="0,0,0,0" Width="100" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Columns">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" >
|
||||
<Label Content="Properties" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Properties of the current object" />
|
||||
</StackPanel>
|
||||
|
||||
<ListBox Name="lstObjectProperties" SelectionMode="Single" Grid.Row="1" Grid.RowSpan="99" MinWidth="100" DisplayMemberPath="Name">
|
||||
</ListBox>
|
||||
|
||||
<StackPanel Grid.Row="1" Grid.Column="1" Margin="5,0,5,0">
|
||||
<Button Content=">" Name="btnObjectColumnsAdd" Width="50" ToolTip="Add property" />
|
||||
</StackPanel>
|
||||
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Row="1" Grid.Column="2">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<ListBox Name="lstObjectColumns" SelectionMode="Single" Grid.Row="0" MinWidth="150" DisplayMemberPath="Property" Height="200">
|
||||
</ListBox>
|
||||
|
||||
<StackPanel Grid.Column="1" Margin="5,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center">
|
||||
<Button Content="Up" Name="btnObjectColumnsMoveUp" Width="50" ToolTip="Move the selected column up" />
|
||||
<Button Content="Down" Name="btnObjectColumnsMoveDown" Width="50" ToolTip="Move the selected column down" Margin="0,5,0,0"/>
|
||||
<Button Content="Delete" Name="btnObjectColumnsDelete" Width="50" ToolTip="Delete the selected column" Margin="0,5,0,0"/>
|
||||
<Button Content="Clear" Name="btnObjectColumnsClear" Width="50" ToolTip="Delete all custom columns" Margin="0,5,0,0"/>
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox Grid.Row='1' Name='chkObjectColumnOverride' Grid.ColumnSpan="2" Content="Override default columns" VerticalAlignment="Center" ToolTip="Do not add default columns first. If this is checked then only the properties in the list will be displayed" />
|
||||
|
||||
<Grid Grid.Row="3" Grid.ColumnSpan="2" Name="grdObjectColumns">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0" HorizontalAlignment="Left">
|
||||
<Label Content="Property" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Property to display. Sub properties and array values are supported eg files[0].displayName" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectColumnsProperty" Text="{Binding Property}" Margin="0,5,5,0" Grid.Row="0" Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1">
|
||||
<Label Content="Header" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Header for the property. Name of property will be used if not specified" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectColumnsHeader" Text="{Binding Header}" Margin="0,5,5,0" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="2" HorizontalAlignment="Left">
|
||||
<Label Content="Current settings:" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Current property settings. Only updated when saved" />
|
||||
</StackPanel>
|
||||
<Label Name="lblObjectColumnsConfig" Content="" Margin="0,0,5,0" Grid.Row="3" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="1" Margin="5,5,5,0" Grid.Row="4" Grid.ColumnSpan="2" HorizontalAlignment="Right">
|
||||
<Button Name="btnObjectColumnsReset" Content="Reset" Margin="0,0,5,0" Width="100" ToolTip="Revert all changes" />
|
||||
<Button Name="btnObjectColumnsSave" Content="Save" Margin="0,0,0,0" Width="100" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
Reference in New Issue
Block a user