From fd7c7e1b3012894b54601a1fd8cf39c1c2563080 Mon Sep 17 00:00:00 2001 From: Przemyslaw Klys Date: Sat, 18 Jul 2020 21:43:42 +0200 Subject: [PATCH] Renamed lots of functions, cleanup --- Private/ConvertTo-Audit.ps1 | 78 --------- Private/ConvertTo-AuditAlternative.ps1 | 37 ---- Private/ConvertTo-LocalUserAndGroups.ps1 | 165 ------------------ Private/ConvertTo-RegistryAutologon.ps1 | 99 ----------- .../ConvertTo-RegistrySettingsCollection.ps1 | 43 ----- ...ies.ps1 => ConvertTo-XMLAccountPolicy.ps1} | 34 +--- Private/ConvertTo-XMLAudit.ps1 | 42 +++++ ...EventLog.ps1 => ConvertTo-XMLEventLog.ps1} | 32 +--- ...roups.ps1 => ConvertTo-XMLLocalGroups.ps1} | 0 Private/ConvertTo-XMLLocalUser.ps1 | 74 ++++++++ ...Policies.ps1 => ConvertTo-XMLPolicies.ps1} | 33 +--- Private/ConvertTo-XMLPrinter.ps1 | 51 ++++++ ...s.ps1 => ConvertTo-XMLPrinterInternal.ps1} | 52 ------ Private/ConvertTo-XMLRegistryAutologon.ps1 | 49 ++++++ Private/ConvertTo-XMLRegistrySettings.ps1 | 75 ++++++++ ...o-Scripts.ps1 => ConvertTo-XMLScripts.ps1} | 29 +-- ...s.ps1 => ConvertTo-XMLSecurityOptions.ps1} | 31 +--- ... => ConvertTo-XMLSoftwareInstallation.ps1} | 45 +---- ...es.ps1 => ConvertTo-XMLSystemServices.ps1} | 28 +-- ....ps1 => ConvertTo-XMLSystemServicesNT.ps1} | 39 +---- ...Settings.ps1 => Get-XMLNestedRegistry.ps1} | 108 ------------ Private/Script.GPODictionary.ps1 | 8 +- 22 files changed, 303 insertions(+), 849 deletions(-) delete mode 100644 Private/ConvertTo-Audit.ps1 delete mode 100644 Private/ConvertTo-AuditAlternative.ps1 delete mode 100644 Private/ConvertTo-LocalUserAndGroups.ps1 delete mode 100644 Private/ConvertTo-RegistryAutologon.ps1 delete mode 100644 Private/ConvertTo-RegistrySettingsCollection.ps1 rename Private/{ConvertTo-AccountPolicies.ps1 => ConvertTo-XMLAccountPolicy.ps1} (50%) create mode 100644 Private/ConvertTo-XMLAudit.ps1 rename Private/{ConvertTo-EventLog.ps1 => ConvertTo-XMLEventLog.ps1} (62%) rename Private/{ConvertTo-LocalGroups.ps1 => ConvertTo-XMLLocalGroups.ps1} (100%) create mode 100644 Private/ConvertTo-XMLLocalUser.ps1 rename Private/{ConvertTo-Policies.ps1 => ConvertTo-XMLPolicies.ps1} (63%) create mode 100644 Private/ConvertTo-XMLPrinter.ps1 rename Private/{ConvertTo-XMLPrinters.ps1 => ConvertTo-XMLPrinterInternal.ps1} (78%) create mode 100644 Private/ConvertTo-XMLRegistryAutologon.ps1 create mode 100644 Private/ConvertTo-XMLRegistrySettings.ps1 rename Private/{ConvertTo-Scripts.ps1 => ConvertTo-XMLScripts.ps1} (63%) rename Private/{ConvertTo-SecurityOptions.ps1 => ConvertTo-XMLSecurityOptions.ps1} (64%) rename Private/{ConvertTo-SoftwareInstallation.ps1 => ConvertTo-XMLSoftwareInstallation.ps1} (66%) rename Private/{ConvertTo-SystemServices.ps1 => ConvertTo-XMLSystemServices.ps1} (63%) rename Private/{ConvertTo-SystemServicesNT.ps1 => ConvertTo-XMLSystemServicesNT.ps1} (74%) rename Private/{ConvertTo-RegistrySettings.ps1 => Get-XMLNestedRegistry.ps1} (54%) diff --git a/Private/ConvertTo-Audit.ps1 b/Private/ConvertTo-Audit.ps1 deleted file mode 100644 index 0948504..0000000 --- a/Private/ConvertTo-Audit.ps1 +++ /dev/null @@ -1,78 +0,0 @@ -function ConvertTo-Audit { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - $SuccessAttempts = try { [bool]::Parse($GPOEntry.SuccessAttempts) } catch { $null }; - $FailureAttempts = try { [bool]::Parse($GPOEntry.FailureAttempts) } catch { $null }; - if ($SuccessAttempts -and $FailureAttempts) { - $Setting = 'Success, Failure' - } elseif ($SuccessAttempts) { - $Setting = 'Success' - } elseif ($FailureAttempts) { - $Setting = 'Failure' - } else { - $Setting = 'No auditing' - } - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Policy = $GPOEntry.Name - Setting = $Setting - SuccessAttempts = $SuccessAttempts - FailureAttempts = $FailureAttempts - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } -} - -function ConvertTo-XMLAudit { - [cmdletBinding()] - param( - [PSCustomObject] $GPO, - [switch] $FullObject - ) - $CreateGPO = [ordered]@{ - DisplayName = $GPO.DisplayName - DomainName = $GPO.DomainName - GUID = $GPO.GUID - GpoType = $GPO.GpoType - #GpoCategory = $GPOEntry.GpoCategory - #GpoSettings = $GPOEntry.GpoSettings - AuditAccountLogon = 'No auditing' - AuditAccountManage = 'No auditing' - AuditDSAccess = 'No auditing' - AuditLogonEvents = 'No auditing' - AuditObjectAccess = 'No auditing' - AuditPolicyChange = 'No auditing' - AuditPrivilegeUse = 'No auditing' - AuditProcessTracking = 'No auditing' - AuditSystemEvents = 'No auditing' - } - foreach ($GPOEntry in $GPO.DataSet) { - $SuccessAttempts = try { [bool]::Parse($GPOEntry.SuccessAttempts) } catch { $null }; - $FailureAttempts = try { [bool]::Parse($GPOEntry.FailureAttempts) } catch { $null }; - if ($SuccessAttempts -and $FailureAttempts) { - $Setting = 'Success, Failure' - } elseif ($SuccessAttempts) { - $Setting = 'Success' - } elseif ($FailureAttempts) { - $Setting = 'Failure' - } else { - $Setting = 'No auditing' - } - $CreateGPO["$($GPOEntry.Name)"] = $Setting - } - $CreateGPO['Linked'] = $GPO.Linked - $CreateGPO['LinksCount'] = $GPO.LinksCount - $CreateGPO['Links'] = $GPO.Links - [PSCustomObject] $CreateGPO -} \ No newline at end of file diff --git a/Private/ConvertTo-AuditAlternative.ps1 b/Private/ConvertTo-AuditAlternative.ps1 deleted file mode 100644 index 9693c2a..0000000 --- a/Private/ConvertTo-AuditAlternative.ps1 +++ /dev/null @@ -1,37 +0,0 @@ -function ConvertTo-AuditAlternative { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - $SuccessAttempts = try { [bool]::Parse($GPOEntry.SuccessAttempts) } catch { $null }; - $FailureAttempts = try { [bool]::Parse($GPOEntry.FailureAttempts) } catch { $null }; - if ($SuccessAttempts -and $FailureAttempts) { - $Setting = 'Success, Failure' - } elseif ($SuccessAttempts) { - $Setting = 'Success' - } elseif ($FailureAttempts) { - $Setting = 'Failure' - } else { - $Setting = 'No auditing' - } - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Policy = $GPOEntry.Name - Setting = $Setting - #SuccessAttempts = $SuccessAttempts - #FailureAttempts = $FailureAttempts - } - - - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } -} \ No newline at end of file diff --git a/Private/ConvertTo-LocalUserAndGroups.ps1 b/Private/ConvertTo-LocalUserAndGroups.ps1 deleted file mode 100644 index c2a5f32..0000000 --- a/Private/ConvertTo-LocalUserAndGroups.ps1 +++ /dev/null @@ -1,165 +0,0 @@ -function ConvertTo-LocalUserAndGroups { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - foreach ($User in $GPOEntry.User) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Changed = [DateTime] $User.Changed - GPOSettingOrder = $User.GPOSettingOrder - UserAction = $Script:Actions["$($User.Properties.action)"] #: U - UserNewName = $User.Properties.newName #: - UserFullName = $User.Properties.fullName #: - UserDescription = $User.Properties.description #: - UserCpassword = $User.Properties.cpassword #: - UserChangeLogon = $User.Properties.changeLogon #: 0 - UserNoChange = $User.Properties.noChange #: 0 - UserNeverExpires = $User.Properties.neverExpires #: 0 - UserAcctDisabled = $User.Properties.acctDisabled #: 0 - UserAubAuthority = $User.Properties.subAuthority #: RID_ADMIN - UserUserName = $User.Properties.userName #: Administrator (built-in) - UserMembers = $User.Properties.Members #: - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } - foreach ($Group in $GPOEntry.Group) { - # We're mostly interested in Members - [Array] $Members = foreach ($Member in $Group.Properties.Members.Member) { - [ordered] @{ - MemberName = $Member.Name - MemberAction = $Member.Action - MemberSID = $Member.SID - } - } - # if we have no members we create dummy object to make sure we can use foreach below - if ($Members.Count -eq 0) { - $Members = @( - [ordered] @{ - MemberName = $null - MemberAction = $null - MemberSID = $null - } - ) - } - foreach ($Member in $Members) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Changed = [DateTime] $Group.Changed - GPOSettingOrder = $Group.GPOSettingOrder - GroupUid = $Group.uid #: {8F435B0A-CD15-464E-85F3-B6A55B9E816A}: {8F435B0A-CD15-464E-85F3-B6A55B9E816A} - GroupUserContext = $Group.userContext #: 0: 0 - GroupRemovePolicy = $Group.removePolicy #: 1: 1 - #Properties = $Group.Properties #: Properties: Properties - Filters = $Group.Filters #:: - - GroupAction = $Script:Actions["$($Group.Properties.action)"] #: U - GroupNewName = $Group.Properties.newName #: - GroupDescription = $Group.Properties.description #: - GroupDeleteAllUsers = $Group.Properties.deleteAllUsers #: 0 - GroupDeleteAllGroups = $Group.Properties.deleteAllGroups #: 0 - GroupRemoveAccounts = $Group.Properties.removeAccounts #: 1 - GroupSid = $Group.Properties.groupSid #: S - 1 - 5 - 32 - 544 - GroupName = $Group.Properties.groupName #: Administrators (built -in ) - } - # Merging GPO with Member - $CreateGPO = $CreateGPO + $Member - - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } - } - } -} - - -function ConvertTo-XMLLocalUser { - [cmdletBinding()] - param( - [PSCustomObject] $GPO, - [switch] $SingleObject - ) - 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 - } - if (-not $GPO.DataSet.User) { - continue - } - [Array] $CreateGPO['Settings'] = foreach ($User in $GPO.DataSet.User) { - [PSCustomObject] @{ - Changed = [DateTime] $User.Changed - GPOSettingOrder = $User.GPOSettingOrder - Action = $Script:Actions["$($User.Properties.action)"] - UserName = $User.Properties.userName - NewName = $User.Properties.newName - FullName = $User.Properties.fullName - Description = $User.Properties.description - Password = $User.Properties.cpassword - MustChangePasswordAtNextLogon = if ($User.Properties.changeLogon -eq '1') { $true } elseif ($User.Properties.changeLogon -eq '0') { $false } else { $User.Properties.changeLogon }; - CannotChangePassword = if ($User.Properties.noChange -eq '1') { $true } elseif ($User.Properties.noChange -eq '0') { $false } else { $User.Properties.noChange }; - PasswordNeverExpires = if ($User.Properties.neverExpires -eq '1') { $true } elseif ($User.Properties.neverExpires -eq '0') { $false } else { $User.Properties.neverExpires }; - AccountIsDisabled = if ($User.Properties.acctDisabled -eq '1') { $true } elseif ($User.Properties.acctDisabled -eq '0') { $false } else { $User.Properties.acctDisabled }; - AccountExpires = try { [DateTime] $User.Properties.expires } catch { $User.Properties.expires }; - SubAuthority = $User.Properties.subAuthority - } - } - $CreateGPO['Count'] = $CreateGPO['Settings'].Count - $CreateGPO['Linked'] = $GPO.Linked - $CreateGPO['LinksCount'] = $GPO.LinksCount - $CreateGPO['Links'] = $GPO.Links - [PSCustomObject] $CreateGPO - } else { - foreach ($User in $GPO.DataSet.User) { - $CreateGPO = [ordered]@{ - DisplayName = $GPO.DisplayName - DomainName = $GPO.DomainName - GUID = $GPO.GUID - GpoType = $GPO.GpoType - #GpoCategory = $GPO.GpoCategory #: SecuritySettings - #GpoSettings = $GPO.GpoSettings #: SecurityOptions - Changed = [DateTime] $User.Changed - GPOSettingOrder = $User.GPOSettingOrder - Action = $Script:Actions["$($User.Properties.action)"] - UserName = $User.Properties.userName - NewName = $User.Properties.newName - FullName = $User.Properties.fullName - Description = $User.Properties.description - Password = $User.Properties.cpassword - MustChangePasswordAtNextLogon = if ($User.Properties.changeLogon -eq '1') { $true } elseif ($User.Properties.changeLogon -eq '0') { $false } else { $User.Properties.changeLogon }; - CannotChangePassword = if ($User.Properties.noChange -eq '1') { $true } elseif ($User.Properties.noChange -eq '0') { $false } else { $User.Properties.noChange }; - PasswordNeverExpires = if ($User.Properties.neverExpires -eq '1') { $true } elseif ($User.Properties.neverExpires -eq '0') { $false } else { $User.Properties.neverExpires }; - AccountIsDisabled = if ($User.Properties.acctDisabled -eq '1') { $true } elseif ($User.Properties.acctDisabled -eq '0') { $false } else { $User.Properties.acctDisabled }; - AccountExpires = try { [DateTime] $User.Properties.expires } catch { $User.Properties.expires }; - SubAuthority = $User.Properties.subAuthority - } - $CreateGPO['Linked'] = $GPO.Linked - $CreateGPO['LinksCount'] = $GPO.LinksCount - $CreateGPO['Links'] = $GPO.Links - [PSCustomObject] $CreateGPO - } - } -} \ No newline at end of file diff --git a/Private/ConvertTo-RegistryAutologon.ps1 b/Private/ConvertTo-RegistryAutologon.ps1 deleted file mode 100644 index b555e68..0000000 --- a/Private/ConvertTo-RegistryAutologon.ps1 +++ /dev/null @@ -1,99 +0,0 @@ -function ConvertTo-RegistryAutologon { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - AutoAdminLogon = $null - DefaultDomainName = $null - DefaultUserName = $null - DefaultPassword = $null - } - - foreach ($Registry in $GPOEntry.Registry) { - if ($Registry.Properties.Key -eq 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon') { - if ($Registry.Properties.Name -eq 'AutoAdminLogon') { - $CreateGPO['AutoAdminLogon'] = [bool] $Registry.Properties.value - $CreateGPO['DateChangedAutoAdminLogon'] = [DateTime] $Registry.changed - } elseif ($Registry.Properties.Name -eq 'DefaultDomainName') { - $CreateGPO['DefaultDomainName'] = $Registry.Properties.value - $CreateGPO['DateChangedDefaultDomainName'] = [DateTime] $Registry.changed - } elseif ($Registry.Properties.Name -eq 'DefaultUserName') { - $CreateGPO['DefaultUserName'] = $Registry.Properties.value - $CreateGPO['DateChangedDefaultUserName'] = [DateTime] $Registry.changed - } elseif ($Registry.Properties.Name -eq 'DefaultPassword') { - $CreateGPO['DefaultPassword'] = $Registry.Properties.value - $CreateGPO['DateChangedDefaultPassword'] = [DateTime] $Registry.changed - } - } - } - if ($null -ne $CreateGPO['AutoAdminLogon'] -or - $null -ne $CreateGPO['DefaultDomainName'] -or - $null -ne $CreateGPO['DefaultUserName'] -or - $null -ne $CreateGPO['DefaultPassword'] - ) { - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } - } -} - -function ConvertTo-XMLRegistryAutologon { - [cmdletBinding()] - param( - [PSCustomObject] $GPO - ) - $CreateGPO = [ordered]@{ - DisplayName = $GPO.DisplayName - DomainName = $GPO.DomainName - GUID = $GPO.GUID - GpoType = $GPO.GpoType - #GpoCategory = $GPOEntry.GpoCategory - #GpoSettings = $GPOEntry.GpoSettings - AutoAdminLogon = $null - DefaultDomainName = $null - DefaultUserName = $null - DefaultPassword = $null - DateChangedAutoAdminLogon = $null - DateChangedDefaultDomainName = $null - DateChangedDefaultUserName = $null - DateChangedDefaultPassword = $null - } - foreach ($Registry in $GPO.DataSet.Registry) { - if ($Registry.Properties.Key -eq 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon') { - if ($Registry.Properties.Name -eq 'AutoAdminLogon') { - $CreateGPO['AutoAdminLogon'] = [bool] $Registry.Properties.value - $CreateGPO['DateChangedAutoAdminLogon'] = [DateTime] $Registry.changed - } elseif ($Registry.Properties.Name -eq 'DefaultDomainName') { - $CreateGPO['DefaultDomainName'] = $Registry.Properties.value - $CreateGPO['DateChangedDefaultDomainName'] = [DateTime] $Registry.changed - } elseif ($Registry.Properties.Name -eq 'DefaultUserName') { - $CreateGPO['DefaultUserName'] = $Registry.Properties.value - $CreateGPO['DateChangedDefaultUserName'] = [DateTime] $Registry.changed - } elseif ($Registry.Properties.Name -eq 'DefaultPassword') { - $CreateGPO['DefaultPassword'] = $Registry.Properties.value - $CreateGPO['DateChangedDefaultPassword'] = [DateTime] $Registry.changed - } - } - } - if ($null -ne $CreateGPO['AutoAdminLogon'] -or - $null -ne $CreateGPO['DefaultDomainName'] -or - $null -ne $CreateGPO['DefaultUserName'] -or - $null -ne $CreateGPO['DefaultPassword'] - ) { - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } -} \ No newline at end of file diff --git a/Private/ConvertTo-RegistrySettingsCollection.ps1 b/Private/ConvertTo-RegistrySettingsCollection.ps1 deleted file mode 100644 index 665fa58..0000000 --- a/Private/ConvertTo-RegistrySettingsCollection.ps1 +++ /dev/null @@ -1,43 +0,0 @@ -function ConvertTo-RegistrySettingsCollection { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - foreach ($Collection in $GPOEntry.Collection) { - $OutputDictionaries = foreach ($Registry in $Collection.Registry) { - [ordered] @{ - #"$($Registry.Name)FieldName" = $Registry.Name - #"$($Registry.Name)FieldStatus" = $Registry.Status - "$($Registry.Name)BypassErrors" = try { [bool]::Parse($Registry.BypassErrors) } catch { $null }; - "$($Registry.Name)Changed" = [DateTime] $Registry.Changed - "$($Registry.Name)UID" = $Registry.UID - "$($Registry.Name)GPOSettingOrder" = $Registry.GPOSettingOrder - "$($Registry.Name)Action" = $Registry.Properties.action - "$($Registry.Name)DisplayDecimal" = $Registry.Properties.displayDecimal - "$($Registry.Name)Default" = $Registry.Properties.default - "$($Registry.Name)Hive" = $Registry.Properties.hive - "$($Registry.Name)Name" = $Registry.Properties.name - "$($Registry.Name)Type" = $Registry.Properties.type - "$($Registry.Name)Value" = $Registry.Properties.value - "$($Registry.Name)Values" = $Registry.Properties.Values - } - } - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - } - foreach ($Dictionary in $OutputDictionaries) { - $CreateGPO = $CreateGPO + $Dictionary - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } - } -} \ No newline at end of file diff --git a/Private/ConvertTo-AccountPolicies.ps1 b/Private/ConvertTo-XMLAccountPolicy.ps1 similarity index 50% rename from Private/ConvertTo-AccountPolicies.ps1 rename to Private/ConvertTo-XMLAccountPolicy.ps1 index 651ab5e..4d788fe 100644 --- a/Private/ConvertTo-AccountPolicies.ps1 +++ b/Private/ConvertTo-XMLAccountPolicy.ps1 @@ -1,36 +1,4 @@ -# TODO: #2 Identical to ConvertTo-EventLog - decide what to do later on - -function ConvertTo-AccountPolicies { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Type = $GPOEntry.Type - Policy = $GPOEntry.Name - - } - if ($GPOEntry.SettingBoolean) { - $CreateGPO['Setting'] = if ($GPOEntry.SettingBoolean -eq 'true') { 'Enabled' } elseif ($GPOEntry.SettingBoolean -eq 'false') { 'Disabled' } else { $null }; - #try { [bool]::Parse($GPOEntry.SettingBoolean) } catch { $null }; - } elseif ($GPOEntry.SettingNumber) { - $CreateGPO['Setting'] = $GPOEntry.SettingNumber - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } -} - -function ConvertTo-XMLAccountPolicies { +function ConvertTo-XMLAccountPolicy { [cmdletBinding()] param( [PSCustomObject] $GPO diff --git a/Private/ConvertTo-XMLAudit.ps1 b/Private/ConvertTo-XMLAudit.ps1 new file mode 100644 index 0000000..6aa5734 --- /dev/null +++ b/Private/ConvertTo-XMLAudit.ps1 @@ -0,0 +1,42 @@ +function ConvertTo-XMLAudit { + [cmdletBinding()] + param( + [PSCustomObject] $GPO, + [switch] $FullObject + ) + $CreateGPO = [ordered]@{ + DisplayName = $GPO.DisplayName + DomainName = $GPO.DomainName + GUID = $GPO.GUID + GpoType = $GPO.GpoType + #GpoCategory = $GPOEntry.GpoCategory + #GpoSettings = $GPOEntry.GpoSettings + AuditAccountLogon = 'No auditing' + AuditAccountManage = 'No auditing' + AuditDSAccess = 'No auditing' + AuditLogonEvents = 'No auditing' + AuditObjectAccess = 'No auditing' + AuditPolicyChange = 'No auditing' + AuditPrivilegeUse = 'No auditing' + AuditProcessTracking = 'No auditing' + AuditSystemEvents = 'No auditing' + } + foreach ($GPOEntry in $GPO.DataSet) { + $SuccessAttempts = try { [bool]::Parse($GPOEntry.SuccessAttempts) } catch { $null }; + $FailureAttempts = try { [bool]::Parse($GPOEntry.FailureAttempts) } catch { $null }; + if ($SuccessAttempts -and $FailureAttempts) { + $Setting = 'Success, Failure' + } elseif ($SuccessAttempts) { + $Setting = 'Success' + } elseif ($FailureAttempts) { + $Setting = 'Failure' + } else { + $Setting = 'No auditing' + } + $CreateGPO["$($GPOEntry.Name)"] = $Setting + } + $CreateGPO['Linked'] = $GPO.Linked + $CreateGPO['LinksCount'] = $GPO.LinksCount + $CreateGPO['Links'] = $GPO.Links + [PSCustomObject] $CreateGPO +} \ No newline at end of file diff --git a/Private/ConvertTo-EventLog.ps1 b/Private/ConvertTo-XMLEventLog.ps1 similarity index 62% rename from Private/ConvertTo-EventLog.ps1 rename to Private/ConvertTo-XMLEventLog.ps1 index b03f96b..a6d5b54 100644 --- a/Private/ConvertTo-EventLog.ps1 +++ b/Private/ConvertTo-XMLEventLog.ps1 @@ -1,34 +1,4 @@ -function ConvertTo-EventLog { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Type = $GPOEntry.Type - Policy = $GPOEntry.Name - - } - if ($GPOEntry.SettingBoolean) { - $CreateGPO['Setting'] = if ($GPOEntry.SettingBoolean -eq 'true') { 'Enabled' } elseif ($GPOEntry.SettingBoolean -eq 'false') { 'Disabled' } else { $null }; - #try { [bool]::Parse($GPOEntry.SettingBoolean) } catch { $null }; - } elseif ($GPOEntry.SettingNumber) { - $CreateGPO['Setting'] = $GPOEntry.SettingNumber - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } -} - -function ConvertTo-XMLEventLog { +function ConvertTo-XMLEventLog { [cmdletBinding()] param( [PSCustomObject] $GPO diff --git a/Private/ConvertTo-LocalGroups.ps1 b/Private/ConvertTo-XMLLocalGroups.ps1 similarity index 100% rename from Private/ConvertTo-LocalGroups.ps1 rename to Private/ConvertTo-XMLLocalGroups.ps1 diff --git a/Private/ConvertTo-XMLLocalUser.ps1 b/Private/ConvertTo-XMLLocalUser.ps1 new file mode 100644 index 0000000..74beecb --- /dev/null +++ b/Private/ConvertTo-XMLLocalUser.ps1 @@ -0,0 +1,74 @@ +function ConvertTo-XMLLocalUser { + [cmdletBinding()] + param( + [PSCustomObject] $GPO, + [switch] $SingleObject + ) + 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 + } + if (-not $GPO.DataSet.User) { + continue + } + [Array] $CreateGPO['Settings'] = foreach ($User in $GPO.DataSet.User) { + [PSCustomObject] @{ + Changed = [DateTime] $User.Changed + GPOSettingOrder = $User.GPOSettingOrder + Action = $Script:Actions["$($User.Properties.action)"] + UserName = $User.Properties.userName + NewName = $User.Properties.newName + FullName = $User.Properties.fullName + Description = $User.Properties.description + Password = $User.Properties.cpassword + MustChangePasswordAtNextLogon = if ($User.Properties.changeLogon -eq '1') { $true } elseif ($User.Properties.changeLogon -eq '0') { $false } else { $User.Properties.changeLogon }; + CannotChangePassword = if ($User.Properties.noChange -eq '1') { $true } elseif ($User.Properties.noChange -eq '0') { $false } else { $User.Properties.noChange }; + PasswordNeverExpires = if ($User.Properties.neverExpires -eq '1') { $true } elseif ($User.Properties.neverExpires -eq '0') { $false } else { $User.Properties.neverExpires }; + AccountIsDisabled = if ($User.Properties.acctDisabled -eq '1') { $true } elseif ($User.Properties.acctDisabled -eq '0') { $false } else { $User.Properties.acctDisabled }; + AccountExpires = try { [DateTime] $User.Properties.expires } catch { $User.Properties.expires }; + SubAuthority = $User.Properties.subAuthority + } + } + $CreateGPO['Count'] = $CreateGPO['Settings'].Count + $CreateGPO['Linked'] = $GPO.Linked + $CreateGPO['LinksCount'] = $GPO.LinksCount + $CreateGPO['Links'] = $GPO.Links + [PSCustomObject] $CreateGPO + } else { + foreach ($User in $GPO.DataSet.User) { + $CreateGPO = [ordered]@{ + DisplayName = $GPO.DisplayName + DomainName = $GPO.DomainName + GUID = $GPO.GUID + GpoType = $GPO.GpoType + #GpoCategory = $GPO.GpoCategory #: SecuritySettings + #GpoSettings = $GPO.GpoSettings #: SecurityOptions + Changed = [DateTime] $User.Changed + GPOSettingOrder = $User.GPOSettingOrder + Action = $Script:Actions["$($User.Properties.action)"] + UserName = $User.Properties.userName + NewName = $User.Properties.newName + FullName = $User.Properties.fullName + Description = $User.Properties.description + Password = $User.Properties.cpassword + MustChangePasswordAtNextLogon = if ($User.Properties.changeLogon -eq '1') { $true } elseif ($User.Properties.changeLogon -eq '0') { $false } else { $User.Properties.changeLogon }; + CannotChangePassword = if ($User.Properties.noChange -eq '1') { $true } elseif ($User.Properties.noChange -eq '0') { $false } else { $User.Properties.noChange }; + PasswordNeverExpires = if ($User.Properties.neverExpires -eq '1') { $true } elseif ($User.Properties.neverExpires -eq '0') { $false } else { $User.Properties.neverExpires }; + AccountIsDisabled = if ($User.Properties.acctDisabled -eq '1') { $true } elseif ($User.Properties.acctDisabled -eq '0') { $false } else { $User.Properties.acctDisabled }; + AccountExpires = try { [DateTime] $User.Properties.expires } catch { $User.Properties.expires }; + SubAuthority = $User.Properties.subAuthority + } + $CreateGPO['Linked'] = $GPO.Linked + $CreateGPO['LinksCount'] = $GPO.LinksCount + $CreateGPO['Links'] = $GPO.Links + [PSCustomObject] $CreateGPO + } + } +} \ No newline at end of file diff --git a/Private/ConvertTo-Policies.ps1 b/Private/ConvertTo-XMLPolicies.ps1 similarity index 63% rename from Private/ConvertTo-Policies.ps1 rename to Private/ConvertTo-XMLPolicies.ps1 index dbdfcf1..102fc17 100644 --- a/Private/ConvertTo-Policies.ps1 +++ b/Private/ConvertTo-XMLPolicies.ps1 @@ -1,35 +1,4 @@ -function ConvertTo-Policies { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - PolicyName = $GPOEntry.Name - PolicyState = $GPOEntry.State - PolicyCategory = $GPOEntry.Category - PolicySupported = $GPOEntry.Supported - PolicyExplain = $GPOEntry.Explain - PolicyText = $GPOEntry.Text - PolicyCheckBox = $GPOEntry.CheckBox - PolicyDropDownList = $GPOEntry.DropDownList - PolicyEditText = $GPOEntry.EditText - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - - } -} - -function ConvertTo-XMLPolicies { +function ConvertTo-XMLPolicies { [cmdletBinding()] param( [PSCustomObject] $GPO, diff --git a/Private/ConvertTo-XMLPrinter.ps1 b/Private/ConvertTo-XMLPrinter.ps1 new file mode 100644 index 0000000..7cdeb84 --- /dev/null +++ b/Private/ConvertTo-XMLPrinter.ps1 @@ -0,0 +1,51 @@ +function ConvertTo-XMLPrinter { + [cmdletBinding()] + param( + [PSCustomObject] $GPO, + [switch] $SingleObject + ) + 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 ($Type in @('SharedPrinter', 'PortPrinter', 'LocalPrinter')) { + foreach ($Entry in $GPO.DataSet.$Type) { + if ($Entry) { + ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type $Type -Limited + } + } + } + if ($GPO.GpoCategory -eq 'PrinterConnectionSettings') { + foreach ($Entry in $GPO.DataSet) { + ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type 'PrinterConnections' -Limited + } + } + ) + $CreateGPO['Count'] = $CreateGPO['Settings'].Count + $CreateGPO['Linked'] = $GPO.Linked + $CreateGPO['LinksCount'] = $GPO.LinksCount + $CreateGPO['Links'] = $GPO.Links + [PSCustomObject] $CreateGPO + } else { + foreach ($Type in @('SharedPrinter', 'PortPrinter', 'LocalPrinter')) { + foreach ($Entry in $GPO.DataSet.$Type) { + if ($Entry) { + ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type $Type + } + } + } + if ($GPO.GpoCategory -eq 'PrinterConnectionSettings') { + foreach ($Entry in $GPO.DataSet) { + ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type 'PrinterConnections' + } + } + } +} \ No newline at end of file diff --git a/Private/ConvertTo-XMLPrinters.ps1 b/Private/ConvertTo-XMLPrinterInternal.ps1 similarity index 78% rename from Private/ConvertTo-XMLPrinters.ps1 rename to Private/ConvertTo-XMLPrinterInternal.ps1 index 4ef51ed..b57a121 100644 --- a/Private/ConvertTo-XMLPrinters.ps1 +++ b/Private/ConvertTo-XMLPrinterInternal.ps1 @@ -1,55 +1,3 @@ -function ConvertTo-XMLPrinters { - [cmdletBinding()] - param( - [PSCustomObject] $GPO, - [switch] $SingleObject - ) - 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 ($Type in @('SharedPrinter', 'PortPrinter', 'LocalPrinter')) { - foreach ($Entry in $GPO.DataSet.$Type) { - if ($Entry) { - ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type $Type -Limited - } - } - } - if ($GPO.GpoCategory -eq 'PrinterConnectionSettings') { - foreach ($Entry in $GPO.DataSet) { - ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type 'PrinterConnections' -Limited - } - } - ) - $CreateGPO['Count'] = $CreateGPO['Settings'].Count - $CreateGPO['Linked'] = $GPO.Linked - $CreateGPO['LinksCount'] = $GPO.LinksCount - $CreateGPO['Links'] = $GPO.Links - [PSCustomObject] $CreateGPO - } else { - foreach ($Type in @('SharedPrinter', 'PortPrinter', 'LocalPrinter')) { - foreach ($Entry in $GPO.DataSet.$Type) { - if ($Entry) { - ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type $Type - } - } - } - if ($GPO.GpoCategory -eq 'PrinterConnectionSettings') { - foreach ($Entry in $GPO.DataSet) { - ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type 'PrinterConnections' - } - } - } -} - function ConvertTo-XMLPrinterInternal { [cmdletBinding()] param( diff --git a/Private/ConvertTo-XMLRegistryAutologon.ps1 b/Private/ConvertTo-XMLRegistryAutologon.ps1 new file mode 100644 index 0000000..d38be70 --- /dev/null +++ b/Private/ConvertTo-XMLRegistryAutologon.ps1 @@ -0,0 +1,49 @@ +function ConvertTo-XMLRegistryAutologon { + [cmdletBinding()] + param( + [PSCustomObject] $GPO + ) + $CreateGPO = [ordered]@{ + DisplayName = $GPO.DisplayName + DomainName = $GPO.DomainName + GUID = $GPO.GUID + GpoType = $GPO.GpoType + #GpoCategory = $GPOEntry.GpoCategory + #GpoSettings = $GPOEntry.GpoSettings + AutoAdminLogon = $null + DefaultDomainName = $null + DefaultUserName = $null + DefaultPassword = $null + DateChangedAutoAdminLogon = $null + DateChangedDefaultDomainName = $null + DateChangedDefaultUserName = $null + DateChangedDefaultPassword = $null + } + foreach ($Registry in $GPO.DataSet.Registry) { + if ($Registry.Properties.Key -eq 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon') { + if ($Registry.Properties.Name -eq 'AutoAdminLogon') { + $CreateGPO['AutoAdminLogon'] = [bool] $Registry.Properties.value + $CreateGPO['DateChangedAutoAdminLogon'] = [DateTime] $Registry.changed + } elseif ($Registry.Properties.Name -eq 'DefaultDomainName') { + $CreateGPO['DefaultDomainName'] = $Registry.Properties.value + $CreateGPO['DateChangedDefaultDomainName'] = [DateTime] $Registry.changed + } elseif ($Registry.Properties.Name -eq 'DefaultUserName') { + $CreateGPO['DefaultUserName'] = $Registry.Properties.value + $CreateGPO['DateChangedDefaultUserName'] = [DateTime] $Registry.changed + } elseif ($Registry.Properties.Name -eq 'DefaultPassword') { + $CreateGPO['DefaultPassword'] = $Registry.Properties.value + $CreateGPO['DateChangedDefaultPassword'] = [DateTime] $Registry.changed + } + } + } + if ($null -ne $CreateGPO['AutoAdminLogon'] -or + $null -ne $CreateGPO['DefaultDomainName'] -or + $null -ne $CreateGPO['DefaultUserName'] -or + $null -ne $CreateGPO['DefaultPassword'] + ) { + $CreateGPO['Linked'] = $GPOEntry.Linked #: True + $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 + $CreateGPO['Links'] = $GPOEntry.Links #: area1.local + [PSCustomObject] $CreateGPO + } +} \ No newline at end of file diff --git a/Private/ConvertTo-XMLRegistrySettings.ps1 b/Private/ConvertTo-XMLRegistrySettings.ps1 new file mode 100644 index 0000000..d3d987e --- /dev/null +++ b/Private/ConvertTo-XMLRegistrySettings.ps1 @@ -0,0 +1,75 @@ +function ConvertTo-XMLRegistrySettings { + [cmdletBinding()] + param( + [PSCustomObject] $GPO, + [switch] $SingleObject + ) + 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'] = Get-XMLNestedRegistry -GPO $GPO -DataSet $GPO.DataSet + <# + [Array] $CreateGPO['Settings'] = foreach ($Registry in $GPO.DataSet.Registry) { + [PSCustomObject] @{ + Changed = [DateTime] $Registry.changed + GPOSettingOrder = $Registry.GPOSettingOrder + Hive = $Registry.Properties.hive #: HKEY_LOCAL_MACHINE + Key = $Registry.Properties.key #: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon + Name = $Registry.Properties.name #: AutoAdminLogon + Type = $Registry.Properties.type #: REG_SZ + Value = $Registry.Properties.value # + Filters = $Registry.Filters + } + } + #> + $CreateGPO['Count'] = $CreateGPO['Settings'].Count + $CreateGPO['Linked'] = $GPO.Linked + $CreateGPO['LinksCount'] = $GPO.LinksCount + $CreateGPO['Links'] = $GPO.Links + [PSCustomObject] $CreateGPO + } else { + <# + if ($GPO.DataSet.Registry) { + Get-XMLNestedRegistry -GPO $GPO -RegistryCollection $GPO.DataSet.Registry + } + if ($GPO.DataSet.Collection) { + Get-XMLNestedRegistry -GPO $GPO -RegistryCollection $GPO.DataSet.Collection + } + #> + Get-XMLNestedRegistry -GPO $GPO -DataSet $GPO.DataSet + + <# + foreach ($Registry in $GPO.DataSet.Registry) { + $CreateGPO = [ordered]@{ + DisplayName = $GPO.DisplayName + DomainName = $GPO.DomainName + GUID = $GPO.GUID + GpoType = $GPO.GpoType + #GpoCategory = $GPOEntry.GpoCategory + #GpoSettings = $GPOEntry.GpoSettings + Changed = [DateTime] $Registry.changed + GPOSettingOrder = $Registry.GPOSettingOrder + Hive = $Registry.Properties.hive #: HKEY_LOCAL_MACHINE + Key = $Registry.Properties.key #: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon + Name = $Registry.Properties.name #: AutoAdminLogon + Type = $Registry.Properties.type #: REG_SZ + Value = $Registry.Properties.value # + Filters = $Registry.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/ConvertTo-Scripts.ps1 b/Private/ConvertTo-XMLScripts.ps1 similarity index 63% rename from Private/ConvertTo-Scripts.ps1 rename to Private/ConvertTo-XMLScripts.ps1 index 37ec690..121c7be 100644 --- a/Private/ConvertTo-Scripts.ps1 +++ b/Private/ConvertTo-XMLScripts.ps1 @@ -1,31 +1,4 @@ -function ConvertTo-Scripts { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Command = $GPOEntry.Command - Parameters = $GPOEntry.Parameters - Type = $GPOEntry.Type - Order = $GPOEntry.Order - RunOrder = $GPOEntry.RunOrder - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - - } -} - -function ConvertTo-XMLScripts { +function ConvertTo-XMLScripts { [cmdletBinding()] param( [PSCustomObject] $GPO, diff --git a/Private/ConvertTo-SecurityOptions.ps1 b/Private/ConvertTo-XMLSecurityOptions.ps1 similarity index 64% rename from Private/ConvertTo-SecurityOptions.ps1 rename to Private/ConvertTo-XMLSecurityOptions.ps1 index b7047f7..8c5872c 100644 --- a/Private/ConvertTo-SecurityOptions.ps1 +++ b/Private/ConvertTo-XMLSecurityOptions.ps1 @@ -1,33 +1,4 @@ -function ConvertTo-SecurityOptions { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - KeyName = $GPOEntry.KeyName - KeyDisplayName = $GPOEntry.Display.Name - KeyDisplayUnits = $GPOEntry.Display.Units - KeyDisplayBoolean = try { [bool]::Parse($GPOEntry.Display.DisplayBoolean) } catch { $null }; - KeyDisplayString = $GPOEntry.Display.DisplayString - SystemAccessPolicyName = $GPOEntry.SystemAccessPolicyName - SettingString = $GPOEntry.SettingString - SettingNumber = $GPOEntry.SettingNumber - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } -} - -function ConvertTo-XMLSecurityOptions { +function ConvertTo-XMLSecurityOptions { [cmdletBinding()] param( [PSCustomObject] $GPO, diff --git a/Private/ConvertTo-SoftwareInstallation.ps1 b/Private/ConvertTo-XMLSoftwareInstallation.ps1 similarity index 66% rename from Private/ConvertTo-SoftwareInstallation.ps1 rename to Private/ConvertTo-XMLSoftwareInstallation.ps1 index 6d1f8da..c3acc70 100644 --- a/Private/ConvertTo-SoftwareInstallation.ps1 +++ b/Private/ConvertTo-XMLSoftwareInstallation.ps1 @@ -1,47 +1,4 @@ -function ConvertTo-SoftwareInstallation { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Identifier = $GPOEntry.Identifier #: { 10495e9e-79c1-4a32-b278-a24cd495437f } - Name = $GPOEntry.Name #: Local Administrator Password Solution (2) - Path = $GPOEntry.Path #: \\area1.local\SYSVOL\area1.local\Policies\ { 5F5042A0-008F-45E3-8657-79C87BD002E3 }\LAPS.x64.msi - MajorVersion = $GPOEntry.MajorVersion #: 6 - MinorVersion = $GPOEntry.MinorVersion #: 2 - LanguageId = $GPOEntry.LanguageId #: 1033 - Architecture = $GPOEntry.Architecture #: 9 - IgnoreLanguage = if ($GPOEntry.IgnoreLanguage -eq 'true') { $true } else { $false } #: false - Allowx86Onia64 = if ($GPOEntry.Allowx86Onia64 -eq 'true') { $true } else { $false } #: true - SupportURL = $GPOEntry.SupportURL #: - AutoInstall = if ($GPOEntry.AutoInstall -eq 'true') { $true } else { $false } #: true - DisplayInARP = if ($GPOEntry.DisplayInARP -eq 'true') { $true } else { $false } #: true - IncludeCOM = if ($GPOEntry.IncludeCOM -eq 'true') { $true } else { $false } #: true - SecurityDescriptor = $GPOEntry.SecurityDescriptor #: SecurityDescriptor - DeploymentType = $GPOEntry.DeploymentType #: Assign - ProductId = $GPOEntry.ProductId #: { ea8cb806-c109 - 4700 - 96b4-f1f268e5036c } - ScriptPath = $GPOEntry.ScriptPath #: \\area1.local\SysVol\area1.local\Policies\ { 5F5042A0-008F-45E3-8657-79C87BD002E3 }\Machine\Applications\ { EAC9B821-FB4D - 457A-806F-E5B528D1E41A }.aas - DeploymentCount = $GPOEntry.DeploymentCount #: 0 - InstallationUILevel = $GPOEntry.InstallationUILevel #: Maximum - Upgrades = if ($GPOEntry.Upgrades.Mandatory -eq 'true') { $true } else { $false } #: Upgrades - UninstallUnmanaged = if ($GPOEntry.UninstallUnmanaged -eq 'true') { $true } else { $false } #: false - LossOfScopeAction = $GPOEntry.LossOfScopeAction #: Unmanage - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } -} - -function ConvertTo-XMLSoftwareInstallation { +function ConvertTo-XMLSoftwareInstallation { [cmdletBinding()] param( [PSCustomObject] $GPO, diff --git a/Private/ConvertTo-SystemServices.ps1 b/Private/ConvertTo-XMLSystemServices.ps1 similarity index 63% rename from Private/ConvertTo-SystemServices.ps1 rename to Private/ConvertTo-XMLSystemServices.ps1 index 23720fe..d1ab23a 100644 --- a/Private/ConvertTo-SystemServices.ps1 +++ b/Private/ConvertTo-XMLSystemServices.ps1 @@ -1,30 +1,4 @@ -function ConvertTo-SystemServices { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - ServiceName = $GPOEntry.Name - ServiceStartUpMode = $GPOEntry.StartUpMode - SecurityAuditingPresent = try { [bool]::Parse($GPOEntry.SecurityDescriptor.AuditingPresent.'#text') } catch { $null }; - SecurityPermissionsPresent = try { [bool]::Parse($GPOEntry.SecurityDescriptor.PermissionsPresent.'#text') } catch { $null }; - SecurityDescriptor = $GPOEntry.SecurityDescriptor - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } -} - -function ConvertTo-XMLSystemServices { +function ConvertTo-XMLSystemServices { [cmdletBinding()] param( [PSCustomObject] $GPO, diff --git a/Private/ConvertTo-SystemServicesNT.ps1 b/Private/ConvertTo-XMLSystemServicesNT.ps1 similarity index 74% rename from Private/ConvertTo-SystemServicesNT.ps1 rename to Private/ConvertTo-XMLSystemServicesNT.ps1 index fce1cd4..e963c4c 100644 --- a/Private/ConvertTo-SystemServicesNT.ps1 +++ b/Private/ConvertTo-XMLSystemServicesNT.ps1 @@ -1,41 +1,4 @@ -function ConvertTo-SystemServicesNT { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - foreach ($Service in $GPOEntry.NTService) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Changed = [DateTime] $Service.Changed - GPOSettingOrder = $Service.GPOSettingOrder - #ServiceName = $Service.Name - ServiceName = $Service.Properties.serviceName #: AppIDSvc: AppIDSvc - ServiceStartupType = $Service.Properties.startupType #: NOCHANGE: NOCHANGE - ServiceAction = $Service.Properties.serviceAction #: START: START - Timeout = $Service.Properties.timeout #: 50: 50 - FirstFailure = $Service.Properties.firstFailure #: REBOOT: REBOOT - SecondFailure = $Service.Properties.secondFailure #: REBOOT: REBOOT - ThirdFailure = $Service.Properties.thirdFailure #: REBOOT: REBOOT - ResetFailCountDelay = $Service.Properties.resetFailCountDelay #: 0: 0 - RestartComputerDelay = $Service.Properties.restartComputerDelay #: 60000: 60000 - Filter = $Service.Filter - - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } - } -} - -function ConvertTo-XMLSystemServicesNT { +function ConvertTo-XMLSystemServicesNT { [cmdletBinding()] param( [PSCustomObject] $GPO, diff --git a/Private/ConvertTo-RegistrySettings.ps1 b/Private/Get-XMLNestedRegistry.ps1 similarity index 54% rename from Private/ConvertTo-RegistrySettings.ps1 rename to Private/Get-XMLNestedRegistry.ps1 index 8a50a83..1f0e87d 100644 --- a/Private/ConvertTo-RegistrySettings.ps1 +++ b/Private/Get-XMLNestedRegistry.ps1 @@ -1,111 +1,3 @@ -function ConvertTo-RegistrySettings { - [cmdletBinding()] - param( - [Array] $GPOList - ) - foreach ($GPOEntry in $GPOList) { - foreach ($Registry in $GPOEntry.Registry) { - $CreateGPO = [ordered]@{ - DisplayName = $GPOEntry.DisplayName #: WO_SEC_NTLM_Auth_Level - DomainName = $GPOEntry.DomainName #: area1.local - GUID = $GPOEntry.GUID #: 364B095E-C7BF-4CC1-9BFA-393BD38975E5 - GpoType = $GPOEntry.GpoType #: Computer - GpoCategory = $GPOEntry.GpoCategory #: SecuritySettings - GpoSettings = $GPOEntry.GpoSettings #: SecurityOptions - Changed = [DateTime] $Registry.changed - GPOSettingOrder = $Registry.GPOSettingOrder - Hive = $Registry.Properties.hive #: HKEY_LOCAL_MACHINE - Key = $Registry.Properties.key #: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon - Name = $Registry.Properties.name #: AutoAdminLogon - Type = $Registry.Properties.type #: REG_SZ - Value = $Registry.Properties.value # - Filters = $Registry.Filters - } - $CreateGPO['Linked'] = $GPOEntry.Linked #: True - $CreateGPO['LinksCount'] = $GPOEntry.LinksCount #: 1 - $CreateGPO['Links'] = $GPOEntry.Links #: area1.local - [PSCustomObject] $CreateGPO - } - } -} - - -function ConvertTo-XMLRegistrySettings { - [cmdletBinding()] - param( - [PSCustomObject] $GPO, - [switch] $SingleObject - ) - 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'] = Get-XMLNestedRegistry -GPO $GPO -DataSet $GPO.DataSet - <# - [Array] $CreateGPO['Settings'] = foreach ($Registry in $GPO.DataSet.Registry) { - [PSCustomObject] @{ - Changed = [DateTime] $Registry.changed - GPOSettingOrder = $Registry.GPOSettingOrder - Hive = $Registry.Properties.hive #: HKEY_LOCAL_MACHINE - Key = $Registry.Properties.key #: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon - Name = $Registry.Properties.name #: AutoAdminLogon - Type = $Registry.Properties.type #: REG_SZ - Value = $Registry.Properties.value # - Filters = $Registry.Filters - } - } - #> - $CreateGPO['Count'] = $CreateGPO['Settings'].Count - $CreateGPO['Linked'] = $GPO.Linked - $CreateGPO['LinksCount'] = $GPO.LinksCount - $CreateGPO['Links'] = $GPO.Links - [PSCustomObject] $CreateGPO - } else { - <# - if ($GPO.DataSet.Registry) { - Get-XMLNestedRegistry -GPO $GPO -RegistryCollection $GPO.DataSet.Registry - } - if ($GPO.DataSet.Collection) { - Get-XMLNestedRegistry -GPO $GPO -RegistryCollection $GPO.DataSet.Collection - } - #> - Get-XMLNestedRegistry -GPO $GPO -DataSet $GPO.DataSet - - <# - foreach ($Registry in $GPO.DataSet.Registry) { - $CreateGPO = [ordered]@{ - DisplayName = $GPO.DisplayName - DomainName = $GPO.DomainName - GUID = $GPO.GUID - GpoType = $GPO.GpoType - #GpoCategory = $GPOEntry.GpoCategory - #GpoSettings = $GPOEntry.GpoSettings - Changed = [DateTime] $Registry.changed - GPOSettingOrder = $Registry.GPOSettingOrder - Hive = $Registry.Properties.hive #: HKEY_LOCAL_MACHINE - Key = $Registry.Properties.key #: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon - Name = $Registry.Properties.name #: AutoAdminLogon - Type = $Registry.Properties.type #: REG_SZ - Value = $Registry.Properties.value # - Filters = $Registry.Filters - } - $CreateGPO['Linked'] = $GPO.Linked - $CreateGPO['LinksCount'] = $GPO.LinksCount - $CreateGPO['Links'] = $GPO.Links - [PSCustomObject] $CreateGPO - } - #> - } -} - function Get-XMLNestedRegistry { [cmdletBinding()] param( diff --git a/Private/Script.GPODictionary.ps1 b/Private/Script.GPODictionary.ps1 index a4b0882..f9d2698 100644 --- a/Private/Script.GPODictionary.ps1 +++ b/Private/Script.GPODictionary.ps1 @@ -8,10 +8,10 @@ ) GPOPath = 'Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Account Policies' Code = { - ConvertTo-XMLAccountPolicies -GPO $GPO + ConvertTo-XMLAccountPolicy -GPO $GPO } CodeSingle = { - ConvertTo-XMLAccountPolicies -GPO $GPO + ConvertTo-XMLAccountPolicy -GPO $GPO } } Audit = [ordered] @{ @@ -127,10 +127,10 @@ } ) Code = { - ConvertTo-XMLPrinters -GPO $GPO + ConvertTo-XMLPrinter -GPO $GPO } CodeSingle = { - ConvertTo-XMLPrinters -GPO $GPO -SingleObject + ConvertTo-XMLPrinter -GPO $GPO -SingleObject } } RegistrySettings = [ordered] @{