diff --git a/Private/ConvertTo-XMLGenericPublicKey.ps1 b/Private/ConvertTo-XMLGenericPublicKey.ps1 new file mode 100644 index 0000000..e552236 --- /dev/null +++ b/Private/ConvertTo-XMLGenericPublicKey.ps1 @@ -0,0 +1,86 @@ +function ConvertTo-XMLGenericPublicKey { + [cmdletBinding()] + param( + [PSCustomObject] $GPO, + [string[]] $Category + ) + + $SkipNames = ('Name', 'LocalName', 'NamespaceURI', 'Prefix', 'NodeType', 'ParentNode', 'OwnerDocument', 'IsEmpty', 'Attributes', 'HasAttributes', 'SchemaInfo', 'InnerXml', 'InnerText', 'NextSibling', 'PreviousSibling', 'ChildNodes', 'FirstChild', 'LastChild', 'HasChildNodes', 'IsReadOnly', 'OuterXml', 'BaseURI', 'PreviousText') + <# + $UsedNames = [System.Collections.Generic.List[string]]::new() + [Array] $Settings = foreach ($Cat in $Category) { + $GPO.DataSet | Where-Object { $null -ne $_.$Cat } + } + #> + foreach ($Setting in $GPO.DataSet) { + $CreateGPO = [ordered]@{ + DisplayName = $GPO.DisplayName + DomainName = $GPO.DomainName + GUID = $GPO.GUID + GpoType = $GPO.GpoType + #GpoCategory = $GPOEntry.GpoCategory + #GpoSettings = $GPOEntry.GpoSettings + } + $SettingName = $Setting.Name -split ":" + $CreateGPO['CreatedTime'] = $GPO.CreatedTime # : 06.06.2020 18:03:36 + $CreateGPO['ModifiedTime'] = $GPO.ModifiedTime # : 17.06.2020 16:08:10 + $CreateGPO['ReadTime'] = $GPO.ReadTime # : 13.08.2020 10:15:37 + $CreateGPO['SecurityDescriptor'] = $GPO.SecurityDescriptor # : SecurityDescriptor + $CreateGPO['FilterDataAvailable'] = $GPO.FilterDataAvailable # : True + + + #$Divider = $SettingName[0] + $Name = $SettingName[1] + #$Name = Format-ToTitleCase -Text $Setting.Name -RemoveWhiteSpace -RemoveChar ',', '-', "'", '\(', '\)', ':' + $CreateGPO['Name'] = $Name # $Setting.Name + #$CreateGPO['GPOSettingOrder'] = $Setting.GPOSettingOrder + + #foreach ($Property in ($Setting.Properties | Get-Member -MemberType Properties).Name) { + + $Properties = $Setting.PSObject.Properties.Name | Where-Object { $_ -notin $SkipNames } + foreach ($Property in $Properties) { + If ($Property -eq 'Value') { + if ($Setting.$Property) { + #$SubProperties = $Setting.$Property.PSObject.Properties.Name + if ($Setting.$Property.Name) { + $Name = $Setting.$Property.Name + } else { + $Name = 'Value' + } + if ($Setting.$Property.Number) { + $CreateGPO[$Name] = $Setting.$Property.Number + } elseif ($Setting.$Property.String) { + $CreateGPO[$Name] = $Setting.$Property.String + } else { + throw + } + + <# + foreach ($SubProperty in $SubProperties) { + if ($SubProperty -eq 'Name') { + + } elseif ($SubProperty -eq 'String') { + + } elseif ($SubProperty -eq 'Number') { + + } + #$Name = Format-CamelCaseToDisplayName -Text $SubProperty #-RemoveWhiteSpace -RemoveChar ',', '-', "'", '\(', '\)', ':' + #$CreateGPO[$Name] = $Setting.$Property.$SubProperty + } + #> + } + } else { + $Name = Format-CamelCaseToDisplayName -Text $Property #-RemoveWhiteSpace -RemoveChar ',', '-', "'", '\(', '\)', ':' + $CreateGPO[$Name] = $Setting.$Property + } + } + + + $CreateGPO['Filters'] = $Setting.Filters + + $CreateGPO['Linked'] = $GPO.Linked + $CreateGPO['LinksCount'] = $GPO.LinksCount + $CreateGPO['Links'] = $GPO.Links + [PSCustomObject] $CreateGPO + } +} \ No newline at end of file diff --git a/Private/Format-CamelCaseToDisplayName.ps1 b/Private/Format-CamelCaseToDisplayName.ps1 new file mode 100644 index 0000000..e66ff69 --- /dev/null +++ b/Private/Format-CamelCaseToDisplayName.ps1 @@ -0,0 +1,27 @@ +function Format-CamelCaseToDisplayName { + [cmdletBinding()] + param( + [string[]] $Text, + [string] $AddChar + ) + foreach ($string in $Text) { + $newString = '' + $stringChars = $string.GetEnumerator() + $charIndex = 0 + foreach ($char in $stringChars) { + # If upper and not first character, add a space + if ([char]::IsUpper($char) -eq 'True' -and $charIndex -gt 0) { + $newString = $newString + $AddChar + $char.ToString() + } elseif ($charIndex -eq 0) { + # If the first character, make it a capital always + $newString = $newString + $char.ToString().ToUpper() + } else { + $newString = $newString + $char.ToString() + } + $charIndex++ + } + $newString + } +} + +#Format-CamelCaseToDisplayName -Text 'Test1', 'TestingMyAss', 'OtherTest', 'otherTEst' \ No newline at end of file