mirror of
https://github.com/EvotecIT/GPOZaurr.git
synced 2026-07-26 11:49:17 +00:00
114 lines
6.2 KiB
PowerShell
114 lines
6.2 KiB
PowerShell
function ConvertTo-XMLFolderRedirection {
|
|
<#
|
|
.SYNOPSIS
|
|
Converts a PowerShell custom object representing folder redirection settings into XML format.
|
|
|
|
.DESCRIPTION
|
|
This function takes a PowerShell custom object representing folder redirection settings and converts it into XML format for storage or transmission.
|
|
|
|
.PARAMETER GPO
|
|
The PowerShell custom object representing the folder redirection settings.
|
|
|
|
.PARAMETER SingleObject
|
|
Indicates whether to convert a single object or multiple objects.
|
|
|
|
.EXAMPLE
|
|
ConvertTo-XMLFolderRedirection -GPO $folderRedirectionSettingsObject -SingleObject
|
|
|
|
Description:
|
|
Converts the $folderRedirectionSettingsObject into XML format for a single object.
|
|
|
|
.EXAMPLE
|
|
$folderRedirectionSettings | ConvertTo-XMLFolderRedirection -SingleObject
|
|
|
|
Description:
|
|
Converts multiple folder redirection settings in $folderRedirectionSettings into XML format for each object.
|
|
#>
|
|
[cmdletBinding()]
|
|
param(
|
|
[PSCustomObject] $GPO,
|
|
[switch] $SingleObject
|
|
)
|
|
# Redirection types a stored as GUID in GPOs. This hash is used to translate into readable text.
|
|
$FolderID = @{
|
|
"{1777F761-68AD-4D8A-87BD-30B759FA33DD}" = "Favorites"
|
|
"{FDD39AD0-238F-46AF-ADB4-6C85480369C7}" = "Documents"
|
|
"{33E28130-4E1E-4676-835A-98395C3BC3BB}" = "Pictures"
|
|
"{4BD8D571-6D19-48D3-BE97-422220080E43}" = "Music"
|
|
"{18989B1D-99B5-455B-841C-AB7C74E4DDFC}" = "Videos"
|
|
"{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}" = "AppDataRoaming"
|
|
"{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}" = "Desktop"
|
|
"{625B53C3-AB48-4EC1-BA1F-A1EF4146FC19}" = "StartMenu"
|
|
"{374DE290-123F-4565-9164-39C4925E467B}" = "Downloads"
|
|
"{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}" = "Saved Games"
|
|
"{56784854-C6CB-462B-8169-88E350ACB882}" = "Contacts"
|
|
"{7D1D3A04-DEBB-4115-95CF-2F29DA2920DA}" = "Searches"
|
|
"{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}" = "Links"
|
|
}
|
|
if ($SingleObject) {
|
|
$CreateGPO = [ordered]@{
|
|
DisplayName = $GPO.DisplayName
|
|
DomainName = $GPO.DomainName
|
|
GUID = $GPO.GUID
|
|
GpoType = $GPO.GpoType
|
|
#GpoCategory = $GPOEntry.GpoCategory
|
|
#GpoSettings = $GPOEntry.GpoSettings
|
|
Count = 0
|
|
Settings = $null
|
|
}
|
|
[Array] $CreateGPO['Settings'] = foreach ($Folder in $GPO.DataSet) {
|
|
foreach ($Location in $Folder.Location) {
|
|
[PSCustomObject] @{
|
|
ID = $Folder.ID
|
|
FolderType = $FolderID[$Folder.Id]
|
|
DestinationPath = $Location.DestinationPath
|
|
SecuritySID = $Location.SecurityGroup.SID.'#text'
|
|
SecurityName = $Location.SecurityGroup.Name.'#text'
|
|
GrantExclusiveRights = if ($Folder.GrantExclusiveRights -eq 'true') { $true } else { $false }
|
|
MoveContents = if ($Folder.MoveContents -eq 'true') { $true } else { $false }
|
|
FollowParent = if ($Folder.FollowParent -eq 'true') { $true } else { $false }
|
|
ApplyToDownLevel = if ($Folder.ApplyToDownLevel -eq 'true') { $true } else { $false }
|
|
DoNotCare = if ($Folder.DoNotCare -eq 'true') { $true } else { $false }
|
|
RedirectToLocal = if ($Folder.RedirectToLocal -eq 'true') { $true } else { $false }
|
|
PolicyRemovalBehavior = $Folder.PolicyRemovalBehavior # : LeaveContents
|
|
ConfigurationControl = if ($Folder.ConfigurationControl -eq 'GP') { 'Group Policy' } else { $Folder.ConfigurationControl } # : GP
|
|
PrimaryComputerEvaluation = $Folder.PrimaryComputerEvaluation # : PrimaryComputerPolicyDisabled
|
|
}
|
|
}
|
|
}
|
|
$CreateGPO['Count'] = $CreateGPO['Settings'].Count
|
|
$CreateGPO['Linked'] = $GPO.Linked
|
|
$CreateGPO['LinksCount'] = $GPO.LinksCount
|
|
$CreateGPO['Links'] = $GPO.Links
|
|
[PSCustomObject] $CreateGPO
|
|
} else {
|
|
foreach ($Folder in $GPO.DataSet) {
|
|
foreach ($Location in $Folder.Location) {
|
|
$CreateGPO = [ordered]@{
|
|
DisplayName = $GPO.DisplayName
|
|
DomainName = $GPO.DomainName
|
|
GUID = $GPO.GUID
|
|
GpoType = $GPO.GpoType
|
|
Id = $Folder.Id
|
|
FolderType = $FolderID[$Folder.Id]
|
|
DestinationPath = $Location.DestinationPath
|
|
SecuritySID = $Location.SecurityGroup.SID.'#text'
|
|
SecurityName = $Location.SecurityGroup.Name.'#text'
|
|
GrantExclusiveRights = if ($Folder.GrantExclusiveRights -eq 'true') { $true } else { $false }
|
|
MoveContents = if ($Folder.MoveContents -eq 'true') { $true } else { $false }
|
|
FollowParent = if ($Folder.FollowParent -eq 'true') { $true } else { $false }
|
|
ApplyToDownLevel = if ($Folder.ApplyToDownLevel -eq 'true') { $true } else { $false }
|
|
DoNotCare = if ($Folder.DoNotCare -eq 'true') { $true } else { $false }
|
|
RedirectToLocal = if ($Folder.RedirectToLocal -eq 'true') { $true } else { $false }
|
|
PolicyRemovalBehavior = $Folder.PolicyRemovalBehavior # : LeaveContents
|
|
ConfigurationControl = if ($Folder.ConfigurationControl -eq 'GP') { 'Group Policy' } else { $Folder.ConfigurationControl } # : GP
|
|
PrimaryComputerEvaluation = $Folder.PrimaryComputerEvaluation # : PrimaryComputerPolicyDisabled
|
|
Linked = $GPO.Linked
|
|
LinksCount = $GPO.LinksCount
|
|
Links = $GPO.Links
|
|
}
|
|
[PSCustomObject] $CreateGPO
|
|
}
|
|
}
|
|
}
|
|
} |