Compare commits

...

368 Commits

Author SHA1 Message Date
Przemyslaw Klys 503b82ca02 Update gpo example 2024-10-17 22:30:54 +02:00
Przemyslaw Klys 790b3b97e0 update example 2024-10-17 22:30:41 +02:00
Przemyslaw Klys 07a8c77763 Update changelog 2024-10-17 19:48:27 +02:00
Przemyslaw Klys 9dfc4d01c3 Bump 2024-10-17 19:45:36 +02:00
Przemyslaw Klys a59a418e98 Update changelog 2024-10-17 19:42:28 +02:00
Przemyslaw Klys 5a1f7da921 Merge branch 'master' of https://github.com/EvotecIT/GPOZaurr 2024-10-17 19:36:27 +02:00
Przemyslaw Klys 8bdb157330 Update text 2024-10-17 19:36:20 +02:00
Przemyslaw Klys 096c6354d7 Add evotec 2024-10-17 19:36:04 +02:00
Przemyslaw Klys a3427496e9 Add scrollx 2024-10-17 19:35:53 +02:00
Przemyslaw Klys 9fb76d701f Add size 2024-10-17 19:34:54 +02:00
Przemyslaw Klys 7b4d31781c Add size 2024-10-17 19:34:45 +02:00
Przemyslaw Klys 21bcf2c3a6 Improve conditions 2024-10-17 19:34:16 +02:00
Przemyslaw Klys 46947e0ee9 Improve output to html 2024-10-17 19:34:06 +02:00
Przemyslaw Klys 12d4dfc634 Optimize output 2024-10-17 19:33:48 +02:00
Przemyslaw Klys 44be1f8d97 Add more conditions 2024-10-17 19:33:41 +02:00
Przemyslaw Klys 864d2cd516 Added scrollx 2024-10-17 19:33:00 +02:00
Przemyslaw Klys 0db67a6d70 Add file size 2024-10-17 19:30:15 +02:00
Przemysław Kłys 189401d62b Merge pull request #64 from SamErde/master 2024-09-30 22:04:19 +02:00
Sam Erde 212f59dd38 Merge branch 'EvotecIT:master' into master 2024-09-30 14:24:24 -04:00
Sam Erde 7b80dc2d8e Update Invoke.GPOZaurrMissingFiles.ps1
Fix typo. Small grammatical improvements in punctuation and readability.
2024-09-30 14:23:48 -04:00
Przemysław Kłys 5afa032042 Merge pull request #63 from SamErde/grammar-patch-1
Update Invoke.GPOZaurrDuplicate.ps1
2024-09-30 19:59:16 +02:00
Sam Erde 00b8586edc Update Invoke.GPOZaurrDuplicate.ps1
Minor grammatical fixes to summary text.
2024-09-30 13:56:36 -04:00
Przemyslaw Klys 08b07de729 Merge branch 'master' of https://github.com/EvotecIT/GPOZaurr 2024-08-24 11:01:10 +02:00
Przemyslaw Klys 3b04efcbc8 Commit examples 2024-08-24 11:01:02 +02:00
Przemysław Kłys 051544f353 Merge pull request #60 from davidmwilliams/patch-1
Minor typo correction "incosistent" -> "inconsistent"
2024-08-21 07:56:49 +02:00
Przemysław Kłys 307dec14df Merge pull request #61 from davidmwilliams/patch-2
Fixed typo "Unfortunetly" -> "Unfortunately"
2024-08-21 07:56:35 +02:00
David M Williams 9ec8f5128b Fixed typo "Unfortunetly" -> "Unfortunately" 2024-08-21 12:32:12 +10:00
David M Williams 7b68b12b02 Minor typo correction "incosistent" -> "inconsistent" 2024-08-21 12:21:46 +10:00
Przemyslaw Klys 029225a65c Update changelog 2024-07-06 09:08:34 +02:00
Przemyslaw Klys ae2a0bd84c Bump versions 2024-07-06 09:06:37 +02:00
Przemyslaw Klys cb473ae5fa Update docs 2024-07-06 08:47:15 +02:00
Przemyslaw Klys e156ef9a24 Small improvements to docs 2024-07-06 08:40:11 +02:00
Przemysław Kłys 40cd4dc8ad Merge pull request #56 from neztach/master
Added or improved help on all functions.
2024-07-06 08:07:05 +02:00
neztach 92f3fcb692 Added or improved help on all functions. 2024-07-05 13:00:03 -05:00
Przemyslaw Klys bd103a513b Bump version 2024-06-11 17:22:51 +02:00
Przemyslaw Klys 8268002ac0 Update changelog 2024-06-11 17:22:26 +02:00
Przemyslaw Klys 038e4036b9 Add null 2024-06-11 17:22:02 +02:00
Przemyslaw Klys 632f2b0c26 Fix for excluded domains #55 2024-06-11 17:21:34 +02:00
Przemyslaw Klys 84805cf134 Should fix partially #55 2024-06-11 14:49:49 +02:00
Przemyslaw Klys d7ebc89d54 Update changelog 2024-04-16 18:36:40 +02:00
Przemyslaw Klys 4288829415 Bump version #53 2024-04-16 18:35:53 +02:00
Przemyslaw Klys f3d426ba93 Fixes typos in report #53 2024-04-16 18:35:24 +02:00
Przemyslaw Klys fef37130bb Update version build 2024-04-16 18:28:01 +02:00
Przemyslaw Klys d62b8e47f7 Update changelog 2024-04-16 18:27:43 +02:00
Przemyslaw Klys 63f1ccd232 Bump versions 2024-04-16 18:26:35 +02:00
Przemyslaw Klys e61ef74920 Fixes forest issue #54 2024-04-16 18:26:28 +02:00
Przemyslaw Klys b63e333fd0 Update changelog 2024-02-07 14:15:43 +01:00
Przemyslaw Klys 9b0ab0c1c2 Bump version 2024-02-07 14:14:33 +01:00
Przemyslaw Klys ee3b25ee88 Force specific DC for search 2024-02-07 14:14:27 +01:00
Przemyslaw Klys 25c13b54aa Fix filters 2024-02-04 13:31:48 +01:00
Przemyslaw Klys 2b9faa4e61 Update changelog 2024-02-04 13:31:38 +01:00
Przemyslaw Klys 42f3053896 Enhance GPO Script to Consider GPF Files
Improved the PowerShell script to account for special '.gpf' files when evaluating whether a Group Policy Object (GPO) is empty. Previously, GPOs containing only these files were incorrectly marked as empty since they weren't visible in the XML output. This update ensures that GPOs with '.gpf' files are recognized as non-empty. Additionally, the script now includes the SYSVOL path and the count of files within each GPO in its summary output, aiding in thorough GPO analysis.

This enhancement resolves issues with incomplete policy reporting and assists administrators in scenarios where Citrix or other applications rely on .gpf files for storing their settings.

Refs: #49
2024-02-04 13:27:51 +01:00
Przemyslaw Klys edcba71e7f examples added 2024-02-04 11:34:29 +01:00
Przemyslaw Klys c8ee2cca56 Update changelog 2024-02-04 11:34:00 +01:00
Przemyslaw Klys 3b4617af83 Small fix typo 2024-02-04 11:33:22 +01:00
Przemyslaw Klys 6830b1e219 Bump dependencies 2024-02-04 11:11:36 +01:00
Przemyslaw Klys 28c55deaa7 Adds new report #42 2024-02-04 11:11:28 +01:00
Przemyslaw Klys c757c8281b Add ability to limit GPO analysis by GPOName/GPOGUID 2024-02-04 09:09:36 +01:00
Przemyslaw Klys e3e5582696 Updatre module builder configuration 2023-09-17 10:10:36 +02:00
Przemyslaw Klys 8e2f4f1552 Bump versions 2023-09-17 10:10:26 +02:00
Przemyslaw Klys 863c9fabc9 Update changelog 2023-09-17 07:32:08 +02:00
Przemyslaw Klys 972b51b472 Update changelog 2023-09-17 07:31:12 +02:00
Przemyslaw Klys 060fb95064 Update example 2023-09-17 07:30:17 +02:00
Przemyslaw Klys fdfc700c6f Update example 2023-09-17 07:30:03 +02:00
Przemyslaw Klys 81eaac3fd1 Small improvements to the report #48 2023-09-16 09:42:09 +02:00
Przemyslaw Klys cf9164766e Add example for new report #48 2023-09-16 09:41:56 +02:00
Przemyslaw Klys 4de2e2a57e Submit gitignore 2023-09-16 09:38:54 +02:00
Przemyslaw Klys 663e6058e6 Rewrite configuration 2023-09-16 09:38:30 +02:00
Przemyslaw Klys f681a5586e Update changelog 2023-09-16 09:38:22 +02:00
Przemyslaw Klys 4c022bfc16 Add redirected report #48 2023-09-16 09:38:15 +02:00
Przemyslaw Klys c03f158b77 Changed pipeline into standard foreach 2023-09-16 09:37:44 +02:00
Przemyslaw Klys 4824633787 Changed pipeline foreach into foreach for better/safer results 2023-09-16 09:34:20 +02:00
Przemyslaw Klys 8dc7e5b26d Bump versions 2023-09-16 09:34:00 +02:00
Przemyslaw Klys 68ed20f3e8 Update changelog 2023-09-16 08:48:32 +02:00
Przemyslaw Klys df2bacdba7 Remove bad char 2023-09-16 08:48:26 +02:00
Przemyslaw Klys f67ade6341 Use hashtable to create PSCustomObject for GPO details
- Simplify code by using a hashtable to create PSCustomObject for GPO details in "Get-GPOZaurrAD.ps1" script.
2023-09-16 08:42:31 +02:00
Przemyslaw Klys 5855ca2a7c Detect paths #48 2023-09-15 12:05:34 +02:00
Przemyslaw Klys b5d69c8a1f Bump versions 2023-05-26 13:25:46 +02:00
Przemyslaw Klys 32dc6ac661 add cert thumbprint 2023-05-26 13:25:39 +02:00
Przemyslaw Klys 300d6f63c5 Update changelog 2023-05-26 13:09:01 +02:00
Przemyslaw Klys 1f43816804 Improve Remove-GPOZaurr LimitProcessing 2023-05-26 13:08:51 +02:00
Przemyslaw Klys 5d50536f5a Update changelog 2023-04-27 22:16:32 +02:00
Przemyslaw Klys 4da232a1be Merge branch 'master' of https://github.com/EvotecIT/GPOZaurr 2023-04-27 21:54:54 +02:00
Przemyslaw Klys fb5fa00dce Fixes space #44 2023-04-27 21:54:33 +02:00
Przemysław Kłys 970080bfad Merge pull request #43 from Absoblogginlutely/patch-1
Typo fixed
2023-04-27 15:13:12 +02:00
Andy Helsby 845c2124bd Typo fixed
Oddly enough this message was displayed on an en-us windows 2022 server so fixed the typos
2023-04-21 11:37:39 -04:00
Przemyslaw Klys 14d33aa2a6 Bump versions and dependencies 2023-03-07 18:12:19 +01:00
Przemyslaw Klys d596fd31fc Update changelog 2023-03-07 18:12:08 +01:00
Przemyslaw Klys a5cf96398c Update module builder 2023-03-07 18:12:03 +01:00
Przemyslaw Klys 68921b7fc7 Improve detections of empty OUs #39 2023-03-07 17:59:52 +01:00
Przemyslaw Klys ab8443d450 Bump module builder 2022-12-16 17:37:48 +01:00
Przemyslaw Klys 386af088ae Bump version 2022-12-16 17:36:43 +01:00
Przemyslaw Klys ad0903e4d9 Update changelog 2022-12-16 17:30:16 +01:00
Przemyslaw Klys 91ff9da014 Hopefully fixes #38 2022-12-16 17:28:30 +01:00
Przemyslaw Klys a262ba531f Hopefully fixes #37 2022-12-16 17:28:12 +01:00
Przemyslaw Klys ea7b4f1bd8 Bump version 2022-12-04 23:23:55 +01:00
Przemyslaw Klys 09cbd6ca27 Update changelog 2022-12-04 23:03:40 +01:00
Przemyslaw Klys ddd2139ebd Bump version 2022-11-07 14:15:37 +01:00
Przemyslaw Klys ca6e90f399 Bump version 2022-10-27 19:33:33 +02:00
Przemyslaw Klys 90931d5c80 Update changelog 2022-10-27 19:33:27 +02:00
Przemyslaw Klys bfd45c0604 Fixes #35 2022-10-27 19:15:49 +02:00
Przemyslaw Klys 231c2951e0 Update changelog 2022-10-20 08:47:50 +02:00
Przemyslaw Klys faea9753ae Bump versions 2022-10-20 08:45:13 +02:00
Przemyslaw Klys 4c49406a6c Update changelog 2022-10-20 08:44:58 +02:00
Przemyslaw Klys f3d73abed4 Fixes additional space #31 2022-10-20 08:43:43 +02:00
Przemyslaw Klys 620ce6cd61 Fixes #33 2022-10-20 08:36:11 +02:00
Przemyslaw Klys b336f73eda Fixes SplitReports 2022-09-12 22:16:20 +02:00
Przemyslaw Klys bfefb7f943 Update changelog 2022-09-12 22:14:39 +02:00
Przemyslaw Klys 18226c172a Bump version 2022-09-12 22:14:32 +02:00
Przemyslaw Klys 3320b26bd4 Update docs 2022-09-11 23:17:53 +02:00
Przemyslaw Klys ec91c69673 moved to a different directory 2022-09-11 23:17:46 +02:00
Przemyslaw Klys 31e9b3b4d3 Add docs for anotehr command 2022-09-11 23:17:37 +02:00
Przemyslaw Klys d7eedc97b9 Update module builder 2022-09-11 23:17:28 +02:00
Przemyslaw Klys 42d3ba67dc Update PSD1 2022-09-11 23:17:14 +02:00
Przemyslaw Klys cdc9c1cbc5 Update changelog 2022-09-11 22:34:02 +02:00
Przemyslaw Klys de28c53842 Example on new function 2022-09-11 22:32:57 +02:00
Przemyslaw Klys be0be57994 Udate changelog 2022-09-11 22:32:44 +02:00
Przemyslaw Klys 652f553e71 Update example 2022-09-11 22:32:39 +02:00
Przemyslaw Klys 5d2a4725f1 move html to separate functions
fix splitreports to start creating reports right away
2022-09-11 22:30:55 +02:00
Przemyslaw Klys 4081a5ead1 Add new function to export XMLs 2022-09-11 22:28:16 +02:00
Przemyslaw Klys 796c69de37 Update examples 2022-09-11 22:28:04 +02:00
Przemyslaw Klys 9929d827f5 Disabled tests that are deprecated 2022-07-27 12:41:07 +02:00
Przemyslaw Klys 4781b91e23 Update changelog 2022-07-27 09:39:57 +02:00
Przemyslaw Klys 1ca78cf5f5 Disable deprecated reports if user doesn't ask for them 2022-07-27 09:37:35 +02:00
Przemyslaw Klys 768e32cf7e Update module builder 2022-07-26 21:51:14 +02:00
Przemyslaw Klys 0d43c4e809 Update changelog 2022-07-26 21:49:00 +02:00
Przemyslaw Klys ac4a9bb43d Added error handling 2022-07-26 21:47:57 +02:00
Przemyslaw Klys 0abde822f5 Add split reports functionality 2022-07-26 21:40:33 +02:00
Przemyslaw Klys bf3ec81ea6 Update docs 2022-07-26 21:40:22 +02:00
Przemyslaw Klys c0d1f4de1c Update changelog 2022-07-26 21:39:54 +02:00
Przemyslaw Klys 65719b8c4c Bump version 2022-07-26 21:39:48 +02:00
Przemyslaw Klys 096e6983c6 Update 2021-12-06 09:36:45 +01:00
Przemyslaw Klys ea4ef03e4f Added additional property 2021-12-06 09:35:54 +01:00
Przemyslaw Klys 61ca7fede4 Update docs 2021-12-05 11:30:01 +01:00
Przemyslaw Klys 5cc0db1031 Update docs 2021-12-05 11:29:43 +01:00
Przemyslaw Klys d748afda1d Version bump 2021-12-05 11:28:15 +01:00
Przemyslaw Klys 9165f23f1b Update changelog 2021-12-05 11:27:49 +01:00
Przemyslaw Klys 1c700cd27c Update docs 2021-12-05 11:26:54 +01:00
Przemyslaw Klys a566d4716a Update docs 2021-12-05 11:26:47 +01:00
Przemyslaw Klys 196163cc1f Version bump 2021-12-05 11:26:39 +01:00
Przemyslaw Klys a546a023ff added docs 2021-12-05 11:26:31 +01:00
Przemyslaw Klys f5a38b4351 Updated docs 2021-12-05 11:10:38 +01:00
Przemyslaw Klys 9c668ac869 Removed dead parameter 2021-12-05 11:10:32 +01:00
Przemyslaw Klys a50dd3cc9a Update changelog 2021-12-05 11:04:06 +01:00
Przemyslaw Klys 45be7cd432 Update changelog 2021-12-05 11:02:57 +01:00
Przemyslaw Klys cab639239f Fixes #30 2021-12-05 11:01:19 +01:00
Przemyslaw Klys 5a578278d0 Updated docs 2021-12-03 22:32:16 +01:00
Przemyslaw Klys 408c4a5530 Update changelog/psd1 2021-12-03 22:22:25 +01:00
Przemyslaw Klys 40905c67ec Update docs 2021-12-03 22:21:09 +01:00
Przemyslaw Klys cf8c687e57 Version bump 2021-12-03 22:19:16 +01:00
Przemyslaw Klys 580ef74486 Updated docs 2021-12-03 22:19:02 +01:00
Przemyslaw Klys ebecd56dff Bump version 2021-11-02 11:52:00 +01:00
Przemyslaw Klys d5700d873a Update changelog 2021-11-02 11:51:26 +01:00
Przemyslaw Klys 89c216bb55 Should be 7 days 2021-11-02 11:50:52 +01:00
Przemyslaw Klys fe2ff87120 Version bump 2021-11-02 11:12:33 +01:00
Przemyslaw Klys 0c756b6f0d Update changelog 2021-11-02 11:12:22 +01:00
Przemyslaw Klys 3dc5dc7be4 File rename, fix of condition 2021-11-02 11:11:02 +01:00
Przemyslaw Klys d75172e6b1 Version bump 2021-10-24 16:10:56 +02:00
Przemyslaw Klys ee12a4f619 Update readme 2021-10-24 16:08:02 +02:00
Przemyslaw Klys c96c8285bf Added example 2021-10-24 16:01:47 +02:00
Przemyslaw Klys 8c3ed61142 added new date ranges 2021-10-24 16:01:19 +02:00
Przemyslaw Klys 2934acafeb Improved report 2021-10-24 16:01:07 +02:00
Przemyslaw Klys 7203b7f544 Added additional dates 2021-10-24 16:00:59 +02:00
Przemyslaw Klys d22e79b657 Added date filtering 2021-10-24 16:00:50 +02:00
Przemyslaw Klys e07c2dae9a Update readme 2021-10-24 16:00:20 +02:00
Przemyslaw Klys 8b1b225ce1 Updated changelog/moved out of readme 2021-10-24 16:00:12 +02:00
Przemyslaw Klys 1a54d62b2e Fix example 2021-10-24 15:46:20 +02:00
Przemyslaw Klys 352ddc18f3 added report 2021-10-24 15:32:36 +02:00
Przemyslaw Klys 017007d8c9 Added gpozaurr updates report 2021-10-24 15:32:20 +02:00
Przemyslaw Klys 4803d3e183 Improvements 2021-10-24 14:51:19 +02:00
Przemyslaw Klys 92fcb80005 Update example 2021-10-22 12:17:16 +02:00
Przemyslaw Klys 4985a114dc Added example 2021-10-22 12:16:39 +02:00
Przemyslaw Klys 3ad4a92c66 Small improvement to prevent detection of domain errors 2021-10-22 12:15:42 +02:00
Przemyslaw Klys e78db61695 Version bump 2021-10-19 17:09:41 +02:00
Przemyslaw Klys 781e95d042 Adding verbose messages 2021-10-19 17:07:36 +02:00
Przemyslaw Klys 4e1f35f433 Version bump 2021-10-18 08:34:47 +02:00
Przemyslaw Klys 74eb14753e Fix when GPO is not linked 2021-10-18 08:33:42 +02:00
Przemyslaw Klys 1a7bb0273f Update changelog 2021-10-17 17:59:29 +02:00
Przemyslaw Klys 65eea07b6f Version bump 2021-10-17 15:08:48 +02:00
Przemyslaw Klys fe917d70b0 Support for new version of ADEssentials 2021-10-17 15:08:25 +02:00
Przemyslaw Klys 9786186a59 Added new function 2021-10-17 14:56:08 +02:00
Przemyslaw Klys b6fc7a676b Internal function 2021-10-17 14:55:59 +02:00
Przemyslaw Klys 46e6815314 internal function to find dates 2021-10-17 14:55:38 +02:00
Przemyslaw Klys b3e9ddeb64 New function, for now internal use 2021-10-17 14:55:27 +02:00
Przemyslaw Klys e5f67d8f2e Update changelog 2021-10-17 14:55:14 +02:00
Przemyslaw Klys 24f81647fa Version bump 2021-10-17 14:55:06 +02:00
Przemyslaw Klys cdeb2b4a2d Added search by dates 2021-10-17 14:54:54 +02:00
Przemyslaw Klys f7cf18500d Version bump 2021-08-24 18:32:48 +02:00
Przemyslaw Klys 1becfbca60 Added changelog entry 2021-08-24 18:32:11 +02:00
Przemysław Kłys 82c21edcc2 Merge pull request #24 from PatrickOnGit/FolderRedirectionType
Added folder redirection type
2021-08-24 18:30:23 +02:00
Przemyslaw Klys e56cf3bde3 Moved ID, added ID to SingleObject 2021-08-24 18:29:11 +02:00
patrick-sczepanski 996139ab4a Added folder redirection type 2021-08-23 11:12:56 +02:00
Przemyslaw Klys 5590e3bf31 Version bump 2021-08-19 11:25:19 +02:00
Przemyslaw Klys 9db54b338b Changelog update 2021-08-19 11:25:12 +02:00
Przemyslaw Klys e79d95c0fd Added root level 2021-08-19 11:24:22 +02:00
Przemyslaw Klys 8c1f95b1b8 Version bump 2021-08-18 19:44:21 +02:00
Przemyslaw Klys 4d9f1e7fba Changelog update 2021-08-18 19:44:13 +02:00
Przemyslaw Klys 88fb1651a9 Fix for exclusions using GUID with brackets 2021-08-18 19:42:57 +02:00
Przemyslaw Klys 9696fb0cab Update example 2021-08-17 10:20:50 +02:00
Przemyslaw Klys bb77785ea8 Update example 2021-08-17 10:20:30 +02:00
Przemyslaw Klys 168919d7d9 BUmp new version 2021-08-17 10:20:06 +02:00
Przemyslaw Klys 5effe5face Make delete OU non-mandatatory 2021-08-17 10:19:57 +02:00
Przemyslaw Klys 6d15363caa bump version 2021-08-17 10:14:22 +02:00
Przemyslaw Klys 6c62a11767 Updated wording 2021-08-17 10:13:46 +02:00
Przemyslaw Klys 61bfe5bd4d Bump version, new release 2021-08-17 08:51:22 +02:00
Przemyslaw Klys 5043767e8d Small adjustment of texts 2021-08-17 08:50:42 +02:00
Przemyslaw Klys e4ecafaea5 Improvements to GPOList to not trigger require changes when excluding GPOs 2021-08-17 08:50:28 +02:00
Przemyslaw Klys 154e3428e6 More changes 2021-08-16 16:39:41 +02:00
Przemyslaw Klys a6c2ac1226 Version bump 2021-08-16 16:21:12 +02:00
Przemyslaw Klys 2b0a395abc Small improvement 2021-08-16 16:20:35 +02:00
Przemyslaw Klys 04b7242bde Version bump 2021-08-16 12:02:24 +02:00
Przemyslaw Klys 48af562bfd Changelog update 2021-08-16 12:01:57 +02:00
Przemyslaw Klys a5d447b28c Improvements to exclusions 2021-08-16 12:01:39 +02:00
Przemyslaw Klys e649a489bc Updated changelog 2021-08-16 09:49:42 +02:00
Przemyslaw Klys bf3cfb8d21 Version bump 2021-08-16 09:49:08 +02:00
Przemyslaw Klys f250453536 Improved exclusions for email use 2021-08-16 09:48:45 +02:00
Przemyslaw Klys 34902ab6d8 Removed dead code 2021-08-16 09:48:03 +02:00
Przemyslaw Klys ddaadf56a3 Version bump 2021-08-13 12:32:07 +02:00
Przemyslaw Klys 25805e5199 Example improvement 2021-08-13 12:31:29 +02:00
Przemyslaw Klys e0fe437e1e Small exclusion improvement 2021-08-13 12:25:38 +02:00
Przemyslaw Klys c282fcc784 Exclusions improvement 2021-08-13 12:25:28 +02:00
Przemyslaw Klys a8f496190d support for guid exclusion 2021-08-13 12:25:14 +02:00
Przemyslaw Klys 4f41a98e89 changelog update 2021-08-13 12:25:01 +02:00
Przemyslaw Klys 010c4dc8e0 Handling of scriptblock added 2021-08-13 12:24:51 +02:00
Przemyslaw Klys db57b9ee22 Update readme changelog 2021-08-12 09:37:02 +02:00
Przemyslaw Klys b7315b0fa5 Changelog update 2021-08-10 21:05:20 +02:00
Przemyslaw Klys 8b9c9e66b8 Removed SearchBuilder option 2021-08-10 21:05:13 +02:00
Przemyslaw Klys 5a2f789321 Update example showing exclusions 2021-08-10 20:57:38 +02:00
Przemyslaw Klys b3023051f3 display additional column in example 2021-08-10 20:57:27 +02:00
Przemyslaw Klys 9538facc13 Update example showing exclusions 2021-08-10 20:57:02 +02:00
Przemyslaw Klys 7c914d8134 Version bump 2021-08-10 20:56:37 +02:00
Przemyslaw Klys 90f951d995 Update example showing exclusions 2021-08-10 20:56:30 +02:00
Przemyslaw Klys b2db6d5662 Update changelog 2021-08-10 20:56:01 +02:00
Przemyslaw Klys cafd3f7938 Added exclusions/approved owners 2021-08-10 20:50:22 +02:00
Przemyslaw Klys ba81950eed Added exclusions/approved owners 2021-08-10 20:50:18 +02:00
Przemyslaw Klys 810ef18baa Adds ability for exclusions/approved Owners 2021-08-10 20:49:47 +02:00
Przemyslaw Klys dbf99debee Added help information 2021-08-10 16:12:20 +02:00
Przemyslaw Klys 4cd644d1b4 Added exclusions 2021-08-10 16:12:10 +02:00
Przemyslaw Klys e2aa7af83d Added exclusions 2021-08-10 16:12:02 +02:00
Przemyslaw Klys ff1668c60d Function that generates exclusions 2021-08-10 16:11:51 +02:00
Przemyslaw Klys 5f82bbaea4 Added exclusions to report 2021-08-10 16:11:41 +02:00
Przemyslaw Klys 75cee65b65 Added exclusions to report 2021-08-10 16:11:35 +02:00
Przemyslaw Klys 0dc56d314e Example improvement 2021-08-10 16:11:17 +02:00
Przemyslaw Klys 9c689708ba Report improvement 2021-08-06 11:36:30 +02:00
Przemyslaw Klys bb18d488b4 Example improvements 2021-08-06 11:36:22 +02:00
Przemyslaw Klys e72d81aee3 Example update 2021-08-05 23:56:35 +02:00
Przemyslaw Klys 70ed52cdf9 Improvement to report 2021-08-05 23:56:27 +02:00
Przemyslaw Klys 3b414e712c Example update 2021-08-05 23:33:35 +02:00
Przemyslaw Klys 7ed1410fd9 Parameter sets update 2021-08-05 23:26:07 +02:00
Przemyslaw Klys 6d2e476916 Changelog update 2021-08-05 23:26:00 +02:00
Przemyslaw Klys b7ed5e0c5a Added examples for new functions 2021-08-05 22:13:56 +02:00
Przemyslaw Klys 72bd69d0e6 Update changelog 2021-08-05 22:09:28 +02:00
Przemyslaw Klys b5c1f3dcd5 Improved Get-GPOZaurrOrganizationalUnit 2021-08-05 22:09:09 +02:00
Przemyslaw Klys bc773e2e83 Added Remove-GPOZaurrLinkEmptyOU 2021-08-05 22:08:56 +02:00
Przemyslaw Klys 8db961cba6 Improve report 2021-08-05 22:08:46 +02:00
Przemyslaw Klys 227639d0f6 New functions added in psd1 2021-08-05 22:08:22 +02:00
Przemyslaw Klys e03f819461 Update PSD1 2021-08-03 19:41:38 +02:00
Przemyslaw Klys fb955f645b Add changelog 2021-08-03 19:41:30 +02:00
Przemyslaw Klys 3fc3b74798 Added Get-GPOZaurrOrganizationalUnit 2021-08-03 19:40:41 +02:00
Przemyslaw Klys 695f4dbe6a Twitter complainer 2021-07-08 20:16:01 +02:00
Przemyslaw Klys 5d69cef128 changelog update 2021-05-26 22:53:30 +02:00
Przemyslaw Klys 062374b4be Update readme, PSD1 2021-05-26 22:53:10 +02:00
Przemyslaw Klys e61329ac66 Improved certificates 2021-05-26 16:32:07 +02:00
Przemyslaw Klys d3328dbb81 Readme update 2021-05-17 23:22:11 +02:00
Przemyslaw Klys 5803371b5e Update PSD1 2021-05-17 23:14:37 +02:00
Przemyslaw Klys 263f364ede PSM1 update 2021-05-17 23:14:30 +02:00
Przemyslaw Klys 16a181155b Potentially fixes #17 2021-05-17 23:14:16 +02:00
Przemyslaw Klys 962d8829d7 PSD1 update 2021-04-15 18:44:15 +02:00
Przemyslaw Klys 4155c35cc6 Moved description a bit 2021-04-15 18:43:47 +02:00
Przemyslaw Klys 614d8cbda5 PSD1/Readme release 2021-04-12 08:46:35 +02:00
Przemyslaw Klys 43e7f2e746 Dont auto replace words 🐛 2021-04-12 08:45:35 +02:00
Przemyslaw Klys 9a3ed3b6ce Added hidding column 2021-04-12 00:09:47 +02:00
Przemyslaw Klys 50f0cfc1a6 Improved blocked inheritance 2021-04-11 21:36:40 +02:00
Przemyslaw Klys 269d611563 New release 2021-04-11 21:30:25 +02:00
Przemyslaw Klys 55ab89a5b0 Release is ready 2021-04-11 21:14:29 +02:00
Przemyslaw Klys 9da8c7c94b BlockedInheritance Improve 2021-04-11 21:11:36 +02:00
Przemyslaw Klys 53aa69029f Update examples 2021-04-11 21:11:19 +02:00
Przemyslaw Klys 4189ad12f2 Improvements 2021-04-11 20:11:46 +02:00
Przemyslaw Klys b1c3037803 Update examples 2021-04-11 20:11:33 +02:00
Przemyslaw Klys 62308cbb6d Improvement of TableOption join 2021-04-11 19:01:47 +02:00
Przemyslaw Klys 914dcfb0c4 Improved 2021-04-11 19:01:33 +02:00
Przemyslaw Klys 2cf4d2c6c9 Added exclusions 2021-04-11 16:21:59 +02:00
Przemyslaw Klys d53d50f99b Update readme 2021-04-11 15:47:43 +02:00
Przemyslaw Klys 2ef3c306ff Update example 2021-04-11 14:53:37 +02:00
Przemyslaw Klys 481338f83b Update examples 2021-04-11 14:53:28 +02:00
Przemyslaw Klys eaf3b231ae Update example 2021-04-11 14:53:00 +02:00
Przemyslaw Klys b2c73479c7 Update example 2021-04-11 14:52:55 +02:00
Przemyslaw Klys 38c6327e30 Update readme 2021-04-11 14:52:30 +02:00
Przemyslaw Klys 0b3e072a3e Added search builder 2021-04-11 14:49:58 +02:00
Przemyslaw Klys 89664bfd02 Add searchBuilder to tables 2021-04-10 20:35:33 +02:00
Przemyslaw Klys 1021ebe5f4 Update readme 2021-03-20 19:51:53 +01:00
Przemyslaw Klys 521125bbc1 Update PSD1 2021-03-20 19:51:00 +01:00
Przemyslaw Klys ae6b596e5b Fixes small error 2021-03-20 19:50:50 +01:00
Przemyslaw Klys bfe50f02fe Added Windows Firewall analysis 2021-02-11 12:40:21 +01:00
Przemyslaw Klys 187b44a19d Update readme 2021-02-11 12:35:22 +01:00
Przemyslaw Klys 36793b33c4 PSD1 update 2021-02-11 12:34:01 +01:00
Przemyslaw Klys 94e6c785c1 Update readme 2021-02-11 12:21:03 +01:00
Przemyslaw Klys efbd2b12de Firewall updates 2021-02-11 12:15:27 +01:00
Przemyslaw Klys d0a678353f Update rules 2021-02-10 23:48:01 +01:00
Przemyslaw Klys 6b0f3b332d Added Firewall Rules #7 2021-02-10 23:46:36 +01:00
Przemyslaw Klys 37483c91b5 Update PSD1 2021-02-10 19:51:17 +01:00
Przemyslaw Klys 9172948be3 Added folder redirection #12 2021-02-10 19:50:45 +01:00
Przemyslaw Klys 14567959f7 #12 2021-02-10 19:49:51 +01:00
Przemyslaw Klys 6a9ad14083 Modified readme 2021-02-10 19:25:10 +01:00
Przemyslaw Klys e00de40cd2 Adds description #13 2021-02-10 19:24:04 +01:00
Przemyslaw Klys 6f806698e9 update readme 2021-02-10 12:02:01 +01:00
Przemyslaw Klys 2e1571b0d7 Update 2021-02-10 11:56:31 +01:00
Przemyslaw Klys ffedd2d9d2 Update 2021-02-10 11:56:23 +01:00
Przemyslaw Klys 911bc50f22 Update readme 2021-02-10 11:00:52 +01:00
Przemyslaw Klys 0383d249e9 PSD1 update 2021-02-10 10:57:12 +01:00
Przemyslaw Klys 8070179d27 Update readme 2021-02-10 10:56:48 +01:00
Przemyslaw Klys db67e6191e Improved false-positive detection for Empty on non-english systesm 2021-02-10 10:47:23 +01:00
Przemyslaw Klys db9b6d60c6 PSD1 update 2021-02-09 18:07:24 +01:00
Przemyslaw Klys 2c965d81d5 Small update 2021-02-09 18:01:48 +01:00
Przemyslaw Klys bff372affe Update readme 2021-02-09 17:58:06 +01:00
Przemyslaw Klys 138a0f411e Added information about filepath 2021-02-09 17:56:56 +01:00
Przemyslaw Klys 1c37a9d1df Update readme / PSD1 2021-02-09 10:58:02 +01:00
Przemyslaw Klys 30535c1baf Update readme 2021-02-09 10:55:23 +01:00
Przemyslaw Klys 56c722edd0 Small fix to exclude GPOList.xml 2021-02-09 10:54:43 +01:00
Przemyslaw Klys 1f43ae21fe PSD1 update 2021-02-08 17:43:40 +01:00
Przemyslaw Klys ef90ef05f7 Update readme 2021-02-08 17:43:13 +01:00
Przemyslaw Klys 43b304d252 Removed redundant code
Handles ObjectClass problem properly now
2021-02-08 17:43:07 +01:00
Przemyslaw Klys 24e691edb9 Update PSD1/readme 2021-02-07 15:08:54 +01:00
Przemyslaw Klys 1c787735d4 update readme 2021-02-07 10:08:36 +01:00
Przemyslaw Klys 13a2aa6482 Missing text added 2021-02-07 10:08:29 +01:00
Przemyslaw Klys 1ac1f83abd Fix #9 2021-02-07 10:06:11 +01:00
Przemyslaw Klys 65b2867588 Update readme 2021-02-04 18:43:10 +01:00
Przemyslaw Klys 1043a2d512 update list 2021-02-04 18:37:36 +01:00
Przemyslaw Klys 7002813027 PSD1 update 2021-01-27 19:09:28 +01:00
Przemyslaw Klys 03b8e4f2cb Update readme 2021-01-27 19:09:02 +01:00
Przemyslaw Klys 680762733e Update to Online 2021-01-27 19:08:54 +01:00
Przemyslaw Klys 7a37d5b9f6 Added Online switch 2021-01-27 18:59:06 +01:00
Przemyslaw Klys a1e9a4a3fa PSD1 update 2021-01-25 21:25:05 +01:00
Przemyslaw Klys 8cbb3272b2 Update readme 2021-01-25 21:24:40 +01:00
Przemyslaw Klys 8da0c1793d Added WindowsTimeService #6 2021-01-25 21:23:19 +01:00
Przemyslaw Klys 5a7b20ca2b Update examples 2021-01-25 19:46:15 +01:00
Przemyslaw Klys ebffba3b95 Update readme 2021-01-25 19:43:33 +01:00
Przemyslaw Klys a79071c395 PSD1 update 2021-01-25 19:43:02 +01:00
Przemyslaw Klys a5a889b468 Small update to docs 2021-01-25 19:42:36 +01:00
Przemyslaw Klys 62d73041ea Update readme 2021-01-24 17:56:37 +01:00
Przemyslaw Klys d88307047c PSD1 update 2021-01-24 17:53:34 +01:00
Przemyslaw Klys 7d85d41747 Text improvement 2021-01-24 16:48:37 +01:00
Przemyslaw Klys a1fab2ceb2 Text improvement 2021-01-24 10:28:35 +01:00
Przemyslaw Klys 99f07f61e3 Text improvement 2021-01-24 10:28:29 +01:00
Przemyslaw Klys 58136f0c43 Update psd1 2021-01-22 12:40:45 +01:00
Przemyslaw Klys b55729d8e0 Update deployment module 2021-01-22 12:40:36 +01:00
Przemyslaw Klys 6206a33a2e Update readme 2021-01-22 12:40:27 +01:00
Przemyslaw Klys 165381b1e3 Small update 2021-01-22 12:39:53 +01:00
Przemyslaw Klys ea1de10fd9 Update readme 2021-01-11 10:30:41 +01:00
Przemyslaw Klys 03453b6bdb PSD1 update 2021-01-11 10:27:41 +01:00
Przemyslaw Klys 4d7f49902d Update 2021-01-11 10:27:34 +01:00
Przemyslaw Klys 508d778d06 Update consistency report 2021-01-11 10:14:01 +01:00
Przemyslaw Klys 5c3157f15f Update psd1 2021-01-11 10:13:54 +01:00
Przemyslaw Klys b33f42b320 Update readme 2021-01-11 10:13:48 +01:00
Przemyslaw Klys f8d3b363e7 Update list 2021-01-11 09:52:59 +01:00
Przemyslaw Klys a68d917d19 Small test 2021-01-11 09:51:10 +01:00
Przemyslaw Klys 946bb3029f Update 2021-01-11 09:51:04 +01:00
Przemyslaw Klys 975bf5b889 Update PSD1 2021-01-11 09:00:13 +01:00
Przemyslaw Klys 6fa0818375 Update Examples 2021-01-11 08:59:35 +01:00
Przemyslaw Klys 2abec9579a Update Invoke-GPOZaurrContent 2021-01-11 08:58:51 +01:00
Przemyslaw Klys 75a8083368 Update PSD1/Readme 2021-01-11 08:58:24 +01:00
Przemyslaw Klys 06c711694e Update readme/psd1 2021-01-05 13:32:57 +01:00
Przemyslaw Klys 8a38ac4556 Improved report 2021-01-05 13:31:45 +01:00
Przemyslaw Klys 9d2ae288c0 Update PSD1/Readme 2021-01-04 21:47:54 +01:00
Przemyslaw Klys 0bc50328ee solves issue when gpLink is empty 2021-01-04 21:47:26 +01:00
Przemyslaw Klys a74b662c9b Prevent errors from doing harm 2021-01-04 21:29:57 +01:00
Przemyslaw Klys 37d8db92f7 Update to make sure it works properly for domains 2021-01-04 21:15:49 +01:00
Przemyslaw Klys d094344f9f Update docs 2021-01-04 21:15:28 +01:00
203 changed files with 10062 additions and 1914 deletions
+8
View File
@@ -0,0 +1,8 @@
Ignore/*
.vs/*
.vscode/*
Releases/*
ReleasesUnpacked/*
*.log
*.html
Artefacts/*
+226
View File
@@ -0,0 +1,226 @@
Clear-Host
Import-Module "PSPublishModule" -Force
Invoke-ModuleBuild -ModuleName 'GPOZaurr' {
# Usual defaults as per standard module
$Manifest = @{
# Version number of this module.
ModuleVersion = '1.1.X'
# Supported PSEditions
CompatiblePSEditions = @('Desktop')
# ID used to uniquely identify this module
GUID = 'f7d4c9e4-0298-4f51-ad77-e8e3febebbde'
# Author of this module
Author = 'Przemyslaw Klys'
# Company or vendor of this module
CompanyName = 'Evotec'
# Copyright statement for this module
Copyright = "(c) 2011 - $((Get-Date).Year) Przemyslaw Klys @ Evotec. All rights reserved."
# Description of the functionality provided by this module
Description = 'Group Policy Eater is a PowerShell module that aims to gather information about Group Policies but also allows fixing issues that you may find in them.'
# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = '5.1'
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
Tags = @('Windows', 'ActiveDirectory', 'GPO', 'GroupPolicy')
#IconUri = 'https://evotec.xyz/wp-content/uploads/2019/02/PSPublishModule.png'
ProjectUri = 'https://github.com/EvotecIT/GPOZaurr'
}
New-ConfigurationManifest @Manifest
New-ConfigurationModule -Type RequiredModule -Name 'PSWriteColor', 'PSSharedGoods', 'ADEssentials', 'PSWriteHTML' -Guid Auto -Version Latest
#New-ConfigurationModule -Type ExternalModule -Name 'Microsoft.PowerShell.Utility', 'Microsoft.PowerShell.Management','Microsoft.PowerShell.Security'
New-ConfigurationModule -Type ApprovedModule -Name 'PSSharedGoods', 'PSWriteColor', 'Connectimo', 'PSUnifi', 'PSWebToolbox', 'PSMyPassword', 'ADEssentials'
New-ConfigurationModule -Type ExternalModule -Name @(
"CimCmdlets"
'Microsoft.PowerShell.Management'
'Microsoft.PowerShell.Utility'
'Microsoft.PowerShell.Security'
)
New-ConfigurationModuleSkip -IgnoreModuleName @(
# this are builtin into PowerShell, so not critical
'powershellget'
'GroupPolicy'
'ScheduledTasks'
'ActiveDirectory'
'Microsoft.WSMan.Management'
'NetConnection'
'NetSecurity'
'NetTCPIP'
) -IgnoreFunctionName @(
'Select-Unique'
)
New-ConfigurationCommand -ModuleName 'ActiveDirectory' -CommandName @(
'Add-GPOPermission'
'Add-GPOZaurrPermission'
'Backup-GPOZaurr'
'Clear-GPOZaurrSysvolDFSR'
'ConvertFrom-CSExtension'
'Find-CSExtension'
'Get-GPOZaurr'
'Get-GPOZaurrAD'
'Get-GPOZaurrBackupInformation'
'Get-GPOZaurrBroken'
'Get-GPOZaurrDictionary'
'Get-GPOZaurrDuplicateObject'
'Get-GPOZaurrFiles'
'Get-GPOZaurrFilesPolicyDefinition'
'Get-GPOZaurrFolders'
'Get-GPOZaurrInheritance'
'Get-GPOZaurrLegacyFiles'
'Get-GPOZaurrLink'
'Get-GPOZaurrLinkSummary'
'Get-GPOZaurrNetLogon'
'Get-GPOZaurrOwner'
'Get-GPOZaurrPassword'
'Get-GPOZaurrPermission'
'Get-GPOZaurrPermissionConsistency'
'Get-GPOZaurrPermissionRoot'
'Get-GPOZaurrPermissionSummary'
'Get-GPOZaurrSysvolDFSR'
'Get-GPOZaurrWMI'
'Invoke-GPOZaurr'
#'Invoke-GPOZaurrContent'
'Invoke-GPOZaurrPermission'
'Invoke-GPOZaurrSupport'
'New-GPOZaurrWMI'
'Optimize-GPOZaurr'
'Remove-GPOPermission'
'Remove-GPOZaurr'
'Remove-GPOZaurrBroken'
'Remove-GPOZaurrDuplicateObject'
'Remove-GPOZaurrFolders'
'Remove-GPOZaurrLegacyFiles'
'Remove-GPOZaurrPermission'
'Remove-GPOZaurrWMI'
'Repair-GPOZaurrNetLogonOwner'
'Repair-GPOZaurrPermissionConsistency'
'Restore-GPOZaurr'
'Save-GPOZaurrFiles'
'Set-GPOOwner'
'Set-GPOZaurrOwner'
'Find-GPO'
'Get-GPOZaurrFilesPolicyDefinitions'
'Get-GPOZaurrSysvol'
'Remove-GPOZaurrOrphaned'
'Show-GPO'
'Show-GPOZaurr'
)
New-ConfigurationCommand -ModuleName 'GroupPolicy' -CommandName @(
'Add-GPOPermission'
'Add-GPOZaurrPermission'
'Backup-GPOZaurr'
'Clear-GPOZaurrSysvolDFSR'
'ConvertFrom-CSExtension'
'Find-CSExtension'
'Get-GPOZaurr'
'Get-GPOZaurrAD'
'Get-GPOZaurrBackupInformation'
'Get-GPOZaurrBroken'
'Get-GPOZaurrDictionary'
'Get-GPOZaurrDuplicateObject'
'Get-GPOZaurrFiles'
'Get-GPOZaurrFilesPolicyDefinition'
'Get-GPOZaurrFolders'
'Get-GPOZaurrInheritance'
'Get-GPOZaurrLegacyFiles'
'Get-GPOZaurrLink'
'Get-GPOZaurrLinkSummary'
'Get-GPOZaurrNetLogon'
'Get-GPOZaurrOwner'
'Get-GPOZaurrPassword'
'Get-GPOZaurrPermission'
'Get-GPOZaurrPermissionConsistency'
'Get-GPOZaurrPermissionRoot'
'Get-GPOZaurrPermissionSummary'
'Get-GPOZaurrSysvolDFSR'
'Get-GPOZaurrWMI'
'Invoke-GPOZaurr'
#'Invoke-GPOZaurrContent'
'Invoke-GPOZaurrPermission'
'Invoke-GPOZaurrSupport'
'New-GPOZaurrWMI'
'Optimize-GPOZaurr'
'Remove-GPOPermission'
'Remove-GPOZaurr'
'Remove-GPOZaurrBroken'
'Remove-GPOZaurrDuplicateObject'
'Remove-GPOZaurrFolders'
'Remove-GPOZaurrLegacyFiles'
'Remove-GPOZaurrPermission'
'Remove-GPOZaurrWMI'
'Repair-GPOZaurrNetLogonOwner'
'Repair-GPOZaurrPermissionConsistency'
'Restore-GPOZaurr'
'Save-GPOZaurrFiles'
'Set-GPOOwner'
'Set-GPOZaurrOwner'
'Find-GPO'
'Get-GPOZaurrFilesPolicyDefinitions'
'Get-GPOZaurrSysvol'
'Remove-GPOZaurrOrphaned'
'Show-GPO'
'Show-GPOZaurr'
)
$ConfigurationFormat = [ordered] @{
RemoveComments = $true
RemoveEmptyLines = $true
PlaceOpenBraceEnable = $true
PlaceOpenBraceOnSameLine = $true
PlaceOpenBraceNewLineAfter = $true
PlaceOpenBraceIgnoreOneLineBlock = $false
PlaceCloseBraceEnable = $true
PlaceCloseBraceNewLineAfter = $true
PlaceCloseBraceIgnoreOneLineBlock = $false
PlaceCloseBraceNoEmptyLineBefore = $true
UseConsistentIndentationEnable = $true
UseConsistentIndentationKind = 'space'
UseConsistentIndentationPipelineIndentation = 'IncreaseIndentationAfterEveryPipeline'
UseConsistentIndentationIndentationSize = 4
UseConsistentWhitespaceEnable = $true
UseConsistentWhitespaceCheckInnerBrace = $true
UseConsistentWhitespaceCheckOpenBrace = $true
UseConsistentWhitespaceCheckOpenParen = $true
UseConsistentWhitespaceCheckOperator = $true
UseConsistentWhitespaceCheckPipe = $true
UseConsistentWhitespaceCheckSeparator = $true
AlignAssignmentStatementEnable = $true
AlignAssignmentStatementCheckHashtable = $true
UseCorrectCasingEnable = $true
}
# format PSD1 and PSM1 files when merging into a single file
# enable formatting is not required as Configuration is provided
New-ConfigurationFormat -ApplyTo 'OnMergePSM1', 'OnMergePSD1' -Sort None @ConfigurationFormat
# format PSD1 and PSM1 files within the module
# enable formatting is required to make sure that formatting is applied (with default settings)
New-ConfigurationFormat -ApplyTo 'DefaultPSD1', 'DefaultPSM1' -EnableFormatting -Sort None
# when creating PSD1 use special style without comments and with only required parameters
New-ConfigurationFormat -ApplyTo 'DefaultPSD1', 'OnMergePSD1' -PSD1Style 'Minimal'
# configuration for documentation, at the same time it enables documentation processing
New-ConfigurationDocumentation -Enable:$false -StartClean -UpdateWhenNew -PathReadme 'Docs\Readme.md' -Path 'Docs'
New-ConfigurationImportModule -ImportSelf
New-ConfigurationBuild -Enable:$true -SignModule -MergeModuleOnBuild -MergeFunctionsFromApprovedModules -CertificateThumbprint '483292C9E317AA13B07BB7A96AE9D1A5ED9E7703'
# New-ConfigurationTest -TestsPath "$PSScriptRoot\..\Tests" -Enable
New-ConfigurationArtefact -Type Unpacked -Enable -Path "$PSScriptRoot\..\Artefacts\Unpacked" -AddRequiredModules
New-ConfigurationArtefact -Type Packed -Enable -Path "$PSScriptRoot\..\Artefacts\Packed" -ArtefactName '<ModuleName>.v<ModuleVersion>.zip' -AddRequiredModules
# options for publishing to github/psgallery
#New-ConfigurationPublish -Type PowerShellGallery -FilePath 'C:\Support\Important\PowerShellGalleryAPI.txt' -Enabled:$true
#New-ConfigurationPublish -Type GitHub -FilePath 'C:\Support\Important\GitHubAPI.txt' -UserName 'EvotecIT' -Enabled:$true
} -ExitCode
+583
View File
@@ -0,0 +1,583 @@
# GPOZaurr Release History
## 1.1.6 - 2024.10.17
### What's Changed
* Improve HTML reports with `ScrollX`
* Improve HTML reports by hiding some unnesecary columns
* Added `SizeMB` and `Size` to reports around files/GPOs which could help analyze performance issues
* Other minor HTML fixes
* Fixed typo "Unfortunetly" -> "Unfortunately" by @davidmwilliams in https://github.com/EvotecIT/GPOZaurr/pull/61
* Minor typo correction "incosistent" -> "inconsistent" by @davidmwilliams in https://github.com/EvotecIT/GPOZaurr/pull/60
* Update Invoke.GPOZaurrDuplicate.ps1 by @SamErde in https://github.com/EvotecIT/GPOZaurr/pull/63
* Fix typo and grammar by @SamErde in https://github.com/EvotecIT/GPOZaurr/pull/64
### New Contributors
* @davidmwilliams made their first contribution in https://github.com/EvotecIT/GPOZaurr/pull/61
* @SamErde made their first contribution in https://github.com/EvotecIT/GPOZaurr/pull/63
**Full Changelog**: https://github.com/EvotecIT/GPOZaurr/compare/v1.1.5...v1.1.6
## 1.1.5 - 2024.07.06
* Added or improved help on all functions. by @neztach in https://github.com/EvotecIT/GPOZaurr/pull/56
### New Contributors
* @neztach made their first contribution in https://github.com/EvotecIT/GPOZaurr/pull/56
## 1.1.4 - 2024.06.11
- Small improvements & fixes
## 1.1.3 - 2024.04.16
- Fixes report showing unessecary `WhatIf` [#53](https://github.com/EvotecIT/GPOZaurr/issues/53)
## 1.1.2 - 2024.04.16
- Fixes `Forest` parameter for GPOAnalysis [#54](https://github.com/EvotecIT/GPOZaurr/issues/54)
## 1.1.1 - 2024.02.07
- Force specific DC for `Invoke-GPOZaurrContent`
- Update to Duplicate Object detection for error handling [#52](https://github.com/EvotecIT/GPOZaurr/issues/52)
## 1.1.0 - 2024.04.02
- Improve `Invoke-GPOZaurr` - by adding `GPOName` and `GPOGUID` parameters, providing ability to analyse single/multiple GPOs
- Those parameters are only applicable to `GPOAnalysis`,`GPOBrokenPartially` for now (need to be expanded further)
- Improve `Invoke-GPOZaurrContent` by allowing `GPOName` and `GPOGUID` parameters, providing ability to analyse single/multiple GPOs
- Small verbose message improvement for `Export-GPOZaurrContent`
- Added `Get-GPOZaurrMissingFiles` to detect missing files for GPOs
- Added `Invoke-GPOZaurr` - type `GPOBrokenPartially` to detect missing files for GPOs
- Improve detection of empty GPOs by including check for GPF files
- Added `FilesCount` to `Get-GPOZaurr` to detect number of files in GPO
## 1.0.0 - 2023.09.17
- `Get-GPOZaurrUpdates` fix small typo
- `Get-GPOZaurrAD` improve performance a bit
- `Get-GPOZaurrAD` changed pipeline into standard foreach to improve performance and potential problems for large domains
- Added `Get-GPOZaurrRedirect` to detect if GPO path was redirected (security issue)
- Added `GPORedirect` report type to `Invoke-GPOZaurr` to detect if GPO path was redirected (security issue)
## 0.0.160 - 2023.05.26
- Fixes `Remove-GPOZaurr` limit processing feature which would not stop in some cases
## 0.0.159
- Fixes [#44 Extra spaces in property name 'Id' in Get-GPOZaurrPermissionConsistency?](https://github.com/EvotecIT/GPOZaurr/issues/44)
- Fixes typos [#43](https://github.com/EvotecIT/GPOZaurr/pull/43)
## 0.0.158 - 2023.03.07
- Improve detection of empty OUs by including AD printers.
## 0.0.157 - 2022.12.16
- Resolves *Group Policy Content - GPO Subfolders for Google Chrome* [#38](https://github.com/EvotecIT/GPOZaurr/issues/38)
- Resolves *Filename processing issue* [#37](https://github.com/EvotecIT/GPOZaurr/issues/37)
## 0.0.156 - 2022.12.04
- Fixes `Get-LocalComputerSid - Error: You cannot call a method on a null-valued expression` in some rare cases [#34](https://github.com/EvotecIT/GPOZaurr/issues/34)
## 0.0.155 - 2022.10.27
- Fixes `Invoke-GPOZaurr` SplitReports functionality (again! and again!) [#35](https://github.com/EvotecIT/GPOZaurr/issues/35)
## 0.0.154 - 2022.10.20
- Fixes `Invoke-GPOZaurr` SplitReports functionality (again!) [#33](https://github.com/EvotecIT/GPOZaurr/issues/33)
- Fixes Sysvol property in object returned by Get-GPOZaurrPermissionConsistency contains whitespace [#31](https://github.com/EvotecIT/GPOZaurr/issues/31)
## 0.0.153 - 2022.09.12
- Fixes `Invoke-GPOZaurr` SplitReports functionality that would generate main report anyways.
## 0.0.152 - 2022.09.11
- ️ Improved `Invoke-GPOZaurr` - disable deprecated reports if user doesn't ask for them but asks for all reports to be generated. Those reports are now disabled by default: GPOPermissionsAdministrative,GPOPermissionsRead,GPOPermissionsRoot,GPOPermissionsUnknown
- ️ Improved `Invoke-GPOZaurr` SplitReports functionality to start creating HTML reports every report
- Add `Export-GPOZaurrContent` to simplify quick export of all XML/HTML reports from GPO
## 0.0.151 - 2022.07.26
- ️ Improved `Invoke-GPOZaurr` by adding `SplitReports` functionality. This will allow you to split the reports into multiple files with a single request.
- ️ Improved `Get-GPOZaurrInheritance` with some error handling
## 0.0.150 - 2021.12.06
- ️ Improves `GPOUpdates` report from `Invoke-GPOZaurr` - additional property
## 0.0.149 - 2021.12.05
- ️ Improved docs
## 0.0.148 - 2021.12.05
- ☑ Improved `Invoke-GPOZaurr` - type `GPOOrganizationalUnit` - excludes default redirected computers/users OUs [#30](https://github.com/EvotecIT/GPOZaurr/issues/30)
- ☑ Improved `Get-GPOZaurrOrganizationalUnit` - excludes default redirected computers/users OUs as per [#30](https://github.com/EvotecIT/GPOZaurr/issues/30)
## 0.0.147 - 2021.12.03
- 📃 Updates documentation
## 0.0.146 - 2021.11.02
- ️ Improves `GPOUpdates` report from `Invoke-GPOZaurr` - should be 7 days, not 14 days
## 0.0.145 - 2021.11.02
- ️ Improves `GPOUpdates` report from `Invoke-GPOZaurr` by fixing conditional formatting
## 0.0.144 - 2021.10.24
- ️ Improves `Get-GPOZaurrUpdates`
- Adds `GPOUpdates` report to `Invoke-GPOZaurr`
## 0.0.143 - 2021.10.19
- ️ Improves `Get-GPOZaurrUpdates` with more verbose messages
## 0.0.142 - 2021.10.18
- 🐛 Fixes `Get-GPOZaurrUpdates` when GPO is not linked
## 0.0.141 - 2021.10.17
- 🛑 Removed property from `Get-GPOZaurrAD` - `FunctionalityVersion`
- Added property to `Get-GPOZaurrAD` - `Owner`
- Added ability to choose date ranges for `Get-GPOZaurrAD`
- Added `Get-GPOZaurrUpdates` which shows last gpos added to forest
## 0.0.140 - 2021.08.24
- ☑ Improved `Invoke-GPOZaurr` - type `GPOAnalysis` - added folder redirection type - [tnx PatrickOnGit](https://github.com/EvotecIT/GPOZaurr/pull/24)
## 0.0.139 - 2021.08.19
- ☑ Improved `Invoke-GPOZaurr` - type `GPOOrganizationalUnit` - adding RootLevel information
## 0.0.138 - 2021.08.18
- 🐛 Fix for exclusions using GUID with brackets for Invoke-GPOZaurr `GPOList` and related options
## 0.0.137 - 2021.08.17
- ☑ Improved `Invoke-GPOZaurr` - type `GPOOrganizationalUnit` - moving delete of OU as non-mandatory option
## 0.0.136 - 2021.08.17
- ☑ Improved wording
## 0.0.135 - 2021.08.17
- ☑ Improved exclusions
## 0.0.134 - 2021.08.16
- ☑ Improved exclusions for email use
## 0.0.133 - 2021.08.16
- ☑ Improved exclusions for email use
## 0.0.132 - 2021.08.16
- ☑ Improved exclusions for email use
## 0.0.131 - 2021.08.16
- ☑ Improved exclusions for email use
## 0.0.130 - 2021.08.13
- 💡 Updated HTML to new version of `PSWriteHTML` that fixes complains about `SearchBuilder` option
- ☑ Improved `Invoke-GPOZaurr` - type `GPOOrganizationalUnit` with exclusions
```powershell
Invoke-GPOZaurr -Type GPOOrganizationalUnit -Online -FilePath $PSScriptRoot\Reports\GPOZaurrOU.html -Exclusions @(
'*OU=Production,DC=ad,DC=evotec,DC=pl'
'*OU=Production,DC=ad,DC=evotec,DC=pl'
'*DC=ad,DC=evotec,DC=pl'
)
```
- ☑ Improved `Get-GPOZaurrOrganizationalUnit` with exclusions
```powershell
Get-GPOZaurrOrganizationalUnit -Verbose -ExcludeOrganizationalUnit @(
'*,OU=Production,DC=ad,DC=evotec,DC=pl'
) | Format-Table
```
- ☑ Improved `Remove-GPOZaurrLinkEmptyOU` with exclusions
```powershell
$Exclude = @(
"OU=Groups,OU=Production,DC=ad,DC=evotec,DC=pl"
"OU=Test \, OU,OU=ITR02,DC=ad,DC=evotec,DC=xyz"
)
Remove-GPOZaurrLinkEmptyOU -Verbose -LimitProcessing 3 -WhatIf -ExcludeOrganizationalUnit $Exclude
```
- ☑ Improved `Invoke-GPOZaurr` - type `GPOOwners` with exclusions
```powershell
Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurrGPOOwners.html -Type GPOOwners -Online -Exclusions @(
'EVOTEC\przemyslaw.klys'
)
```
- ☑ Improved `Set-GPOZaurrOwner` with exclusions/approved owners
```powershell
Set-GPOZaurrOwner -Type All -Verbose -LimitProcessing 2 -WhatIf -IncludeDomains 'ad.evotec.xyz' -ApprovedOwner @(
'EVOTEC\przemyslaw.klys'
)
```
- ☑ Improved `Get-GPOZaurrOwner` with exclusions/approved owners
```powershell
$T = Get-GPOZaurrOwner -Verbose -IncludeSysvol -ApprovedOwner @('EVOTEC\przemyslaw.klys')
$T | Format-Table *
```
- ☑ Improved `Get-GPOZaurr` with exclusions and support for GUID, strings
```powershell
$GPOS = Get-GPOZaurr -ExcludeGroupPolicies {
Skip-GroupPolicy -Name 'de14_usr_std'
Skip-GroupPolicy -Name 'de14_usr_std' -DomaiName 'ad.evotec.xyz'
Skip-GroupPolicy -Name 'All | Trusted Websites' #-DomaiName 'ad.evotec.xyz'
'{D39BF08A-87BF-4662-BFA0-E56240EBD5A2}'
'COMPUTERS | Enable Sets'
}
$GPOS | Format-Table -AutoSize *
```
- ☑ Improved `Invoke-GPOZaurr` with exclusions and support for GUID, strings
```powershell
Invoke-GPOZaurr -Type GPOList -Exclusions {
Skip-GroupPolicy -Name 'All | Trusted Websites' -DomaiName 'ad.evotec.xyz'
'{D39BF08A-87BF-4662-BFA0-E56240EBD5A2}'
'COMPUTERS | Enable Sets'
}
```
## 0.0.129 - 2021.08.06
- Added `Get-GPOZaurrOrganizationalUnit` and added `GPOOrganizationalUnit` in `Invoke-GPOZaurr` (preview)
- Added `Remove-GPOZaurrLinkEmptyOU` which allows removing links from Empty OUs (preview)
- Small update to parameter sets for `Set-GPOZaurrOwner`
## 0.0.128 - 2021.05.26
- ☑ Improved `Invoke-GPOZaurrContent` - type `PublicKeyPoliciesCertificates` - added more certificate information
- ☑ Improved `Invoke-GPOZaurr` - type `GPOAnalysis` - added more certificate information
## 0.0.128 Alpha 1 - 2021.05.17
- 🐛 Fixes errors when normalizing properties [#17](https://github.com/EvotecIT/GPOZaurr/issues/17)
## 0.0.127 - 2021.04.15
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Report `GPOList` - moved description closer to statuses
- ☑ Improved `Get-GPOZaurr` - moved description closer to statuses
## 0.0.126 - 2021.04.12
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Report `GPOBlockedInheritance` - hidden DistinguishedName, fixed some small typos
## 0.0.125 - 2021.04.11
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Report `GPOBlockedInheritance` - small fixes
## 0.0.124 - 2021.04.11
- ☑ Added `SearchBuilder` to all tables
- ☑ Automatically joins arrays in tables in `Invoke-GPOZaurr`
- ☑ Improved `Get-GPOZaurrInheritance` with Exclusions and some help information
- ☑ Improved `Invoke-GPOZaurr` with some Exclusions
- ☑ Improved `Invoke-GPOZaurr`
- 🔥 Report `GPOBlockedInheritance` - heavily improved functionality and data
## 0.0.123 - 2021.03.21
- ☑ Fixes `Get-GPOZaurrLinkSummary`
## 0.0.122 - 2021.02.11
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Report `GPOAnalysis` - added `WindowsFirewallRules`,`WindowsFirewallProfiles`,`WindowsFirewallConnectionSecurityAuthentication`,`WindowsFirewallConnectionSecurityRules`
- ☑ Improved `Invoke-GPOZaurrContent` as mentioned above for `GPOAnalysis`
## 0.0.121 - 2021.02.10
- ☑ Improvement to `Get-GPOZaurr` - added description [#13](https://github.com/EvotecIT/GPOZaurr/issues/13)
- ☑ Improvement to `Invoke-GPOZaurr -Type GPOList` - added description [#13](https://github.com/EvotecIT/GPOZaurr/issues/13)
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Report GPOAnalysis - added `FolderRedirection`
- ☑ Report GPOAnalysis - renamed `FolderRedirection` to `FolderRedirectionPolicy`
- ☑ Improved `Invoke-GPOZaurrContent` as mentioned above for `GPOAnalysis`
## 0.0.120 - 2021.02.10
- ☑ Improvement to `Get-GPOZaurr` to warn if there is potential issue with EMPTY (which can happen on non-english system)
- ☑ In such case GPOZaurr will asses EMPTY or not using old method which doesn't detect all EMPTY cases but shouldn't provide false positives
## 0.0.119
- Broken release - weird
## 0.0.118 - 2021.02.09
- ☑ Added information where the report is saved
- ☑ Small improvement to `Get-GPOZaurr` to exlicitly define variable types
## 0.0.117 - 2021.02.09
- ☑ Small fix to `Get-GPOZaurr` to exclude GPOList.xml which is used in offline mode by `Save-GPOZaurrFiles`
## 0.0.116 - 2021.02.08
- ☑ Improved `Remove-GPOZaurrBroken` to handle ObjectClass problem, and removed reduntant check
## 0.0.115 - 2021.02.07
- ☑ Improved `Invoke-GPOZaurr`
- ☑ `GPOList` - clarified some texts, changed 7 days to 30 days as default
- ☑ `NetLogonPermissions` - fixed missing text
- ☑ Fixes `Get-GPOZaurrNetLogon` error on empty Owner - [#9](https://github.com/EvotecIT/GPOZaurr/issues/9)
## 0.0.114 - 2021.01.27
- ☑ Improved `Invoke-GPOZaurr`
- ☑ HTML now uses offline mode by default (no CDN) - increase in size of HTML up to 3MB
- ☑ Using Online switch forces use of CDN - smaller files. For example `Invoke-GPOZaurr -Type GPOList -Online`
- [ ] Improved `Invoke-GPOZaurrSupport`
- ☑ HTML now uses offline mode by default (no CDN) - increase in size of HTML up to 3MB
- ☑ Using Online switch forces use of CDN - smaller files. For example `Invoke-GPOZaurrSupport -Online`
- ☑ Removed parameter Offline, added parameter Online
- ☑ The cmdlet is not really production ready. It's work in progress
## 0.0.113 - 2021.01.25
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Report GPOAnalysis - added WindowsTimeService
- ☑ Improved `Invoke-GPOZaurrContent`
- ☑ Added `WindowsTimeService` type
## 0.0.112 - 2021.01.25
- ☑ Improved `Invoke-GPOZaurr`
## 0.0.111 - 2021.01.24
- ☑ Improved `Invoke-GPOZaurr`
## 0.0.110 - 2021.01.22
- ☑ Improved `Invoke-GPOZaurr`
## 0.0.109 - 2021.01.11
- ☑ Improved `Invoke-GPOZaurr`
## 0.0.108 - 2021.01.11
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Improved `GPOConsistency`
## 0.0.107 - 2021.01.11
- ☑ Improved `Invoke-GPOZaurr`
## 0.0.106 - 2021.01.11
- ☑ Improved `Invoke-GPOZaurrContent`
## 0.0.105 - 2021.01.05
- ☑ Improved `Get-GPOZaurr`
- ☑ Improved report `GPOBrokenLink`
## 0.0.104 - 2021.01.04
- ☑ Improved `Get-GPOZaurrBrokenLink`
- ☑ Improved `Repair-GPOZaurrBrokenLink`
- ☑ Improved `Get-GPOZaurr`
- ☑ Improved report `GPOBrokenLink`
## 0.0.103 - 2021.01.04
- ☑ Improved `Get-GPOZaurr`
- ☑ Added new report `GPOBrokenLink`
- ☑ Added `Get-GPOZaurrBrokenLink`
- ☑ Added `Repair-GPOZaurrBrokenLink`
## 0.0.102 - 2021.01.02
- ☑ Improved `Get-GPOZaurrLink`
- ☑ Supports all links across forest
- ☑ Renamed Linked validate set from `Other` to `OrganizationalUnit`
- ☑ Improved `Get-GPOZaurrLinkSummary`
- ☑ Improved/BugFix `Get-GPOZaurr` to properly detect linked GPOs in sites/cross-domain
- ☑ Improved `Invoke-GPOZaurrPermission`
- ☑ Renamed Linked validate set from `Other` to `OrganizationalUnit`
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Added `GPOLinks` basic list
## 0.0.101 - 23.12.2020
- ☑ Improved `Get-GPOZaurrBroken`
- ☑ It now detects `ObjectClass Issue`
- ☑ Heavily improved performance
- ☑ Removed some useless properties for this particular cmdlet
- ☑ All states: `Not available on SYSVOL`, `Not available in AD`, `Exists`, `Permissions Issue`, `ObjectClass Issue`
- ☑ Improved help
- ☑ Improved `Remove-GPOZaurrBroken`
- ☑ It now deals with `ObjectClass Issue`
- ☑ Heavily improved performance
- ☑ Removed some useless properties for this particular cmdlet
- ☑ Now requires manual type insert AD, SYSVOL or ObjectClass (or all of them). Before it was auto using AD/SYSVOL.
- ☑ Improved help
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Type `GPOList`
- ☑ Renamed `GPOOrphans` to `GPOBroken`
- ☑ Improved `GPOBroken` with `ObjectClass issue`
## 0.0.100 - 21.12.2020
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Type `GPOPermissionsRead`
- ☑ Type `GPOPermissions`
## 0.0.99 - 13.12.2020
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Type `GPOList` - require GPO to be 7 days old for deletion to be proposed
- ☑ Type `GPOPermissions` - one stop for permissions
- ☑ Allows Steps to be chosen via their menu and out-of-order
- ☑ Improved `Remove-GPOZaurr` - added `RequireDays` parameter to prevent deletion of just modified GPOs
- ☑ Added `Get-GPOZaurrPermissionAnalysis`
- ☑ Added `Repair-GPOZaurrPermission`
## 0.0.98 - 10.12.2020
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Type `GPOList` - fixed unexpected ending of cmdlet when error occurs (for example deleted GPO while script is running) which could impact results
- ☑ Other types - small color adjustment
- ☑ Fixed/Improved `Get-GPOZaurr` - fixed unexpected ending of cmdlet when error occurs (for example deleted GPO while script is running), improved code base
- ☑ Improved `Invoke-GPOZaurrSupport`
## 0.0.97 - 07.12.2020
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Type `GPOList` - added more data, did small reorganization
## 0.0.96 - 07.12.2020
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Type `GPOList` - added more data, added Optimization Step
- ☑ Added `Set-GPOZaurrStatus`
- ☑ Added `Optimize-GPOZaurr`
- ☑ Fixed `Invoke-GPOZaurrPermission` which would not remove permission due to internal changes earlier on
- ☑ Small change to `Backup-GPOZaurr`
- ☑ Added support for `Disabled`. It's now possbile to backup `All` (default), `Empty`,`Unlinked`,`Disabled` or a mix of them
- ☑ Removed useless `GPOPath` parameter
## 0.0.95 - 04.12.2020
- ☑ Fix for too big int - [#4](https://github.com/EvotecIT/GPOZaurr/issues/4) - tnx neztach
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Type `GPOList` - added ability for Exclusions
- ☑ All other types, small improvements
- ☑ Added HideSteps, ShowError, ShowWarning -> Disabled Warnings/Errors by default as they tend to show too much information
- ☑ Improved `Remove-GPOZaurr` - added Exclusions
## 0.0.93 - 03.12.2020
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Type `GPOList` reverted charts colors for entries to match colors
- [ ] Added `Skip-GroupPolicy` to use within `Invoke-GPOZaurr`
- ☑ Improved `Invoke-GPOZaurr` with basic support for Exclusions
- ☑ Improved `Get-GPOZaurr` with basic support for Exclusions
- ☑ Improved `Remove-GPOZaurrPermission` error handling
## 0.0.92 - 01.12.2020
- ☑ Improved `Invoke-GPOZaurrSupport`
- ☑ Improved `Invoke-GPOZaurr`
- ☑ Type `GPOList` improved with more data, more problems and clearer information
- ☑ Improved `Remove-GPOZaurr`
- ☑ Added ability do remove disabed GPO
- ☑ Improved `Get-GPOZaurr` detecting more issues, delivering more data
## 0.0.91 - 24.11.2020
- ☑ Improves `Invoke-GPOZaurr` (WIP)
- ☑ Improve Type `GPOPermissionsUnknown`
## 0.0.90 - 23.11.2020
- ☑ Improves `Invoke-GPOZaurr` (WIP)
- ☑ Improves Type `GPODuplicates`
- ☑ Fix for chart color to be RED
- ☑ Add Type `GPOPermissionsUnknown`
- ☑ Improves logic for Data with 0/1 element
- ☑ Improves `Remove-GPOZaurrDuplicateObject` - removed `Confirm` requirement
- ☑ Improves `Get-GPOZaurrNetLogon` with more verbose
- ☑ Improves `Repair-GPOZaurrNetLogonOwner` with more verbose and fix for `LimitProcessing`
## 0.0.89 - 22.11.2020
- ☑ Small update `Add-GPOZaurrPermission`
- ☑ Improves `Invoke-GPOZaurr` (WIP)
- ☑ Added Type `GPOPermissionsAdministrative`
## 0.0.88 - 18.11.2020
- ☑ Fix for `Add-GPOZaurrPermission`
## 0.0.87 - 18.11.2020
- ☑ Improve error handling `Remove-GPOZaurrBroken`
## 0.0.86 - 18.11.2020
- ☑ Improve error handling `Remove-GPOZaurrBroken`
## 0.0.85 - 17.11.2020
- ☑ Improves `Invoke-GPOZaurr` (WIP)
- ☑ Split `NetLogonPermissions` into `NetLogonPermissions` and `NetLogonOwners`
- ☑ Improved type `NetLogonPermissions`
- ☑ Improved type `NetLogonOwners`
- ☑ Improves `Get-GPOZaurrFiles`
- ☑ Improves `Get-GPOZaurrNetLogon`
- ☑ Fix for `Get-GPOZaurrNetLogon`
## 0.0.84 - 16.11.2020
- ☑ Improves `Invoke-GPOZaurr` (WIP)
- ☑ Type `NetLogonPermissions`
- ☑ Fix for `Get-GPOZaurrNetLogon`
## 0.0.83 - 14.11.2020
- ☑ Improves `Invoke-GPOZaurr` (WIP)
- ☑ Fix for wrong ActionRequired count
## 0.0.82 - 14.11.2020
- ☑ Added `Get-GPOZaurrPermissionIssue` to detect permission issue with no rights
- ☑ Improves `Invoke-GPOZaurr` (WIP)
- ☑ Type `GPOPermissionsRead` improved detection of problems with low permissions
## 0.0.81 - 12.11.2020
- ☑ Fix for `Set-GPOZaurrOwner` in case of missing permissions to not throw errors
- ☑ Improves `Invoke-GPOZaurr` (WIP)
- ☑ Type `GPOPermissionsRead` added
## 0.0.80 - 12.11.2020
- ☑ Improves `Invoke-GPOZaurr` (WIP)
- ☑ Type `GPOOrphans` clearer options, updated texts, split per domain
- ☑ Type `GPOOwners` clearer options, updated texts, split per domain
- ☑ Improves `Add-GPOZaurrPermission`
- ☑ Fixes LimitProcessing to work correctly
- ☑ Added `All` to process all GPOs
- ☑ Fixes `Remove-GPOZaurrPermission`
- ☑ Improves `Set-GPOZaurrOwner`
- ☑ Added `Force` to force `GPO Owner` to any principal (normally only Domain Admins)
## 0.0.79 - 10.11.2020
- Improved `Invoke-GPOZaurr` - type `GPOOrphans`
## 0.0.78 - 10.11.2020
- Improved `Remove-GPOZaurrBroken` more verbose
- Improved `Get-GPOZaurrBroken` more verbose
- Improved `Invoke-GPOZaurr` - type `GPOOrphans`
- Improved `Invoke-GPOZaurr` - type `GPOList` - needs more work
- Improved `Get-GPOZaurr` with better detection of Empty Policies (needs testing)
## 0.0.77 - 9.11.2020
- Improved `Invoke-GPOZaurr` (WIP)
## 0.0.76 - 8.11.2020
- Improved `Get-GPOZaurrNetLogon` to better handle errors
## 0.0.75 - 8.11.2020
- Improved `Get-GPOZaurrPermissionConsistency` to stop checking consistency if path doesn't exists
## 0.0.74 - 8.11.2020
- Improved `Invoke-GPOZaurr` (WIP)
## 0.0.73 - 7.11.2020
- Improved `Invoke-GPOZaurr` (WIP)
- Improved `Get-GPOZaurr`
## 0.0.72 - 6.11.2020
- Improved `Invoke-GPOZaurr` (WIP)
## 0.0.71 - 3.11.2020
- Improved `Invoke-GPOZaurr` (WIP)
## 0.0.70 - 29.10.2020
- Added `Get-GPOZaurrDuplicateObject`
- Added `Remove-GPOZaurrDuplicateObject`
## 0.0.69 - 29.10.2020
- Improved `Invoke-GPOZaurr` (WIP)
- Improved `Get-GPOZaurrNetLogon`
- Improved `Get-GPOZaurrOwner`
- Improved `Set-GPOZaurrOwner`
- Added `Repair-GPOZaurrNetLogonOwner`
- Improved `Invoke-GPOZaurr` (WIP)
## 0.0.68 - 28.10.2020
- Renamed `Show-GPOZaurr` to `Invoke-GPOZaurr`
- Renamed `Invoke-GPOZaurr` to `Invoke-GPOZaurrContent`
- Improvements to `Get-GPOZaurrPermissionConsistency` - don't check for inherited permissions if top level ones are inconsistent
- Improved `Invoke-GPOZaurr` (WIP)
## 0.0.67 - 22.10.2020
- Improved `Show-GPOZaurr` (WIP)
## 0.0.66 - 22.10.2020
- Improved `Show-GPOZaurr` (WIP)
## 0.0.65 - 22.10.2020
- Improved `Show-GPOZaurr` (WIP)
## 0.0.64 - 21.10.2020
- Renamed `Remove-GPOZaurrOrphaned` to `Remove-GPOZaurrBroken` keeping it as an alias
- Renamed `Get-GPOZaurrSysvol` to `Get-GPOZaurrBroken` keeping it as an alias
- Improved `Show-GPOZaurr` (WIP)
## 0.0.63 - 19.10.2020
- Renamed `Invoke-GPOZaurrContent` back to `Invoke-GPOZaurr`
- Added `Show-GPOZaurr` (WIP)
- Added `OutputType`,`OutputType`,`Open`,`Online` parameters to `Invoke-GPOZaurr`
- Added `Get-GPOZaurrNetLogon`
- Improved `Get-GPOZaurrOwner`
- Fixes `Get-GPOZaurrSysvol`
## 0.0.62 - 14.10.2020
- Renamed `Invoke-GPOZaurr` to `Invoke-GPOZaurrContent` - I want to use `Invoke-GPOZaurr` for something else
- Improvements to `Get-GPOZaurrPermissionConsistency` for GPOs without SYSVOL to be reported properly
- Added `Get-GPOZaurrPermissionRoot`
- Renamed `Remove-GPOZaurrOrphanedSysvolFolders` to `Remove-GPOZaurrOrphaned`
- Improved `Remove-GPOZaurrOrphaned` to deal with orphaned folders but also orphaned AD GPO (No sysvol data)
- Improved `Get-GPOZaurrSysVol` to detect orphaned SYSVOL or AD GPO objects
- Improved `Get-GPOZaurrSysVol` to detect permissions issue when reading AD GPO objects
- Added `Get-GPOZaurrPermissionRoot` to show which users/groups have control over all GPOs (allowed to create/modify)
- Improved `Get-GPOZaurrPermissionSummary` to include `Get-GPOZaurrPermissionRoot` custom permissions
- Updated `Remove-GPOZaurrPermission`
- Updated `Get-GpoZaurrPermission`
- Updated `Get-GPOZaurrFiles` to better handle access issue
- Reversed parameters `Get-GPOZaurrFiles` from `Limited` to `ExtendedMetaData` and fixed missing columns
## 0.0.61 - 31.08.2020
- Improvement to `Get-GPOZaurrPermissionSummary`
- Fixes to `ConvertFrom-CSExtension`
- Fixes to `Find-CSExtension`
## 0.0.59 - 26.08.2020
- Improvement to `Get-GPOZaurrPermissionSummary`
## 0.0.58 - 26.08.2020
- Improvement to `Get-GPOZaurrPermissionSummary`
## 0.0.57 - 26.08.2020
- Improvement to `Get-GPOZaurrPermissionSummary`
## 0.0.56 - 26.08.2020
- Added `Get-GPOZaurrPermissionSummary`
## 0.0.55 - 17.08.2020
- Improved `Get-GPOZaurrInheritance`
## 0.0.54 - 16.08.2020
- Added `Invoke-GPOZaurrSupport` (WIP)
- Added `ConvertFrom-CSExtension`
- Added `Find-CSExtension`
- Added `Get-GPOZaurrInheritance`
## 0.0.53 - 16.08.2020
- Bad release
## 0.0.52 - 16.08.2020
- Bad release
## 0.0.51 - 2.08.2020
- Updates to `Invoke-GPOZaurr` - still work in progress
- Added `Get-GPOZaurrSysvolDFSR`
- Added `Clear-GPOZaurrSysvolDFSR` (requires testing)
## 0.0.50 - 29.07.2020
- Updates to couple of commands
## 0.0.49 - 23.07.2020
- Hidden files were skipped - and people do crazy things with them
## 0.0.48 - 21.07.2020
- Added `Get-GPOZaurrFilesPolicyDefinition`
- Updates to `Invoke-GPOZaurr` - still work in progress
- Updates to `Get-GPOZaurrFiles` - still work in progress
- Updates to `Remove-GPOZaurrOrphanedSysvolFolders` with backup and support for domains
- Module will now be signed
## 0.0.47 - 29.06.2020
- Update to `Get-GPOZaurrAD` for better error reporting
- Updates to `Invoke-GPOZaurr` - still work in progress
## 0.0.46 - 28.06.2020
- Additional protection for `Get-GPOZaurrAD` for CNF duplicates
- Update to `Save-GPOZaurrFiles`
- Added `Invoke-GPOZaurr` (alias: `Find-GPO`) (heavy work in progress)
## 0.0.45 - 26.06.2020
- During publishing ADEssentials required functions are now merged to prevent cyclic dependency bug [Using ModuleSpec syntax in RequiredModules causes incorrect "cyclic dependency" failures](https://github.com/PowerShell/PowerShell/issues/2607)
## 0.0.44 - 24.06.2020
- Improvement to `Get-GPOZaurrLinkSummary`
## 0.0.43 - 21.06.2020
- Added `Get-GPOZaurrFiles` to list files on NETLOGON/SYSVOL shares with a lot of details
## 0.0.42 - 19.06.2020
- Fix for `Get-GPOZaurrLink` and `SearchBase` parameter
- Fix for `Get-GPOZaurrLink` - canonical link Trim() throwing errors if empty
## 0.0.41 - 18.06.2020
- Added paramerter `SkipDuplicates` to `Invoke-GPOZaurrPermission` which prevents applying permissions over and over again if 1 GPO is linked to a multiple OU's within another OU
## 0.0.40 - 18.06.2020
- Fix for error `Get-GPOZaurrLink` - same issue as described on my [earlier blog - Get-ADObject : The server has returned the following error: invalid enumeration context.](https://evotec.xyz/get-adobject-the-server-has-returned-the-following-error-invalid-enumeration-context/).
- `WARNING: Get-GPOZaurrLink - Processing error The server has returned the following error: invalid enumeration context.`
- `WARNING: Get-GPOZaurrLink - Processing error A referral was returned from the server`
- Added `SkipDuplicates` for `Get-GPOZaurrLink`
## 0.0.39 - 17.06.2020
- Updates to `Invoke-GPOZaurrPermission` with new parameter `LimitAdministrativeGroupsToDomain`
- This will get administrative based on IncludeDomains if given. It means that if GPO has Domain admins added from multiple domains it will only find one, and remove all other Domain Admins (if working with Domain Admins that is)
## 0.0.38 - 17.06.2020
- Update to Get-PrivGPOZaurrLink which would cause problems to `Invoke-GPOZaurrPermission` if it would be run without Administrative permission and GPO wouldn't be accessible for that user
## 0.0.37 - 16.06.2020
- Updates to `Invoke-GPOZaurrPermission` with new parameterset `Level`
- Updates to `Get-GPOZaurrLinkSummary`
## 0.0.36 - 15.06.2020
- Initial release
+73
View File
@@ -0,0 +1,73 @@
---
external help file: GPOZaurr-help.xml
Module Name: GPOZaurr
online version:
schema: 2.0.0
---
# Export-GPOZaurrContent
## SYNOPSIS
Saves GPOs to XML or HTML files.
## SYNTAX
```
Export-GPOZaurrContent [-FolderOutput] <String> [[-ReportType] <String>] [<CommonParameters>]
```
## DESCRIPTION
Saves GPOs to XML or HTML files.
## EXAMPLES
### EXAMPLE 1
```
An example
```
## PARAMETERS
### -FolderOutput
The folder where the GPOs will be saved.
```yaml
Type: String
Parameter Sets: (All)
Aliases: Path
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ReportType
The type of report to generate.
Valid values are XML or HTML.
Default is XML.
```yaml
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: XML
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
## OUTPUTS
## NOTES
General notes
## RELATED LINKS
+152 -146
View File
@@ -8,7 +8,8 @@ schema: 2.0.0
# Get-GPOZaurr
## SYNOPSIS
{{ Fill in the Synopsis }}
Gets information about all Group Policies.
Similar to what Get-GPO provides by default.
## SYNTAX
@@ -16,121 +17,52 @@ schema: 2.0.0
Get-GPOZaurr [[-ExcludeGroupPolicies] <ScriptBlock>] [[-GPOName] <String>] [[-GPOGuid] <String>]
[[-Type] <String[]>] [[-Forest] <String>] [[-ExcludeDomains] <String[]>] [[-IncludeDomains] <String[]>]
[[-ExtendedForestInformation] <IDictionary>] [[-GPOPath] <String[]>] [-PermissionsOnly] [-OwnerOnly]
[-Limited] [-ReturnObject] [[-ADAdministrativeGroups] <IDictionary>] [<CommonParameters>]
[-Limited] [[-ADAdministrativeGroups] <IDictionary>] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
Gets information about all Group Policies.
Similar to what Get-GPO provides by default.
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
### EXAMPLE 1
```
$GPOs = Get-GPOZaurr
```
{{ Add example description here }}
$GPOs | Format-Table DisplayName, Owner, OwnerSID, OwnerType
### EXAMPLE 2
```
$GPO = Get-GPOZaurr -GPOName 'ALL | Allow use of biometrics'
```
$GPO | Format-List *
### EXAMPLE 3
```
$GPOS = Get-GPOZaurr -ExcludeGroupPolicies {
```
Skip-GroupPolicy -Name 'de14_usr_std'
Skip-GroupPolicy -Name 'de14_usr_std' -DomaiName 'ad.evotec.xyz'
Skip-GroupPolicy -Name 'All | Trusted Websites' #-DomaiName 'ad.evotec.xyz'
'{D39BF08A-87BF-4662-BFA0-E56240EBD5A2}'
'COMPUTERS | Enable Sets'
}
$GPOS | Format-Table -AutoSize *
## PARAMETERS
### -ADAdministrativeGroups
{{ Fill ADAdministrativeGroups Description }}
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 9
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeGroupPolicies
{{ Fill ExcludeGroupPolicies Description }}
Marks the GPO as excluded from the list.
```yaml
Type: ScriptBlock
Parameter Sets: (All)
Aliases:
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 7
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -GPOGuid
{{ Fill GPOGuid Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: GUID, GPOID
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -GPOName
{{ Fill GPOName Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
@@ -138,14 +70,106 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -GPOPath
{{ Fill GPOPath Description }}
### -GPOName
Provide a GPOName to get information about a specific GPO.
```yaml
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -GPOGuid
Provide a GPOGuid to get information about a specific GPO.
```yaml
Type: String
Parameter Sets: (All)
Aliases: GUID, GPOID
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Type
Choose a specific type of GPO.
Options are: 'Empty', 'Unlinked', 'Disabled', 'NoApplyPermission', 'All'.
Default is All.
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
Include only specific domains, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 7
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 8
Default value: None
@@ -153,53 +177,23 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
### -GPOPath
Define GPOPath where the XML files are located to be analyzed instead of asking Active Directory
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Limited
{{ Fill Limited Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -OwnerOnly
{{ Fill OwnerOnly Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Position: 9
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -PermissionsOnly
{{ Fill PermissionsOnly Description }}
Only show permissions, by default all information is shown
```yaml
Type: SwitchParameter
@@ -208,13 +202,13 @@ Aliases:
Required: False
Position: Named
Default value: None
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -ReturnObject
{{ Fill ReturnObject Description }}
### -OwnerOnly
only show owner information, by default all information is shown
```yaml
Type: SwitchParameter
@@ -223,22 +217,36 @@ Aliases:
Required: False
Position: Named
Default value: None
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -Type
{{ Fill Type Description }}
### -Limited
Provide limited output without analyzing XML data
```yaml
Type: String[]
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Accepted values: Empty, Unlinked, Disabled, All
Required: False
Position: 3
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -ADAdministrativeGroups
Ability to provide ADAdministrativeGroups from different function to speed up processing
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 10
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
@@ -249,11 +257,9 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
General notes
## RELATED LINKS
+65
View File
@@ -15,18 +15,21 @@ schema: 2.0.0
### Default (Default)
```
Get-GPOZaurrAD [-Forest <String>] [-ExcludeDomains <String[]>] [-IncludeDomains <String[]>]
[-DateFrom <DateTime>] [-DateTo <DateTime>] [-DateRange <String>] [-DateProperty <String[]>]
[-ExtendedForestInformation <IDictionary>] [<CommonParameters>]
```
### GPOName
```
Get-GPOZaurrAD [-GPOName <String>] [-Forest <String>] [-ExcludeDomains <String[]>] [-IncludeDomains <String[]>]
[-DateFrom <DateTime>] [-DateTo <DateTime>] [-DateRange <String>] [-DateProperty <String[]>]
[-ExtendedForestInformation <IDictionary>] [<CommonParameters>]
```
### GPOGUID
```
Get-GPOZaurrAD [-GPOGuid <String>] [-Forest <String>] [-ExcludeDomains <String[]>] [-IncludeDomains <String[]>]
[-DateFrom <DateTime>] [-DateTo <DateTime>] [-DateRange <String>] [-DateProperty <String[]>]
[-ExtendedForestInformation <IDictionary>] [<CommonParameters>]
```
@@ -44,6 +47,68 @@ PS C:\> {{ Add example code here }}
## PARAMETERS
### -DateFrom
{{ Fill DateFrom Description }}
```yaml
Type: DateTime
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -DateProperty
{{ Fill DateProperty Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Accepted values: WhenCreated, WhenChanged
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -DateRange
{{ Fill DateRange Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases:
Accepted values: PastHour, CurrentHour, PastDay, CurrentDay, PastMonth, CurrentMonth, PastQuarter, CurrentQuarter, Last14Days, Last21Days, Last30Days, Last7Days, Last3Days, Last1Days
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -DateTo
{{ Fill DateTo Description }}
```yaml
Type: DateTime
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
+84 -94
View File
@@ -8,32 +8,51 @@ schema: 2.0.0
# Get-GPOZaurrBroken
## SYNOPSIS
{{ Fill in the Synopsis }}
Detects broken or otherwise damaged Group Policies
## SYNTAX
```
Get-GPOZaurrBroken [[-Forest] <String>] [[-ExcludeDomains] <String[]>] [[-ExcludeDomainControllers] <String[]>]
[[-IncludeDomains] <String[]>] [[-IncludeDomainControllers] <String[]>] [-SkipRODC] [[-GPOs] <Array>]
[[-IncludeDomains] <String[]>] [[-IncludeDomainControllers] <String[]>] [-SkipRODC]
[[-ExtendedForestInformation] <IDictionary>] [-VerifyDomainControllers] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
Detects broken or otherwise damaged Group Policies providing insight whether GPO exists in both AD and SYSVOL.
It provides few statuses:
- Permissions issue - means account couldn't read GPO due to permissions
- ObjectClass issue - means that ObjectClass is of type Container, rather than expected groupPolicyContainer
- Not available on SYSVOL - means SYSVOL data is missing, yet AD metadata is available
- Not available in AD - means AD metadata is missing, yet SYSVOL data is available
- Exists - means AD metadata and SYSVOL data are available
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
### EXAMPLE 1
```
Get-GPOZaurrBroken -Verbose | Format-Table
```
{{ Add example description here }}
## PARAMETERS
### -ExcludeDomainControllers
{{ Fill ExcludeDomainControllers Description }}
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: String[]
@@ -47,8 +66,9 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
### -ExcludeDomainControllers
Exclude specific domain controllers, by default there are no exclusions, as long as VerifyDomainControllers switch is enabled.
Otherwise this parameter is ignored.
```yaml
Type: String[]
@@ -56,14 +76,61 @@ Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
Include only specific domains, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomainControllers
Include only specific domain controllers, by default all domain controllers are included, as long as VerifyDomainControllers switch is enabled.
Otherwise this parameter is ignored.
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: DomainControllers
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -SkipRODC
Skip Read-Only Domain Controllers.
By default all domain controllers are included.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: IDictionary
@@ -77,83 +144,8 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -GPOs
{{ Fill GPOs Description }}
```yaml
Type: Array
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomainControllers
{{ Fill IncludeDomainControllers Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: DomainControllers
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -SkipRODC
{{ Fill SkipRODC Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -VerifyDomainControllers
{{ Fill VerifyDomainControllers Description }}
Forces cmdlet to check GPO Existance on Domain Controllers rather then per domain
```yaml
Type: SwitchParameter
@@ -162,7 +154,7 @@ Aliases:
Required: False
Position: Named
Default value: None
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
@@ -172,11 +164,9 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
General notes
## RELATED LINKS
+107
View File
@@ -0,0 +1,107 @@
---
external help file: GPOZaurr-help.xml
Module Name: GPOZaurr
online version:
schema: 2.0.0
---
# Get-GPOZaurrBrokenLink
## SYNOPSIS
Finds any GPO link that doesn't have a matching GPO (already removed GPO).
## SYNTAX
```
Get-GPOZaurrBrokenLink [[-Forest] <String>] [[-ExcludeDomains] <String[]>] [[-IncludeDomains] <String[]>]
[[-ExtendedForestInformation] <IDictionary>] [<CommonParameters>]
```
## DESCRIPTION
Finds any GPO link that doesn't have a matching GPO (already removed GPO).
## EXAMPLES
### EXAMPLE 1
```
Get-GPOZaurrBrokenLink -Verbose | Format-Table -AutoSize *
```
### EXAMPLE 2
```
Get-GPOZaurrBrokenLink -Verbose -IncludeDomains ad.evotec.pl | Format-Table -AutoSize *
```
## PARAMETERS
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
Include only specific domains, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
## OUTPUTS
## NOTES
General notes
## RELATED LINKS
+98 -51
View File
@@ -8,32 +8,96 @@ schema: 2.0.0
# Get-GPOZaurrInheritance
## SYNOPSIS
{{ Fill in the Synopsis }}
Short description
## SYNTAX
```
Get-GPOZaurrInheritance [-IncludeBlockedObjects] [-OnlyBlockedInheritance] [[-Forest] <String>]
Get-GPOZaurrInheritance [-IncludeBlockedObjects] [-OnlyBlockedInheritance] [-IncludeExcludedObjects]
[-IncludeGroupPoliciesForBlockedObjects] [[-Exclusions] <String[]>] [[-Forest] <String>]
[[-ExcludeDomains] <String[]>] [[-IncludeDomains] <String[]>] [[-ExtendedForestInformation] <IDictionary>]
[<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
Long description
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
### EXAMPLE 1
```
$Objects = Get-GPOZaurrInheritance -IncludeBlockedObjects -IncludeExcludedObjects -OnlyBlockedInheritance -Exclusions $ExcludedOU
```
{{ Add example description here }}
$Objects | Format-Table
## PARAMETERS
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
### -IncludeBlockedObjects
Include OU's with blocked inheritance.
Default disabled
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -OnlyBlockedInheritance
Show only OU's with blocked inheritance
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeExcludedObjects
Show excluded objets.
Default disabled
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeGroupPoliciesForBlockedObjects
{{ Fill IncludeGroupPoliciesForBlockedObjects Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -Exclusions
Provide exclusions for OU's approved by IT.
You can provide OU by canonical name or distinguishedName
```yaml
Type: String[]
@@ -47,11 +111,26 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: IDictionary
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
@@ -62,38 +141,8 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeBlockedObjects
{{ Fill IncludeBlockedObjects Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
Include only specific domains, by default whole forest is scanned
```yaml
Type: String[]
@@ -101,22 +150,22 @@ Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 2
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -OnlyBlockedInheritance
{{ Fill OnlyBlockedInheritance Description }}
### -ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: SwitchParameter
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
@@ -127,11 +176,9 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
General notes
## RELATED LINKS
+62 -9
View File
@@ -12,24 +12,32 @@ schema: 2.0.0
## SYNTAX
### Linked (Default)
```
Get-GPOZaurrLink [-Linked <String[]>] [-Limited] [-SkipDuplicates] [-GPOCache <IDictionary>] [-Forest <String>]
[-ExcludeDomains <String[]>] [-IncludeDomains <String[]>] [-ExtendedForestInformation <IDictionary>]
[-AsHashTable] [-Summary] [<CommonParameters>]
```
### ADObject
```
Get-GPOZaurrLink -ADObject <ADObject[]> [-Limited] [-SkipDuplicates] [-GPOCache <IDictionary>]
[-Forest <String>] [-ExcludeDomains <String[]>] [-IncludeDomains <String[]>]
[-ExtendedForestInformation <IDictionary>] [<CommonParameters>]
[-ExtendedForestInformation <IDictionary>] [-AsHashTable] [-Summary] [<CommonParameters>]
```
### Filter
```
Get-GPOZaurrLink [-Filter <String>] [-SearchBase <String>] [-SearchScope <ADSearchScope>] [-Limited]
[-SkipDuplicates] [-GPOCache <IDictionary>] [-Forest <String>] [-ExcludeDomains <String[]>]
[-IncludeDomains <String[]>] [-ExtendedForestInformation <IDictionary>] [<CommonParameters>]
[-IncludeDomains <String[]>] [-ExtendedForestInformation <IDictionary>] [-AsHashTable] [-Summary]
[<CommonParameters>]
```
### Linked
### Site
```
Get-GPOZaurrLink -Linked <String> [-Limited] [-SkipDuplicates] [-GPOCache <IDictionary>] [-Forest <String>]
[-ExcludeDomains <String[]>] [-IncludeDomains <String[]>] [-ExtendedForestInformation <IDictionary>]
Get-GPOZaurrLink [-Site <String[]>] [-GPOCache <IDictionary>] [-Forest <String>] [-ExcludeDomains <String[]>]
[-IncludeDomains <String[]>] [-ExtendedForestInformation <IDictionary>] [-AsHashTable] [-Summary]
[<CommonParameters>]
```
@@ -62,6 +70,21 @@ Accept pipeline input: True (ByPropertyName, ByValue)
Accept wildcard characters: False
```
### -AsHashTable
{{ Fill AsHashTable Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
@@ -157,7 +180,7 @@ Accept wildcard characters: False
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Parameter Sets: Linked, ADObject, Filter
Aliases:
Required: False
@@ -171,12 +194,12 @@ Accept wildcard characters: False
{{ Fill Linked Description }}
```yaml
Type: String
Type: String[]
Parameter Sets: Linked
Aliases:
Accepted values: Root, DomainControllers, Site, Other
Accepted values: All, Root, DomainControllers, Site, OrganizationalUnit
Required: True
Required: False
Position: Named
Default value: None
Accept pipeline input: False
@@ -214,9 +237,39 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -Site
{{ Fill Site Description }}
```yaml
Type: String[]
Parameter Sets: Site
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -SkipDuplicates
{{ Fill SkipDuplicates Description }}
```yaml
Type: SwitchParameter
Parameter Sets: Linked, ADObject, Filter
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Summary
{{ Fill Summary Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
+138
View File
@@ -0,0 +1,138 @@
---
external help file: GPOZaurr-help.xml
Module Name: GPOZaurr
online version:
schema: 2.0.0
---
# Get-GPOZaurrOrganizationalUnit
## SYNOPSIS
{{ Fill in the Synopsis }}
## SYNTAX
```
Get-GPOZaurrOrganizationalUnit [[-Forest] <String>] [[-ExcludeDomains] <String[]>]
[[-IncludeDomains] <String[]>] [[-ExtendedForestInformation] <IDictionary>] [[-Option] <String[]>]
[[-ExcludeOrganizationalUnit] <String[]>] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
```
{{ Add example description here }}
## PARAMETERS
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeOrganizationalUnit
{{ Fill ExcludeOrganizationalUnit Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: ExcludeOU, Exclusions
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Option
{{ Fill Option Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Accepted values: OK, Unlink, Delete
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
## RELATED LINKS
+18 -3
View File
@@ -16,21 +16,21 @@ Gets owners of GPOs from Active Directory and SYSVOL
```
Get-GPOZaurrOwner [-IncludeSysvol] [-SkipBroken] [-Forest <String>] [-ExcludeDomains <String[]>]
[-IncludeDomains <String[]>] [-ExtendedForestInformation <IDictionary>]
[-ADAdministrativeGroups <IDictionary>] [<CommonParameters>]
[-ADAdministrativeGroups <IDictionary>] [-ApprovedOwner <String[]>] [<CommonParameters>]
```
### GPOName
```
Get-GPOZaurrOwner [-GPOName <String>] [-IncludeSysvol] [-SkipBroken] [-Forest <String>]
[-ExcludeDomains <String[]>] [-IncludeDomains <String[]>] [-ExtendedForestInformation <IDictionary>]
[-ADAdministrativeGroups <IDictionary>] [<CommonParameters>]
[-ADAdministrativeGroups <IDictionary>] [-ApprovedOwner <String[]>] [<CommonParameters>]
```
### GPOGUID
```
Get-GPOZaurrOwner [-GPOGuid <String>] [-IncludeSysvol] [-SkipBroken] [-Forest <String>]
[-ExcludeDomains <String[]>] [-IncludeDomains <String[]>] [-ExtendedForestInformation <IDictionary>]
[-ADAdministrativeGroups <IDictionary>] [<CommonParameters>]
[-ADAdministrativeGroups <IDictionary>] [-ApprovedOwner <String[]>] [<CommonParameters>]
```
## DESCRIPTION
@@ -187,6 +187,21 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -ApprovedOwner
Ability to provide different owner (non administrative that still is approved for use)
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Exclusion, Exclusions
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
+106
View File
@@ -0,0 +1,106 @@
---
external help file: GPOZaurr-help.xml
Module Name: GPOZaurr
online version:
schema: 2.0.0
---
# Get-GPOZaurrPermissionAnalysis
## SYNOPSIS
{{ Fill in the Synopsis }}
## SYNTAX
```
Get-GPOZaurrPermissionAnalysis [[-Forest] <String>] [[-ExcludeDomains] <String[]>]
[[-IncludeDomains] <String[]>] [[-Permissions] <Array>] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
```
{{ Add example description here }}
## PARAMETERS
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Permissions
{{ Fill Permissions Description }}
```yaml
Type: Array
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
## RELATED LINKS
+83 -81
View File
@@ -8,7 +8,7 @@ schema: 2.0.0
# Get-GPOZaurrSysvolDFSR
## SYNOPSIS
{{ Fill in the Synopsis }}
Gets DFSR information from the SYSVOL DFSR
## SYNTAX
@@ -20,21 +20,36 @@ Get-GPOZaurrSysvolDFSR [[-Forest] <String>] [[-ExcludeDomains] <String[]>]
```
## DESCRIPTION
{{ Fill in the Description }}
Gets DFSR information from the SYSVOL DFSR
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
### EXAMPLE 1
```
$DFSR = Get-GPOZaurrSysvolDFSR
```
{{ Add example description here }}
$DFSR | Format-Table *
## PARAMETERS
### -ExcludeDomainControllers
{{ Fill ExcludeDomainControllers Description }}
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: String[]
@@ -48,74 +63,15 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
### -ExcludeDomainControllers
Exclude specific domain controllers, by default there are no exclusions, as long as VerifyDomainControllers switch is enabled.
Otherwise this parameter is ignored.
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomainControllers
{{ Fill IncludeDomainControllers Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: DomainControllers
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 3
Default value: None
@@ -123,11 +79,58 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -SearchDFSR
{{ Fill SearchDFSR Description }}
### -IncludeDomains
Include only specific domains, by default whole forest is scanned
```yaml
Type: String
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomainControllers
Include only specific domain controllers, by default all domain controllers are included, as long as VerifyDomainControllers switch is enabled.
Otherwise this parameter is ignored.
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: DomainControllers
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -SkipRODC
Skip Read-Only Domain Controllers.
By default all domain controllers are included.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
@@ -138,17 +141,18 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -SkipRODC
{{ Fill SkipRODC Description }}
### -SearchDFSR
Define DFSR Share.
By default it uses SYSVOL Share
```yaml
Type: SwitchParameter
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Position: 7
Default value: SYSVOL Share
Accept pipeline input: False
Accept wildcard characters: False
```
@@ -158,11 +162,9 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
General notes
## RELATED LINKS
+178
View File
@@ -0,0 +1,178 @@
---
external help file: GPOZaurr-help.xml
Module Name: GPOZaurr
online version:
schema: 2.0.0
---
# Get-GPOZaurrUpdates
## SYNOPSIS
Gets the list of GPOs created or updated in the last X number of days.
## SYNTAX
### DateRange (Default)
```
Get-GPOZaurrUpdates [-Forest <String>] [-ExcludeDomains <String[]>] [-IncludeDomains <String[]>]
-DateRange <String> [-DateProperty <String[]>] [-ExtendedForestInformation <IDictionary>] [<CommonParameters>]
```
### Dates
```
Get-GPOZaurrUpdates [-Forest <String>] [-ExcludeDomains <String[]>] [-IncludeDomains <String[]>]
-DateFrom <DateTime> -DateTo <DateTime> [-DateProperty <String[]>] [-ExtendedForestInformation <IDictionary>]
[<CommonParameters>]
```
## DESCRIPTION
Gets the list of GPOs created or updated in the last X number of days.
## EXAMPLES
### EXAMPLE 1
```
Get-GPOZaurrUpdates -DateRange Last14Days -DateProperty WhenCreated, WhenChanged -Verbose -IncludeDomains 'ad.evotec.pl' | Format-List
```
### EXAMPLE 2
```
Get-GPOZaurrUpdates -DateRange Last14Days -DateProperty WhenCreated -Verbose | Format-Table
```
## PARAMETERS
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
Include only specific domains, by default whole forest is scanned
ą
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -DateFrom
Provide a date from which to start the search, by default the last X days are used
```yaml
Type: DateTime
Parameter Sets: Dates
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -DateTo
Provide a date to which to end the search, by default the last X days are used
```yaml
Type: DateTime
Parameter Sets: Dates
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -DateRange
Provide a date range to search for, by default the last X days are used
```yaml
Type: String
Parameter Sets: DateRange
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -DateProperty
Choose a date property.
It can be WhenCreated or WhenChanged or both.
By default whenCreated is used for comparison purposes
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: WhenCreated
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
## OUTPUTS
## NOTES
General notes
## RELATED LINKS
+130 -89
View File
@@ -8,62 +8,57 @@ schema: 2.0.0
# Invoke-GPOZaurr
## SYNOPSIS
{{ Fill in the Synopsis }}
Single cmdlet that provides 360 degree overview of Group Policies in Active Directory Forest.
## SYNTAX
```
Invoke-GPOZaurr [[-ExcludeGroupPolicies] <ScriptBlock>] [-FilePath <String>] [[-Type] <String[]>] [-PassThru]
[-HideHTML] [-HideSteps] [-ShowError] [-ShowWarning] [-Forest <String>] [-ExcludeDomains <String[]>]
[-IncludeDomains <String[]>] [<CommonParameters>]
Invoke-GPOZaurr [[-Exclusions] <Object>] [-FilePath <String>] [[-Type] <String[]>] [-PassThru] [-HideHTML]
[-HideSteps] [-ShowError] [-ShowWarning] [-Forest <String>] [-ExcludeDomains <String[]>]
[-IncludeDomains <String[]>] [-Online] [-SplitReports] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
Single cmdlet that provides 360 degree overview of Group Policies in Active Directory Forest with ability to pick reports and export to HTML.
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
### EXAMPLE 1
```
Invoke-GPOZaurr
```
{{ Add example description here }}
### EXAMPLE 2
```
Invoke-GPOZaurr -Type GPOOrganizationalUnit -Online -FilePath $PSScriptRoot\Reports\GPOZaurrOU.html -Exclusions @(
```
'*OU=Production,DC=ad,DC=evotec,DC=pl'
)
## PARAMETERS
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
### -Exclusions
Allows to mark as excluded some Group Policies or Organizational Units depending on type.
Can be a scriptblock or array depending on supported way by underlying report.
Not every report support exclusions.
Not every report support exclusions the same way.
Exclusions should be used only if there is single report being asked for.
```yaml
Type: String[]
Type: Object
Parameter Sets: (All)
Aliases:
Aliases: ExcludeGroupPolicies, ExclusionsCode
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeGroupPolicies
{{ Fill ExcludeGroupPolicies Description }}
```yaml
Type: ScriptBlock
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -FilePath
{{ Fill FilePath Description }}
Path to the file where the report will be saved.
```yaml
Type: String
@@ -77,8 +72,100 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -Type
Type of report to be generated from a list of available reports.
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -PassThru
Returns created objects after the report is done
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -HideHTML
Do not auto open HTML report in default browser
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -HideSteps
Do not show steps in report
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowError
Show errors in HTML report.
Useful in case the report is being run as Scheduled Task
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowWarning
Show warnings in HTML report.
Useful in case the report is being run as Scheduled Task
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
Target different Forest, by default current forest is used
```yaml
Type: String
@@ -92,26 +179,11 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -HideHTML
{{ Fill HideHTML Description }}
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -HideSteps
{{ Fill HideSteps Description }}
```yaml
Type: SwitchParameter
Type: String[]
Parameter Sets: (All)
Aliases:
@@ -123,7 +195,7 @@ Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
Include only specific domains, by default whole forest is scanned
```yaml
Type: String[]
@@ -137,8 +209,8 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -PassThru
{{ Fill PassThru Description }}
### -Online
Forces report to use online resources in HTML (using CDN most of the time), by default it is run offline, and inlines all CSS/JS code.
```yaml
Type: SwitchParameter
@@ -147,13 +219,14 @@ Aliases:
Required: False
Position: Named
Default value: None
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowError
{{ Fill ShowError Description }}
### -SplitReports
Split report into multiple files, one for each report.
This can be useful for large domains with huge reports.
```yaml
Type: SwitchParameter
@@ -162,37 +235,7 @@ Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ShowWarning
{{ Fill ShowWarning Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Type
{{ Fill Type Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 0
Default value: None
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
@@ -202,11 +245,9 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
General notes
## RELATED LINKS
+1 -1
View File
@@ -298,7 +298,7 @@ Accept wildcard characters: False
Type: String
Parameter Sets: Linked
Aliases:
Accepted values: Root, DomainControllers, Site, Other
Accepted values: Root, DomainControllers, Site, OrganizationalUnit
Required: True
Position: Named
+3 -18
View File
@@ -14,7 +14,7 @@ schema: 2.0.0
```
Invoke-GPOZaurrSupport [[-Type] <String>] [[-ComputerName] <String>] [[-UserName] <String>] [[-Path] <String>]
[[-Splitter] <String>] [-PreventShow] [-Offline] [-ForceGPResult] [<CommonParameters>]
[[-Splitter] <String>] [-PreventShow] [-Online] [<CommonParameters>]
```
## DESCRIPTION
@@ -46,23 +46,8 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -ForceGPResult
{{ Fill ForceGPResult Description }}
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Offline
{{ Fill Offline Description }}
### -Online
{{ Fill Online Description }}
```yaml
Type: SwitchParameter
+32 -7
View File
@@ -26,11 +26,15 @@ Provides Backup functionality to Group Policies
### [ConvertFrom-CSExtension](ConvertFrom-CSExtension.md)
{{ Fill in the Synopsis }}
### [Export-GPOZaurrContent](Export-GPOZaurrContent.md)
Saves GPOs to XML or HTML files.
### [Find-CSExtension](Find-CSExtension.md)
{{ Fill in the Synopsis }}
### [Get-GPOZaurr](Get-GPOZaurr.md)
{{ Fill in the Synopsis }}
Gets information about all Group Policies.
Similar to what Get-GPO provides by default.
### [Get-GPOZaurrAD](Get-GPOZaurrAD.md)
{{ Fill in the Synopsis }}
@@ -39,7 +43,10 @@ Provides Backup functionality to Group Policies
{{ Fill in the Synopsis }}
### [Get-GPOZaurrBroken](Get-GPOZaurrBroken.md)
{{ Fill in the Synopsis }}
Detects broken or otherwise damaged Group Policies
### [Get-GPOZaurrBrokenLink](Get-GPOZaurrBrokenLink.md)
Finds any GPO link that doesn't have a matching GPO (already removed GPO).
### [Get-GPOZaurrDictionary](Get-GPOZaurrDictionary.md)
{{ Fill in the Synopsis }}
@@ -57,7 +64,7 @@ Provides Backup functionality to Group Policies
{{ Fill in the Synopsis }}
### [Get-GPOZaurrInheritance](Get-GPOZaurrInheritance.md)
{{ Fill in the Synopsis }}
Short description
### [Get-GPOZaurrLegacyFiles](Get-GPOZaurrLegacyFiles.md)
{{ Fill in the Synopsis }}
@@ -71,6 +78,9 @@ Provides Backup functionality to Group Policies
### [Get-GPOZaurrNetLogon](Get-GPOZaurrNetLogon.md)
{{ Fill in the Synopsis }}
### [Get-GPOZaurrOrganizationalUnit](Get-GPOZaurrOrganizationalUnit.md)
{{ Fill in the Synopsis }}
### [Get-GPOZaurrOwner](Get-GPOZaurrOwner.md)
Gets owners of GPOs from Active Directory and SYSVOL
@@ -80,6 +90,9 @@ Tries to find CPassword in Group Policies or given path and translate it to read
### [Get-GPOZaurrPermission](Get-GPOZaurrPermission.md)
{{ Fill in the Synopsis }}
### [Get-GPOZaurrPermissionAnalysis](Get-GPOZaurrPermissionAnalysis.md)
{{ Fill in the Synopsis }}
### [Get-GPOZaurrPermissionConsistency](Get-GPOZaurrPermissionConsistency.md)
{{ Fill in the Synopsis }}
@@ -93,13 +106,16 @@ Detects Group Policy missing Authenticated Users permission while not having hig
{{ Fill in the Synopsis }}
### [Get-GPOZaurrSysvolDFSR](Get-GPOZaurrSysvolDFSR.md)
{{ Fill in the Synopsis }}
Gets DFSR information from the SYSVOL DFSR
### [Get-GPOZaurrUpdates](Get-GPOZaurrUpdates.md)
Gets the list of GPOs created or updated in the last X number of days.
### [Get-GPOZaurrWMI](Get-GPOZaurrWMI.md)
Get Group Policy WMI filter
### [Invoke-GPOZaurr](Invoke-GPOZaurr.md)
{{ Fill in the Synopsis }}
Single cmdlet that provides 360 degree overview of Group Policies in Active Directory Forest.
### [Invoke-GPOZaurrContent](Invoke-GPOZaurrContent.md)
{{ Fill in the Synopsis }}
@@ -123,7 +139,7 @@ Enables or disables user/computer section of group policy based on it's content.
{{ Fill in the Synopsis }}
### [Remove-GPOZaurrBroken](Remove-GPOZaurrBroken.md)
{{ Fill in the Synopsis }}
Finds and removes broken Group Policies from SYSVOL or AD or both.
### [Remove-GPOZaurrDuplicateObject](Remove-GPOZaurrDuplicateObject.md)
{{ Fill in the Synopsis }}
@@ -134,13 +150,22 @@ Enables or disables user/computer section of group policy based on it's content.
### [Remove-GPOZaurrLegacyFiles](Remove-GPOZaurrLegacyFiles.md)
{{ Fill in the Synopsis }}
### [Remove-GPOZaurrLinkEmptyOU](Remove-GPOZaurrLinkEmptyOU.md)
{{ Fill in the Synopsis }}
### [Remove-GPOZaurrPermission](Remove-GPOZaurrPermission.md)
{{ Fill in the Synopsis }}
### [Remove-GPOZaurrWMI](Remove-GPOZaurrWMI.md)
{{ Fill in the Synopsis }}
### [Repair-GPOZaurrBrokenLink](Repair-GPOZaurrBrokenLink.md)
Removes any link to GPO that no longer exists.
### [Repair-GPOZaurrNetLogonOwner](Repair-GPOZaurrNetLogonOwner.md)
Sets new owner to each file in NetLogon share.
### [Repair-GPOZaurrPermission](Repair-GPOZaurrPermission.md)
{{ Fill in the Synopsis }}
### [Repair-GPOZaurrPermissionConsistency](Repair-GPOZaurrPermissionConsistency.md)
@@ -150,7 +175,7 @@ Enables or disables user/computer section of group policy based on it's content.
{{ Fill in the Synopsis }}
### [Save-GPOZaurrFiles](Save-GPOZaurrFiles.md)
{{ Fill in the Synopsis }}
Exports GPO XML data to files and saves it to a given path
### [Set-GPOOwner](Set-GPOOwner.md)
Used within Invoke-GPOZaurrPermission only.
+17 -2
View File
@@ -16,7 +16,7 @@ schema: 2.0.0
Remove-GPOZaurr [[-ExcludeGroupPolicies] <ScriptBlock>] [-Type] <String[]> [-LimitProcessing <Int32>]
[-Forest <String>] [-ExcludeDomains <String[]>] [-IncludeDomains <String[]>]
[-ExtendedForestInformation <IDictionary>] [-GPOPath <String[]>] [-BackupPath <String>] [-BackupDated]
[-WhatIf] [-Confirm] [<CommonParameters>]
[-RequireDays <Int32>] [-WhatIf] [-Confirm] [<CommonParameters>]
```
## DESCRIPTION
@@ -183,6 +183,21 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -RequireDays
{{ Fill RequireDays Description }}
```yaml
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Type
{{ Fill Type Description }}
@@ -190,7 +205,7 @@ Accept wildcard characters: False
Type: String[]
Parameter Sets: (All)
Aliases:
Accepted values: Empty, Unlinked, Disabled
Accepted values: Empty, Unlinked, Disabled, NoApplyPermission
Required: True
Position: 0
+98 -87
View File
@@ -8,35 +8,63 @@ schema: 2.0.0
# Remove-GPOZaurrBroken
## SYNOPSIS
{{ Fill in the Synopsis }}
Finds and removes broken Group Policies from SYSVOL or AD or both.
## SYNTAX
```
Remove-GPOZaurrBroken [[-Type] <String[]>] [[-BackupPath] <String>] [-BackupDated] [[-LimitProcessing] <Int32>]
[[-Forest] <String>] [[-ExcludeDomains] <String[]>] [[-IncludeDomains] <String[]>]
[[-ExtendedForestInformation] <IDictionary>] [-WhatIf] [-Confirm] [<CommonParameters>]
Remove-GPOZaurrBroken [-Type] <String[]> [-BackupPath <String>] [-BackupDated] [-LimitProcessing <Int32>]
[-Forest <String>] [-ExcludeDomains <String[]>] [-IncludeDomains <String[]>]
[-ExtendedForestInformation <IDictionary>] [-WhatIf] [-Confirm] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
Finds and removes broken Group Policies from SYSVOL or AD or both.
Assesment is based on Get-GPOZaurrBroken and there are 3 supported types:
- AD - meaning GPOs which have no SYSVOL content will be deleted from AD
- SYSVOL - meaning GPOs which have no AD content will be deleted from SYSVOL
- ObjectClass - meaning GPOs which have ObjectClass category of Container rather than groupPolicyContainer will be deleted from AD & SYSVOL
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
### EXAMPLE 1
```
Remove-GPOZaurrBroken -Verbose -WhatIf -Type AD, SYSVOL
```
{{ Add example description here }}
### EXAMPLE 2
```
Remove-GPOZaurrBroken -Verbose -WhatIf -Type AD, SYSVOL -IncludeDomains 'ad.evotec.pl' -LimitProcessing 2
```
### EXAMPLE 3
```
Remove-GPOZaurrBroken -Verbose -IncludeDomains 'ad.evotec.xyz' -BackupPath $Env:UserProfile\Desktop\MyBackup1 -WhatIf -Type AD, SYSVOL
```
## PARAMETERS
### -BackupDated
{{ Fill BackupDated Description }}
### -Type
Choose one or more types to delete.
Options are AD, ObjectClass, SYSVOL
```yaml
Type: SwitchParameter
Type: String[]
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -BackupPath
Path to optional backup of SYSVOL content before deletion
```yaml
Type: String
Parameter Sets: (All)
Aliases:
@@ -47,28 +75,44 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -BackupPath
{{ Fill BackupPath Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Confirm
Prompts you for confirmation before running the cmdlet.
### -BackupDated
Forces backup to be created within folder that has date in it
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: cf
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### -LimitProcessing
Allows to specify maximum number of items that will be fixed in a single run.
It doesn't affect amount of GPOs processed
```yaml
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: 2147483647
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: Named
@@ -78,7 +122,7 @@ Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
Exclude domain from search, by default whole forest is scanned
```yaml
Type: String[]
@@ -86,44 +130,14 @@ Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 3
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
Include only specific domains, by default whole forest is scanned
```yaml
Type: String[]
@@ -131,38 +145,22 @@ Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 5
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -LimitProcessing
{{ Fill LimitProcessing Description }}
### -ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: Int32
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Type
{{ Fill Type Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Accepted values: SYSVOL, AD
Required: False
Position: 0
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
@@ -184,16 +182,29 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -Confirm
Prompts you for confirmation before running the cmdlet.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: cf
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
General notes
## RELATED LINKS
+168
View File
@@ -0,0 +1,168 @@
---
external help file: GPOZaurr-help.xml
Module Name: GPOZaurr
online version:
schema: 2.0.0
---
# Remove-GPOZaurrLinkEmptyOU
## SYNOPSIS
{{ Fill in the Synopsis }}
## SYNTAX
```
Remove-GPOZaurrLinkEmptyOU [[-Forest] <String>] [[-ExcludeDomains] <String[]>] [[-IncludeDomains] <String[]>]
[[-ExtendedForestInformation] <IDictionary>] [[-ExcludeOrganizationalUnit] <String[]>]
[[-LimitProcessing] <Int32>] [-WhatIf] [-Confirm] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
```
{{ Add example description here }}
## PARAMETERS
### -Confirm
Prompts you for confirmation before running the cmdlet.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: cf
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeOrganizationalUnit
{{ Fill ExcludeOrganizationalUnit Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -LimitProcessing
{{ Fill LimitProcessing Description }}
```yaml
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -WhatIf
Shows what would happen if the cmdlet runs.
The cmdlet is not run.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: wi
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
## RELATED LINKS
+156
View File
@@ -0,0 +1,156 @@
---
external help file: GPOZaurr-help.xml
Module Name: GPOZaurr
online version:
schema: 2.0.0
---
# Repair-GPOZaurrBrokenLink
## SYNOPSIS
Removes any link to GPO that no longer exists.
## SYNTAX
```
Repair-GPOZaurrBrokenLink [[-Forest] <String>] [[-ExcludeDomains] <String[]>] [[-IncludeDomains] <String[]>]
[[-ExtendedForestInformation] <IDictionary>] [[-LimitProcessing] <Int32>] [-WhatIf] [-Confirm]
[<CommonParameters>]
```
## DESCRIPTION
Removes any link to GPO that no longer exists.
It scans all site, organizational unit or domain root making sure every single link that may be linking to GPO that doesn't exists anymore is gone.
## EXAMPLES
### EXAMPLE 1
```
Repair-GPOZaurrBrokenLink -Verbose -LimitProcessing 1 -WhatIf
```
### EXAMPLE 2
```
Repair-GPOZaurrBrokenLink -Verbose -IncludeDomains ad.evotec.pl -LimitProcessing 1 -WhatIf
```
## PARAMETERS
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
Include only specific domains, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -LimitProcessing
Allows to specify maximum number of items that will be fixed in a single run.
It doesn't affect amount of GPOs processed
```yaml
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
```
### -WhatIf
Shows what would happen if the cmdlet runs.
The cmdlet is not run.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: wi
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Confirm
Prompts you for confirmation before running the cmdlet.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: cf
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
## OUTPUTS
## NOTES
General notes
## RELATED LINKS
+67 -69
View File
@@ -8,7 +8,7 @@ schema: 2.0.0
# Repair-GPOZaurrNetLogonOwner
## SYNOPSIS
{{ Fill in the Synopsis }}
Sets new owner to each file in NetLogon share.
## SYNTAX
@@ -19,41 +19,24 @@ Repair-GPOZaurrNetLogonOwner [[-Forest] <String>] [[-ExcludeDomains] <String[]>]
```
## DESCRIPTION
{{ Fill in the Description }}
Sets new owner to each file in NetLogon share.
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
### EXAMPLE 1
```
Repair-GPOZaurrNetLogonOwner -WhatIf -Verbose -IncludeDomains ad.evotec.pl
```
{{ Add example description here }}
## PARAMETERS
### -Confirm
Prompts you for confirmation before running the cmdlet.
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: SwitchParameter
Type: String
Parameter Sets: (All)
Aliases: cf
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Aliases: ForestName
Required: False
Position: 1
@@ -62,43 +45,13 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Aliases:
Required: False
Position: 2
@@ -107,23 +60,39 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -LimitProcessing
{{ Fill LimitProcessing Description }}
### -IncludeDomains
Include only specific domains, by default whole forest is scanned
```yaml
Type: Int32
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Principal
{{ Fill Principal Description }}
Provide named owner.
If not provided default S-1-5-32-544 is used.
```yaml
Type: String
@@ -131,8 +100,24 @@ Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Position: 5
Default value: S-1-5-32-544
Accept pipeline input: False
Accept wildcard characters: False
```
### -LimitProcessing
Allows to specify maximum number of items that will be fixed in a single run.
It doesn't affect amount of GPOs processed
```yaml
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: 2147483647
Accept pipeline input: False
Accept wildcard characters: False
```
@@ -153,16 +138,29 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -Confirm
Prompts you for confirmation before running the cmdlet.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: cf
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
General notes
## RELATED LINKS
+169
View File
@@ -0,0 +1,169 @@
---
external help file: GPOZaurr-help.xml
Module Name: GPOZaurr
online version:
schema: 2.0.0
---
# Repair-GPOZaurrPermission
## SYNOPSIS
{{ Fill in the Synopsis }}
## SYNTAX
```
Repair-GPOZaurrPermission [-Type] <String[]> [[-Forest] <String>] [[-ExcludeDomains] <String[]>]
[[-IncludeDomains] <String[]>] [[-ExtendedForestInformation] <IDictionary>] [[-LimitProcessing] <Int32>]
[-WhatIf] [-Confirm] [<CommonParameters>]
```
## DESCRIPTION
{{ Fill in the Description }}
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
```
{{ Add example description here }}
## PARAMETERS
### -Confirm
Prompts you for confirmation before running the cmdlet.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: cf
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
```yaml
Type: IDictionary
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -LimitProcessing
{{ Fill LimitProcessing Description }}
```yaml
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Type
{{ Fill Type Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Accepted values: AuthenticatedUsers, Unknown, System, Administrative, All
Required: True
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -WhatIf
Shows what would happen if the cmdlet runs.
The cmdlet is not run.
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: wi
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
## RELATED LINKS
+50 -54
View File
@@ -8,7 +8,7 @@ schema: 2.0.0
# Save-GPOZaurrFiles
## SYNOPSIS
{{ Fill in the Synopsis }}
Exports GPO XML data to files and saves it to a given path
## SYNTAX
@@ -18,41 +18,24 @@ Save-GPOZaurrFiles [[-Forest] <String>] [[-ExcludeDomains] <String[]>] [[-Includ
```
## DESCRIPTION
{{ Fill in the Description }}
Exports GPO XML data to files and saves it to a given path
## EXAMPLES
### Example 1
```powershell
PS C:\> {{ Add example code here }}
### EXAMPLE 1
```
Save-GPOZaurrFiles -GPOPath 'C:\Support\GitHub\GpoZaurr\Ignore\GPOExportEvotec' -DeleteExisting -Verbose
```
{{ Add example description here }}
## PARAMETERS
### -DeleteExisting
{{ Fill DeleteExisting Description }}
### -Forest
Target different Forest, by default current forest is used
```yaml
Type: SwitchParameter
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -ExcludeDomains
{{ Fill ExcludeDomains Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases:
Aliases: ForestName
Required: False
Position: 1
@@ -61,14 +44,29 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -ExtendedForestInformation
{{ Fill ExtendedForestInformation Description }}
### -ExcludeDomains
Exclude domain from search, by default whole forest is scanned
```yaml
Type: IDictionary
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
Include only specific domains, by default whole forest is scanned
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Required: False
Position: 3
Default value: None
@@ -76,26 +74,11 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -Forest
{{ Fill Forest Description }}
### -ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
```yaml
Type: String
Parameter Sets: (All)
Aliases: ForestName
Required: False
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -GPOPath
{{ Fill GPOPath Description }}
```yaml
Type: String[]
Type: IDictionary
Parameter Sets: (All)
Aliases:
@@ -106,31 +89,44 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -IncludeDomains
{{ Fill IncludeDomains Description }}
### -GPOPath
Path where to save XML files from GPOReport
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Domain, Domains
Aliases:
Required: False
Position: 2
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -DeleteExisting
Delete existing files before saving new ones
```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```
### CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
## INPUTS
### None
## OUTPUTS
### System.Object
## NOTES
General notes
## RELATED LINKS
+35 -3
View File
@@ -16,14 +16,15 @@ Sets GPO Owner to Domain Admins or other choosen account
```
Set-GPOZaurrOwner -Type <String> [-Forest <String>] [-ExcludeDomains <String[]>] [-IncludeDomains <String[]>]
[-ExtendedForestInformation <IDictionary>] [-Principal <String>] [-SkipSysvol] [-LimitProcessing <Int32>]
[-Force] [-WhatIf] [-Confirm] [<CommonParameters>]
[-ApprovedOwner <String[]>] [-Action <String>] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]
```
### Named
```
Set-GPOZaurrOwner [-GPOName <String>] [-GPOGuid <String>] [-Forest <String>] [-ExcludeDomains <String[]>]
[-IncludeDomains <String[]>] [-ExtendedForestInformation <IDictionary>] [-Principal <String>] [-SkipSysvol]
[-LimitProcessing <Int32>] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]
[-LimitProcessing <Int32>] [-ApprovedOwner <String[]>] [-Action <String>] [-Force] [-WhatIf] [-Confirm]
[<CommonParameters>]
```
## DESCRIPTION
@@ -43,6 +44,7 @@ Set-GPOZaurrOwner -Type All -Verbose -WhatIf -LimitProcessing 2
### -Type
Unknown - finds unknown Owners and sets them to Administrative (Domain Admins) or chosen principal
NotMatching - find administrative groups only and if sysvol and gpo doesn't match - replace with chosen principal or Domain Admins if not specified
Inconsistent - same as not NotMatching
NotAdministrative - combination of Unknown/NotMatching and NotAdministrative - replace with chosen principal or Domain Admins if not specified
All - if Owner is known it checks if it's Administrative, if it sn't it fixes that.
If owner is unknown it fixes it
@@ -198,8 +200,38 @@ Accept pipeline input: False
Accept wildcard characters: False
```
### -ApprovedOwner
{{ Fill ApprovedOwner Description }}
```yaml
Type: String[]
Parameter Sets: (All)
Aliases: Exclusion, Exclusions
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Action
{{ Fill Action Description }}
```yaml
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -Force
{{ Fill Force Description }}
Pushes new owner regardless if it's already set or not
```yaml
Type: SwitchParameter
+25 -4
View File
@@ -13,8 +13,14 @@ Allows to exclude Group Policy from being affected by fixes
## SYNTAX
### Name (Default)
```
Skip-GroupPolicy [[-Name] <String>] [[-DomaiName] <String>] [<CommonParameters>]
Skip-GroupPolicy [-Name <String>] [-DomaiName <String>] [<CommonParameters>]
```
### Guid
```
Skip-GroupPolicy [-GUID <String>] [-DomaiName <String>] [<CommonParameters>]
```
## DESCRIPTION
@@ -50,11 +56,26 @@ Define Group Policy Name to skip
```yaml
Type: String
Parameter Sets: (All)
Parameter Sets: Name
Aliases: GpoName, DisplayName
Required: False
Position: 1
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -GUID
{{ Fill GUID Description }}
```yaml
Type: String
Parameter Sets: Guid
Aliases: ID
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
@@ -70,7 +91,7 @@ Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
@@ -1,7 +1,11 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
# Remove GPOS
Remove-GPOZaurr -Type Empty, Unlinked -BackupPath "$Env:UserProfile\Desktop\GPO" -BackupDated -LimitProcessing 2 -Verbose -WhatIf
# Remove GPOS, but don't touch 2 defined exclusions
$ExcludeGroupPolicies = {
'TEST | Drive Mapping 1',
'TEST | Drive Mapping 2'
}
Remove-GPOZaurr -Type Empty -BackupPath "$Env:UserProfile\Desktop\GPO" -BackupDated -LimitProcessing 3 -Verbose -WhatIf -ExcludeGroupPolicies $ExcludeGroupPolicies
# Remove GPOS, but don't touch 2 defined exclusions
Remove-GPOZaurr -Type Empty, Unlinked -BackupPath "$Env:UserProfile\Desktop\GPO" -BackupDated -LimitProcessing 2 -Verbose -WhatIf {
+1 -1
View File
@@ -3,5 +3,5 @@
#$GPOS = Get-GPOZaurr -GPOName 'TEST | Office Configuration'
#$GPOS | Format-Table -AutoSize *
$GPOS = Get-GPOZaurr -GPOName 'New Group Policy Object3'
$GPOS = Get-GPOZaurr -GPOName 'TEST | EmptyWITHGPF'
$GPOS | Format-Table -AutoSize *
@@ -1,3 +1,3 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
#Clear-Host
Remove-GPOZaurrPermission -Verbose -Type Unknown -LimitProcessing 1 #-WhatIf
Remove-GPOZaurrPermission -Verbose -Type Unknown -LimitProcessing 5 -GPOName 'CA TEST'
@@ -5,7 +5,7 @@
# regardless if current user is still Domain Admin or not
$GPOs = Get-GPOZaurrOwner -IncludeSysvol
$GPOs | Format-Table DisplayName, Owner, OwnerSID, OwnerType, SysvolOwner, SysvolSID, SysvolType
$GPOs | Format-Table DisplayName, Status, Owner, OwnerSID, OwnerType, SysvolOwner, SysvolSID, SysvolType
Set-GPOZaurrOwner -Type Unknown -Verbose -WhatIf #-LimitProcessing 2
Set-GPOZaurrOwner -Type All -Verbose -LimitProcessing 2 -WhatIf -IncludeDomains 'ad.evotec.pl'
@@ -0,0 +1,10 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
$GPOs = Get-GPOZaurrOwner -IncludeSysvol -Verbose
$GPOs | Format-Table DisplayName, Status, Owner, OwnerSID, OwnerType, SysvolOwner, SysvolSID, SysvolType
#Set-GPOZaurrOwner -Type All -Verbose -LimitProcessing 2 -WhatIf -IncludeDomains 'ad.evotec.xyz'
Set-GPOZaurrOwner -Type All -Verbose -LimitProcessing 2 -WhatIf -IncludeDomains 'ad.evotec.xyz' -ApprovedOwner @(
'EVOTEC\przemyslaw.klys'
)
+3 -1
View File
@@ -2,7 +2,9 @@
$T = Get-GPOZaurrOwner -Verbose -IncludeSysvol
$T | Format-Table *
#$T | Out-HtmlView -ScrollX
$T = Get-GPOZaurrOwner -Verbose -IncludeSysvol -ApprovedOwner @('EVOTEC\Domain Admins')
$T | Format-Table *
$T = Get-GPOZaurrOwner -Verbose -IncludeSysvol -GPOName 'Default Domain Policy'
$T | Format-Table *
+6
View File
@@ -0,0 +1,6 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurrGPOOwners.html -Type GPOOwners -Online -Exclusions @(
'EVOTEC\Domain Admins'
'EVOTEC\przemyslaw.klys'
)
+1 -1
View File
@@ -1,3 +1,3 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
Get-GPOZaurrLink | Format-Table -AutoSize *
Get-GPOZaurrLink -Verbose | Format-Table -AutoSize *
+4 -1
View File
@@ -7,4 +7,7 @@ Add-GPOZaurrPermission -GPOName 'New Group Policy Object' -Type AuthenticatedUse
Add-GPOZaurrPermission -Type AuthenticatedUsers -PermissionType GpoRead -All -WhatIf -Verbose
# Add Domain Admins/Enterprise Admins to all that need it
Add-GPOZaurrPermission -Type Administrative -PermissionType GpoEditDeleteModifySecurity -All -WhatIf -Verbose
Add-GPOZaurrPermission -Type Administrative -PermissionType GpoEditDeleteModifySecurity -All -WhatIf -Verbose
# Add ranom name to all that need it
Add-GPOZaurrPermission -All -Principal SVC_AGPM -PrincipalType Name -PermissionType GpoEditDeleteModifySecurity -Verbose -LimitProcessing 2 -WhatIf
@@ -4,7 +4,7 @@
Get-GPOZaurrBroken -Verbose | Format-Table # -IncludeDomains 'ad.evotec.pl' | Format-Table
# this allows you to process X amount of orphaned folders/files (good for testing)
Remove-GPOZaurrBroken -Verbose -WhatIf -Type AD, SYSVOL -LimitProcessing 1 #-IncludeDomains 'ad.evotec.pl' #-LimitProcessing 2
Remove-GPOZaurrBroken -Verbose -WhatIf -Type AD -LimitProcessing 10 #-IncludeDomains 'ad.evotec.pl' #-LimitProcessing 2
# this runs for whole SYSVOL and checks things against GPOS
Remove-GPOZaurrBroken -Verbose -IncludeDomains 'ad.evotec.xyz' -BackupPath $Env:UserProfile\Desktop\MyBackup1 -WhatIf -Type AD, SYSVOL
+3 -3
View File
@@ -8,7 +8,7 @@ Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
#Get-GPOZaurrLinkSummary -Report 'LinksSummary' -UnlimitedProperties | Format-Table *
$Report = Get-GPOZaurrLinkSummary #-UnlimitedProperties
$Report | Format-Table
$Report.MultipleLinks | Format-Table *
#$Report | Format-Table
#$Report.MultipleLinks | Format-Table *
$Report.OneLink | Format-Table *
$Report.LinksSummary | Format-Table *
#$Report.LinksSummary | Format-Table *
+10 -1
View File
@@ -2,7 +2,16 @@
# This gets the same thing as earlier examples
# with a difference where one entry per gpo and all settings for that GPO is stored under settings property.
$Output = Invoke-GPOZaurrContent -SingleObject -Verbose
#$Output = Invoke-GPOZaurrContent -Verbose #-SingleObject -Verbose
#$Output | Format-Table
$Output = Invoke-GPOZaurrContent -Verbose -GPOName 'Default Domain Policy'
$Output | Format-Table
Invoke-GPOZaurr -Type GPOAnalysis -GPOName 'Default Domain Policy' -Verbose
return
$Output.Reports.RegistrySettings | Format-Table *
$Output.Reports.RegistrySettings[0].Settings | Format-Table *
+1 -1
View File
@@ -1,4 +1,4 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
$Output = Invoke-GPOZaurrContent -Verbose -OutputType HTML, Object -Open
$Output = Invoke-GPOZaurrContent -SingleObject -Verbose -OutputType HTML, Object -Open -GPOPath "C:\Users\przemyslaw.klys\OneDrive - Evotec\Desktop\Test"
$Output | Format-Table
+3 -2
View File
@@ -1,4 +1,5 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
$Files = Get-GPOZaurrFiles -Limited -Signature
$Files | ConvertTo-Excel -OpenWorkBook -FilePath $Env:USERPROFILE\Desktop\GPOTesting.xlsx -ExcelWorkSheetName 'GPO Output' -AutoFilter -AutoFit -FreezeTopRowFirstColumn
$Files = Get-GPOZaurrFiles -Type All -Verbose
#$Files | ConvertTo-Excel -OpenWorkBook -FilePath $Env:USERPROFILE\Desktop\GPOTesting.xlsx -ExcelWorkSheetName 'GPO Output' -AutoFilter -AutoFit -FreezeTopRowFirstColumn
$Files | Format-Table
@@ -6,5 +6,10 @@
# Get same output DN, CanonicalName, BlockInheritance (True/False) + Users/Computers + UsersCount/ComputerCount for those with Blocked Inhertiance
# This is so you can have a list what machines are affected
$Objects = Get-GPOZaurrInheritance -IncludeBlockedObjects -OnlyBlockedInheritance
$ExcludedOU = @(
# Works on OU/
'ad.evotec.xyz/ITR02/Test'
)
$Objects = Get-GPOZaurrInheritance -IncludeBlockedObjects -IncludeExcludedObjects -OnlyBlockedInheritance -Exclusions $ExcludedOU -IncludeGroupPoliciesForBlockedObjects
$Objects | Format-Table
+1 -1
View File
@@ -1,4 +1,4 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
$FilesAll = Get-GPOZaurrNetLogon -SkipOwner -IncludeDomains 'ad.evotec.pl' #-OwnerOnly
$FilesAll = Get-GPOZaurrNetLogon -IncludeDomains 'ad.evotec.xyz' -Verbose -OwnerOnly
$FilesAll | Format-Table -a *
+28 -2
View File
@@ -1,4 +1,30 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
#$Output = Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurr.html -PassThru -Type GPOConsistency, GPOList, GPODuplicates, GPOOrphans, GPOOwners, NetLogonOwners, GPOPermissionsRead, GPOPermissionsAdministrative,GPOPermissionsUnknown
Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurr.html -Type GPOPermissions,GPOPermissionsRead
# # Shows how to use exclusions for GPOList (different way)
# Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurr.html -Type GPOList -Online -Exclusions {
# Skip-GroupPolicy -Name 'de14_usr_std'
# Skip-GroupPolicy -Name 'ALL | Enable RDP' -DomaiName 'ad.evotec.xyz'
# '01446204-d2b5-4c9a-a539-5d0f64f27fbc'
# '{01cef2e1-ea5c-4c4a-bd43-94d89d8a7810}'
# }
# Invoke-GPOZaurr -Type GPOOrganizationalUnit -Online -FilePath $PSScriptRoot\Reports\GPOZaurr.html
# # Shows how to use exclusions (supported only in GPOBlockedInheritance)
# Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurr.html -Type GPOBlockedInheritance -Online -Exclusions @(
# 'OU=Test,OU=ITR02,DC=ad,DC=evotec,DC=xyz'
# )
# # different approach to query multiple reports or just one
# Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurr.html -PassThru -Type GPOConsistency, GPOList, GPODuplicates, GPOBroken, GPOOwners, NetLogonOwners, GPOPermissionsRead, GPOPermissionsAdministrative, GPOPermissionsUnknown
#Invoke-GPOZaurr -Type GPOOwners,GPOConsistency -Online -FilePath $PSScriptRoot\Reports\GPOZaurr.html
#Invoke-GPOZaurr -Type GPOOwners -Online -FilePath $PSScriptRoot\Reports\GPOZaurr.html
##Invoke-GPOZaurr -Type GPOOwners,GPOConsistency -Online -FilePath $PSScriptRoot\Reports\GPOZaurr.html -SplitReports
#invoke-gpozaurr -Type GPOOrganizationalUnit
#Invoke-GPOZaurr -Online -FilePath $PSScriptRoot\Reports\GPOZaurr.html -Type GPOAnalysis #-SplitReports -Forest test.evotec.pl
Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurr.html # -Verbose #-Type GPOBlockedInheritance -Forest 'ad.evotec.xyz'
+1 -1
View File
@@ -1,3 +1,3 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurr.html -Type GPOConsistency, GPOList, GPODuplicates, GPOOrphans, GPOOwners, NetLogonOwners, GPOPermissionsRead, GPOPermissionsAdministrative, GPOPermissionsUnknown, GPOPermissions
Invoke-GPOZaurr -FilePath $PSScriptRoot\Reports\GPOZaurr.html -Type GPOConsistency, GPOList, GPODuplicates, GPOBroken, GPOOwners, NetLogonOwners, GPOPermissionsRead, GPOPermissionsAdministrative, GPOPermissionsUnknown, GPOPermissions
+1 -1
View File
@@ -5,7 +5,7 @@ $Types = @(
@{ Name = 'GPOConsistency'; Path = "$PSScriptRoot\Reports\GPOConsistency.html" }
@{ Name = 'GPODuplicates'; Path = "$PSScriptRoot\Reports\GPODuplicates.html" }
@{ Name = 'GPOList'; Path = "$PSScriptRoot\Reports\GPOList.html" }
@{ Name = 'GPOBroken'; Path = "$PSScriptRoot\Reports\GPOOrphans.html" }
@{ Name = 'GPOBroken'; Path = "$PSScriptRoot\Reports\GPOBroken.html" }
@{ Name = 'GPOPassword'; Path = "$PSScriptRoot\Reports\GPOPassword.html" }
@{ Name = 'NetLogonPermissions'; Path = "$PSScriptRoot\Reports\NetLogonPermissions.html" }
)
+18 -3
View File
@@ -1,7 +1,22 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
$GPOS = Get-GPOZaurr -GPOPath 'C:\Support\GitHub\GpoZaurr\Ignore\Empty' -ExcludeGroupPolicies @(
$GPOS = Get-GPOZaurr -ExcludeGroupPolicies {
Skip-GroupPolicy -Name 'de14_usr_std'
Skip-GroupPolicy -Name 'de14_usr_std' -DomaiName 'ad.evotec.xyz'
)
$GPOS | Format-Table -AutoSize *
Skip-GroupPolicy -Name 'All | Trusted Websites' #-DomaiName 'ad.evotec.xyz'
'{D39BF08A-87BF-4662-BFA0-E56240EBD5A2}'
'COMPUTERS | Enable Sets'
}
$GPOS | Format-Table -AutoSize *
$Output = Invoke-GPOZaurr -Type GPOList -Exclusions {
Skip-GroupPolicy -Name 'All | Trusted Websites' -DomaiName 'ad.evotec.xyz'
'{D39BF08A-87BF-4662-BFA0-E56240EBD5A2}'
"104da6a7-c7d2-48da-b24b-8fa584f7b0b6"
"{087b4f69-c541-429f-8dfd-0eb3ed133910}"
'COMPUTERS | Enable Sets'
'24194523-bb82-439c-a533-abf4f30fa2c4'
'{31b2f340-016d-11d2-945f-00c04fb984f9 } '
} -PassThru
$Output.GPOList
+3
View File
@@ -0,0 +1,3 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
Invoke-GPOZaurr -Online -Verbose -FilePath $PSScriptRoot\Reports\GPOZaurr.html -SplitReports
@@ -0,0 +1,5 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
#Get-GPOZaurrBrokenLink -Verbose | Format-Table -AutoSize *
Get-GPOZaurrBrokenLink -Verbose -IncludeDomains ad.evotec.pl | Format-Table -AutoSize *
@@ -0,0 +1,5 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
Repair-GPOZaurrBrokenLink -Verbose -LimitProcessing 1 #-WhatIf
#Repair-GPOZaurrBrokenLink -Verbose -IncludeDomains ad.evotec.pl -LimitProcessing 30 #-WhatIf
+16
View File
@@ -0,0 +1,16 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
#Save-GPOZaurrFiles -GPOPath $Env:USERPROFILE\Desktop\TestF
#Get-GPOZaurr -GPOPath "$Env:USERPROFILE\Desktop\TestF" | Sort-Object -Property DisplayName | Where-Object { $_.EMpty -eq $true } | Format-Table *
return
$GPO = Get-GPOZaurr -GPOName 'ALL | Allow use of biometrics'
$GPO | Format-List *
#$GPO.Count
#$GPO | Where-Object { $_.Empty -eq $true } | Format-Table *
#($GPO | Where-Object { $_.Empty -eq $true }).Count
#$GPO | Where-Object { $_.DisplayName -like "*TEST*" } | Format-Table *
@@ -0,0 +1,10 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
Remove-GPOZaurrLinkEmptyOU -Verbose -LimitProcessing 3 -WhatIf
$Exclude = @(
"OU=Groups,OU=Production,DC=ad,DC=evotec,DC=pl"
"OU=Test \, OU,OU=ITR02,DC=ad,DC=evotec,DC=xyz"
)
Remove-GPOZaurrLinkEmptyOU -Verbose -LimitProcessing 3 -WhatIf -ExcludeOrganizationalUnit $Exclude
@@ -0,0 +1,17 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
$OUs = Get-GPOZaurrOrganizationalUnit
$Ous | Format-Table
Get-GPOZaurrOrganizationalUnit -Verbose -Option Unlink -Exclusions @(
'OU=Groups,OU=Production,DC=ad,DC=evotec,DC=pl'
) | Format-Table
Get-GPOZaurrOrganizationalUnit -Verbose -ExcludeOrganizationalUnit @(
'*,OU=Production,DC=ad,DC=evotec,DC=pl'
) | Format-Table
Invoke-GPOZaurr -Type GPOOrganizationalUnit -Online -FilePath $PSScriptRoot\Reports\GPOZaurrOU.html -Exclusions @(
'*OU=Production,DC=ad,DC=evotec,DC=pl'
'*OU=Accounts,OU=Administration,DC=ad,DC=evotec,DC=xyz'
)
+4
View File
@@ -0,0 +1,4 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
Get-GPOZaurrUpdates -DateRange Last14Days -DateProperty WhenCreated, WhenChanged -Verbose -IncludeDomains 'ad.evotec.pl' | Format-List
Get-GPOZaurrUpdates -DateRange Last14Days -DateProperty WhenCreated -Verbose | Format-Table
+3
View File
@@ -0,0 +1,3 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
Export-GPOZaurrContent -FolderOutput $PSScriptRoot\ExportedXML -ReportType XML
+4
View File
@@ -0,0 +1,4 @@
Import-Module .\GPoZaurr.psd1 -Force
$Data = Invoke-GPOZaurr -Online -FilePath $PSScriptRoot\Reports\GPOZaurr.html -Type GPORedirect -PassThru
$Data.GPORedirect
+11
View File
@@ -0,0 +1,11 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
$Output = Invoke-GPOZaurrContent -Verbose -GPOName 'Default Domain Policy'
$Output | Format-Table
# You need PSWriteOffice for that
foreach ($Key in $Output.Keys) {
$Output[$Key] | Export-OfficeExcel -FilePath $Env:USERPROFILE\Desktop\GPOAnalysis.xlsx -WorkSheetName $Key
}
Invoke-GPOZaurr -Type GPOAnalysis -GPOName 'ALL | Allow use of biometrics', 'ALL | Enable RDP' -GPOGUID '{31B2F340-016D-11D2-945F-00C04FB984F9}' -IncludeDomains 'ad.evotec.xyz' -Verbose
@@ -0,0 +1,10 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
# search by guid or name for specific GPOs
#Get-GPOZaurrMissingFiles -GPOGUID '{2F326111-C21B-4892-B7BC-9BDCB201FFCC}' | Format-Table
# search for all GPOs with missing files
#Get-GPOZaurrMissingFiles -BrokenOnly | Format-Table
# search for all GPOs with missing files for everythin
Invoke-GPOZaurr -Type GPOBrokenPartially #, GPOBroken, GPOBrokenLink
+4
View File
@@ -0,0 +1,4 @@
Import-Module "$PSScriptRoot\..\GPoZaurr.psd1" -Force
Get-GPOZaurrDuplicateObject -Verbose
+1 -1
View File
@@ -3097,7 +3097,7 @@ Import-Module GPOZaurr -Force</pre><div class="defaultText"><span>Using force ma
"When executed it will take a while to generate all data and provide you with new report depending on size of environment."
"Once confirmed that data is still showing issues and requires fixing please proceed with next step."
</span></div><div class="defaultText"><span>Alternatively if you prefer working with console you can run: </span></div><pre data-enlighter-language="powershell">$GPOOutput = Get-GPOZaurrPermissionConsistency
$GPOOutput | Format-Table # do your actions as desired</pre><div class="defaultText"><span>It provides same data as you see in table above just doesn't prettify it for you.</span></div></div><div style="padding:0px" id="WizardStep-0tiejcyn" class="tab-pane flexElement" role="tabpanel"><div class="defaultText"><span>Following command when executed fixes inconsistent permissions.</span></div><div class="defaultText"><span style="color:#000000;font-weight:normal">Make sure when running it for the first time to run it with </span><span style="color:#ff0000;font-weight:bold">WhatIf</span><span style="color:#000000;font-weight:normal"> parameter as shown below to prevent accidental removal.</span></div><div class="defaultText"><span>Make sure to fill in TargetDomain to match your Domain Admin permission account</span></div><pre data-enlighter-language="powershell">Repair-GPOZaurrPermissionConsistency -IncludeDomains "TargetDomain" -Verbose -WhatIf</pre><div class="defaultText"><span>After execution please make sure there are no errors, make sure to review provided output, and confirm that what is about to be deleted matches expected data. Once happy with results please follow with command: </span></div><pre data-enlighter-language="powershell">Repair-GPOZaurrPermissionConsistency -LimitProcessing 2 -IncludeDomains "TargetDomain"</pre><div class="defaultText"><span>This command when executed repairs only first X inconsistent permissions. Use LimitProcessing parameter to prevent mass fixing and increase the counter when no errors occur. </span><span>Repeat step above as much as needed increasing LimitProcessing count till there's nothing left. In case of any issues please review and action accordingly. </span></div><div class="defaultText"><span>If there's nothing else to be fixed, we can skip to next step step</span></div></div><div style="padding:0px" id="WizardStep-rj10lm2s" class="tab-pane flexElement" role="tabpanel"><div class="defaultText"><span>Unfortunetly this step is manual until automation is developed. </span></div><div class="defaultText"><span>If there are inconsistent permissions found inside GPO one has to fix them manually by going into SYSVOL and making sure inheritance is enabled, and that permissions are consistent across all files.</span></div></div><div style="padding:0px" id="WizardStep-xg65antb" class="tab-pane flexElement" role="tabpanel"><div class="defaultText"><span>Once cleanup task was executed properly, we need to verify that report now shows no problems.</span></div><pre data-enlighter-language="powershell">Invoke-GPOZaurr -FilePath $Env:UserProfile\Desktop\GPOZaurrPermissionsInconsistentAfter.html -Verbose -Type GPOConsistency</pre><div class="defaultText"><span style="color:#4d1a7f">If everything is healthy in the report you're done! Enjoy rest of the day!</span></div></div></div><script> $(document).ready(function(){
$GPOOutput | Format-Table # do your actions as desired</pre><div class="defaultText"><span>It provides same data as you see in table above just doesn't prettify it for you.</span></div></div><div style="padding:0px" id="WizardStep-0tiejcyn" class="tab-pane flexElement" role="tabpanel"><div class="defaultText"><span>Following command when executed fixes inconsistent permissions.</span></div><div class="defaultText"><span style="color:#000000;font-weight:normal">Make sure when running it for the first time to run it with </span><span style="color:#ff0000;font-weight:bold">WhatIf</span><span style="color:#000000;font-weight:normal"> parameter as shown below to prevent accidental removal.</span></div><div class="defaultText"><span>Make sure to fill in TargetDomain to match your Domain Admin permission account</span></div><pre data-enlighter-language="powershell">Repair-GPOZaurrPermissionConsistency -IncludeDomains "TargetDomain" -Verbose -WhatIf</pre><div class="defaultText"><span>After execution please make sure there are no errors, make sure to review provided output, and confirm that what is about to be deleted matches expected data. Once happy with results please follow with command: </span></div><pre data-enlighter-language="powershell">Repair-GPOZaurrPermissionConsistency -LimitProcessing 2 -IncludeDomains "TargetDomain"</pre><div class="defaultText"><span>This command when executed repairs only first X inconsistent permissions. Use LimitProcessing parameter to prevent mass fixing and increase the counter when no errors occur. </span><span>Repeat step above as much as needed increasing LimitProcessing count till there's nothing left. In case of any issues please review and action accordingly. </span></div><div class="defaultText"><span>If there's nothing else to be fixed, we can skip to next step step</span></div></div><div style="padding:0px" id="WizardStep-rj10lm2s" class="tab-pane flexElement" role="tabpanel"><div class="defaultText"><span>Unfortunately this step is manual until automation is developed. </span></div><div class="defaultText"><span>If there are inconsistent permissions found inside GPO one has to fix them manually by going into SYSVOL and making sure inheritance is enabled, and that permissions are consistent across all files.</span></div></div><div style="padding:0px" id="WizardStep-xg65antb" class="tab-pane flexElement" role="tabpanel"><div class="defaultText"><span>Once cleanup task was executed properly, we need to verify that report now shows no problems.</span></div><pre data-enlighter-language="powershell">Invoke-GPOZaurr -FilePath $Env:UserProfile\Desktop\GPOZaurrPermissionsInconsistentAfter.html -Verbose -Type GPOConsistency</pre><div class="defaultText"><span style="color:#4d1a7f">If everything is healthy in the report you're done! Enjoy rest of the day!</span></div></div></div><script> $(document).ready(function(){
// SmartWizard initialize
$('#TabPanel-fbsgNINg').smartWizard({
"autoAdjustHeight": false,
+15 -11
View File
@@ -4,31 +4,35 @@
CmdletsToExport = @()
CompanyName = 'Evotec'
CompatiblePSEditions = @('Desktop')
Copyright = '(c) 2011 - 2021 Przemyslaw Klys @ Evotec. All rights reserved.'
Copyright = '(c) 2011 - 2024 Przemyslaw Klys @ Evotec. All rights reserved.'
Description = 'Group Policy Eater is a PowerShell module that aims to gather information about Group Policies but also allows fixing issues that you may find in them.'
FunctionsToExport = @('Add-GPOPermission', 'Add-GPOZaurrPermission', 'Backup-GPOZaurr', 'Clear-GPOZaurrSysvolDFSR', 'ConvertFrom-CSExtension', 'Find-CSExtension', 'Get-GPOZaurr', 'Get-GPOZaurrAD', 'Get-GPOZaurrBackupInformation', 'Get-GPOZaurrBroken', 'Get-GPOZaurrBrokenLink', 'Get-GPOZaurrDictionary', 'Get-GPOZaurrDuplicateObject', 'Get-GPOZaurrFiles', 'Get-GPOZaurrFilesPolicyDefinition', 'Get-GPOZaurrFolders', 'Get-GPOZaurrInheritance', 'Get-GPOZaurrLegacyFiles', 'Get-GPOZaurrLink', 'Get-GPOZaurrLinkSummary', 'Get-GPOZaurrNetLogon', 'Get-GPOZaurrOwner', 'Get-GPOZaurrPassword', 'Get-GPOZaurrPermission', 'Get-GPOZaurrPermissionAnalysis', 'Get-GPOZaurrPermissionConsistency', 'Get-GPOZaurrPermissionIssue', 'Get-GPOZaurrPermissionRoot', 'Get-GPOZaurrPermissionSummary', 'Get-GPOZaurrSysvolDFSR', 'Get-GPOZaurrWMI', 'Invoke-GPOZaurr', 'Invoke-GPOZaurrContent', 'Invoke-GPOZaurrPermission', 'Invoke-GPOZaurrSupport', 'New-GPOZaurrWMI', 'Optimize-GPOZaurr', 'Remove-GPOPermission', 'Remove-GPOZaurr', 'Remove-GPOZaurrBroken', 'Remove-GPOZaurrDuplicateObject', 'Remove-GPOZaurrFolders', 'Remove-GPOZaurrLegacyFiles', 'Remove-GPOZaurrPermission', 'Remove-GPOZaurrWMI', 'Repair-GPOZaurrBrokenLink', 'Repair-GPOZaurrNetLogonOwner', 'Repair-GPOZaurrPermission', 'Repair-GPOZaurrPermissionConsistency', 'Restore-GPOZaurr', 'Save-GPOZaurrFiles', 'Set-GPOOwner', 'Set-GPOZaurrOwner', 'Set-GPOZaurrStatus', 'Skip-GroupPolicy')
FunctionsToExport = @('Add-GPOPermission', 'Add-GPOZaurrPermission', 'Backup-GPOZaurr', 'Clear-GPOZaurrSysvolDFSR', 'ConvertFrom-CSExtension', 'Export-GPOZaurrContent', 'Find-CSExtension', 'Get-GPOZaurr', 'Get-GPOZaurrAD', 'Get-GPOZaurrBackupInformation', 'Get-GPOZaurrBroken', 'Get-GPOZaurrBrokenLink', 'Get-GPOZaurrDictionary', 'Get-GPOZaurrDuplicateObject', 'Get-GPOZaurrFiles', 'Get-GPOZaurrFilesPolicyDefinition', 'Get-GPOZaurrFolders', 'Get-GPOZaurrInheritance', 'Get-GPOZaurrLegacyFiles', 'Get-GPOZaurrLink', 'Get-GPOZaurrLinkSummary', 'Get-GPOZaurrMissingFiles', 'Get-GPOZaurrNetLogon', 'Get-GPOZaurrOrganizationalUnit', 'Get-GPOZaurrOwner', 'Get-GPOZaurrPassword', 'Get-GPOZaurrPermission', 'Get-GPOZaurrPermissionAnalysis', 'Get-GPOZaurrPermissionConsistency', 'Get-GPOZaurrPermissionIssue', 'Get-GPOZaurrPermissionRoot', 'Get-GPOZaurrPermissionSummary', 'Get-GPOZaurrRedirect', 'Get-GPOZaurrSysvolDFSR', 'Get-GPOZaurrUpdates', 'Get-GPOZaurrWMI', 'Invoke-GPOZaurr', 'Invoke-GPOZaurrContent', 'Invoke-GPOZaurrPermission', 'Invoke-GPOZaurrSupport', 'New-GPOZaurrWMI', 'Optimize-GPOZaurr', 'Remove-GPOPermission', 'Remove-GPOZaurr', 'Remove-GPOZaurrBroken', 'Remove-GPOZaurrDuplicateObject', 'Remove-GPOZaurrFolders', 'Remove-GPOZaurrLegacyFiles', 'Remove-GPOZaurrLinkEmptyOU', 'Remove-GPOZaurrPermission', 'Remove-GPOZaurrWMI', 'Repair-GPOZaurrBrokenLink', 'Repair-GPOZaurrNetLogonOwner', 'Repair-GPOZaurrPermission', 'Repair-GPOZaurrPermissionConsistency', 'Restore-GPOZaurr', 'Save-GPOZaurrFiles', 'Set-GPOOwner', 'Set-GPOZaurrOwner', 'Set-GPOZaurrStatus', 'Skip-GroupPolicy')
GUID = 'f7d4c9e4-0298-4f51-ad77-e8e3febebbde'
ModuleVersion = '0.0.103'
ModuleVersion = '1.1.6'
PowerShellVersion = '5.1'
PrivateData = @{
PSData = @{
Tags = @('Windows', 'ActiveDirectory', 'GPO', 'GroupPolicy')
ProjectUri = 'https://github.com/EvotecIT/GPOZaurr'
ExternalModuleDependencies = @('CimCmdlets', 'Microsoft.PowerShell.Management', 'Microsoft.PowerShell.Utility', 'Microsoft.PowerShell.Security')
ProjectUri = 'https://github.com/EvotecIT/GPOZaurr'
Tags = @('Windows', 'ActiveDirectory', 'GPO', 'GroupPolicy')
}
}
RequiredModules = @(@{
ModuleVersion = '0.0.192'
ModuleName = 'PSSharedGoods'
Guid = '0b0ba5c5-ec85-4c2b-a718-874e55a8bc3f'
ModuleName = 'PSWriteColor'
ModuleVersion = '1.0.1'
}, @{
Guid = 'ee272aa8-baaa-4edf-9f45-b6d6f7d844fe'
ModuleName = 'PSSharedGoods'
ModuleVersion = '0.0.297'
}, @{
ModuleVersion = '0.0.103'
ModuleName = 'ADEssentials'
Guid = '9fc9fd61-7f11-4f4b-a527-084086f1905f'
ModuleName = 'ADEssentials'
ModuleVersion = '0.0.221'
}, @{
ModuleVersion = '0.0.122'
ModuleName = 'PSWriteHTML'
Guid = 'a7bdf640-f5cb-4acf-9de0-365b322d245c'
ModuleName = 'PSWriteHTML'
ModuleVersion = '1.27.0'
}, 'CimCmdlets', 'Microsoft.PowerShell.Management', 'Microsoft.PowerShell.Utility', 'Microsoft.PowerShell.Security')
RootModule = 'GPOZaurr.psm1'
}
+46 -6
View File
@@ -2,13 +2,53 @@
$Public = @( Get-ChildItem -Path $PSScriptRoot\Public\*.ps1 -ErrorAction SilentlyContinue -Recurse )
$Private = @( Get-ChildItem -Path $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue -Recurse )
#Dot source the files
Foreach ($import in @($Public + $Private)) {
Try {
. $import.fullname
} Catch {
Write-Error -Message "Failed to import function $($import.fullname): $_"
$AssemblyFolders = Get-ChildItem -Path $PSScriptRoot\Lib -Directory -ErrorAction SilentlyContinue
if ($AssemblyFolders.BaseName -contains 'Standard') {
$Assembly = @( Get-ChildItem -Path $PSScriptRoot\Lib\Standard\*.dll -ErrorAction SilentlyContinue )
} else {
if ($PSEdition -eq 'Core') {
$Assembly = @( Get-ChildItem -Path $PSScriptRoot\Lib\Core\*.dll -ErrorAction SilentlyContinue )
} else {
$Assembly = @( Get-ChildItem -Path $PSScriptRoot\Lib\Default\*.dll -ErrorAction SilentlyContinue )
}
}
$FoundErrors = @(
Foreach ($Import in @($Assembly)) {
try {
Add-Type -Path $Import.Fullname -ErrorAction Stop
} catch [System.Reflection.ReflectionTypeLoadException] {
Write-Warning "Processing $($Import.Name) Exception: $($_.Exception.Message)"
$LoaderExceptions = $($_.Exception.LoaderExceptions) | Sort-Object -Unique
foreach ($E in $LoaderExceptions) {
Write-Warning "Processing $($Import.Name) LoaderExceptions: $($E.Message)"
}
$true
#Write-Error -Message "StackTrace: $($_.Exception.StackTrace)"
} catch {
Write-Warning "Processing $($Import.Name) Exception: $($_.Exception.Message)"
$LoaderExceptions = $($_.Exception.LoaderExceptions) | Sort-Object -Unique
foreach ($E in $LoaderExceptions) {
Write-Warning "Processing $($Import.Name) LoaderExceptions: $($E.Message)"
}
$true
#Write-Error -Message "StackTrace: $($_.Exception.StackTrace)"
}
}
#Dot source the files
Foreach ($Import in @($Private + $Public)) {
Try {
. $Import.Fullname
} Catch {
Write-Error -Message "Failed to import functions from $($import.Fullname): $_"
$true
}
}
)
if ($FoundErrors.Count -gt 0) {
$ModuleName = (Get-ChildItem $PSScriptRoot\*.psd1).BaseName
Write-Warning "Importing module $ModuleName failed. Fix errors before continuing."
break
}
Export-ModuleMember -Function '*' -Alias '*'
+28
View File
@@ -1,4 +1,32 @@
function ConvertFrom-XMLRSOP {
<#
.SYNOPSIS
Converts XML data representing Resultant Set of Policy (RSOP) into a structured PowerShell object.
.DESCRIPTION
This function takes XML data representing RSOP and converts it into a structured PowerShell object for easier manipulation and analysis.
.PARAMETER Content
The XML content representing the RSOP data.
.PARAMETER ResultsType
The type of results being processed.
.PARAMETER Splitter
The delimiter used to split certain data elements.
.EXAMPLE
ConvertFrom-XMLRSOP -Content $xmlData -ResultsType "Computer" -Splitter "`n"
Description:
Converts the XML data in $xmlData representing computer RSOP results using a newline as the splitter.
.EXAMPLE
ConvertFrom-XMLRSOP -Content $xmlData -ResultsType "User" -Splitter ","
Description:
Converts the XML data in $xmlData representing user RSOP results using a comma as the splitter.
#>
[cmdletBinding()]
param(
[System.Xml.XmlElement]$Content,
+25
View File
@@ -1,4 +1,29 @@
function ConvertTo-XMLAccountPolicy {
<#
.SYNOPSIS
Converts a PowerShell custom object representing an account policy into XML format.
.DESCRIPTION
This function takes a PowerShell custom object representing an account policy and converts it into XML format for storage or transmission.
.PARAMETER GPO
The PowerShell custom object representing the account policy.
.PARAMETER SingleObject
Indicates whether to convert a single object or multiple objects.
.EXAMPLE
ConvertTo-XMLAccountPolicy -GPO $accountPolicyObject -SingleObject
Description:
Converts the $accountPolicyObject into XML format for a single object.
.EXAMPLE
$accountPolicies | ConvertTo-XMLAccountPolicy -SingleObject
Description:
Converts multiple account policies in $accountPolicies into XML format for each object.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+25
View File
@@ -1,4 +1,29 @@
function ConvertTo-XMLAudit {
<#
.SYNOPSIS
Converts a PowerShell custom object representing an audit policy into XML format.
.DESCRIPTION
This function takes a PowerShell custom object representing an audit policy and converts it into XML format for storage or transmission.
.PARAMETER GPO
The PowerShell custom object representing the audit policy.
.PARAMETER SingleObject
Indicates whether to convert a single object or multiple objects.
.EXAMPLE
ConvertTo-XMLAudit -GPO $auditPolicyObject -SingleObject
Description:
Converts the $auditPolicyObject into XML format for a single object.
.EXAMPLE
$auditPolicies | ConvertTo-XMLAudit -SingleObject
Description:
Converts multiple audit policies in $auditPolicies into XML format for each object.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+129
View File
@@ -0,0 +1,129 @@
function ConvertTo-XMLCertificates {
<#
.SYNOPSIS
Converts a PowerShell custom object representing certificate data into XML format.
.DESCRIPTION
This function takes a PowerShell custom object representing certificate data and converts it into XML format for storage or transmission.
.PARAMETER GPO
The PowerShell custom object representing the certificate data.
.PARAMETER Category
An array of categories for the certificate data.
.PARAMETER SingleObject
Indicates whether to convert a single object or multiple objects.
.EXAMPLE
ConvertTo-XMLCertificates -GPO $certificateDataObject -Category @('Category1', 'Category2') -SingleObject
Description:
Converts the $certificateDataObject into XML format for multiple categories as a single object.
.EXAMPLE
$certificateDataObjects | ConvertTo-XMLCertificates -Category @('Category1') -SingleObject
Description:
Converts multiple certificate data objects in $certificateDataObjects into XML format for a single category.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
[string[]] $Category,
[switch] $SingleObject
)
$SkipNames = ('Name', 'LocalName', 'NamespaceURI', 'Prefix', 'NodeType', 'ParentNode', 'OwnerDocument', 'IsEmpty', 'Attributes', 'HasAttributes', 'SchemaInfo', 'InnerXml', 'InnerText', 'NextSibling', 'PreviousSibling', 'ChildNodes', 'FirstChild', 'LastChild', 'HasChildNodes', 'IsReadOnly', 'OuterXml', 'BaseURI', 'PreviousText')
if ($SingleObject) {
$CreateGPO = [ordered]@{
DisplayName = $GPO.DisplayName
DomainName = $GPO.DomainName
GUID = $GPO.GUID
GpoType = $GPO.GpoType
Count = 0
Settings = $null
}
[Array] $CreateGPO['Settings'] = foreach ($Setting in $GPO.DataSet) {
$SettingName = $Setting.Name -split ":"
$MySettings = [ordered] @{
CreatedTime = $GPO.CreatedTime # : 06.06.2020 18:03:36
ModifiedTime = $GPO.ModifiedTime # : 17.06.2020 16:08:10
ReadTime = $GPO.ReadTime # : 13.08.2020 10:15:37
SecurityDescriptor = $GPO.SecurityDescriptor # : SecurityDescriptor
FilterDataAvailable = $GPO.FilterDataAvailable # : True
}
$Name = $SettingName[1]
#$Name = Format-ToTitleCase -Text $Setting.Name -RemoveWhiteSpace -RemoveChar ',', '-', "'", '\(', '\)', ':'
$MySettings['Name'] = $Name # $Setting.Name
ConvertTo-XMLNested -CreateGPO $MySettings -Setting $Setting -SkipNames $SkipNames #-Name $Name
if ($MySettings.Data) {
$bytes = $MySettings.Data -replace '\r?\n' -split '(?<=\G.{2})' -ne '' -replace '^', '0x' -as [byte[]]
$CertificateData = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($bytes)
$MySettings['NotBefore'] = $CertificateData.NotBefore
$MySettings['NotAfter'] = $CertificateData.NotAfter
$MySettings['HasPrivateKey'] = $CertificateData.HasPrivateKey
$MySettings['Thumbprint'] = $CertificateData.Thumbprint
$MySettings['SerialNumber'] = $CertificateData.SerialNumber
$MySettings['Version'] = $CertificateData.Version
$MySettings['Handle'] = $CertificateData.Handle
$MySettings['SignatureAlgorithm'] = $CertificateData.SignatureAlgorithm.Value
$MySettings['SignatureAlgorithmName'] = $CertificateData.SignatureAlgorithm.FriendlyName
$MySettings['KeyUsages'] = $CertificateData.Extensions.KeyUsages
$MySettings.Remove('Data')
}
[PSCustomObject] $MySettings
}
$CreateGPO['Count'] = $CreateGPO['Settings'].Count
$CreateGPO['Linked'] = $GPO.Linked
$CreateGPO['LinksCount'] = $GPO.LinksCount
$CreateGPO['Links'] = $GPO.Links
[PSCustomObject] $CreateGPO
} else {
foreach ($Setting in $GPO.DataSet) {
$CreateGPO = [ordered]@{
DisplayName = $GPO.DisplayName
DomainName = $GPO.DomainName
GUID = $GPO.GUID
GpoType = $GPO.GpoType
}
$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
$Name = $SettingName[1]
$CreateGPO['Name'] = $Name # $Setting.Name
ConvertTo-XMLNested -CreateGPO $CreateGPO -Setting $Setting -SkipNames $SkipNames #-Name $Name
if ($CreateGPO.Data) {
$bytes = $CreateGPO.Data -replace '\r?\n' -split '(?<=\G.{2})' -ne '' -replace '^', '0x' -as [byte[]]
$CertificateData = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($bytes)
$CreateGPO['NotBefore'] = $CertificateData.NotBefore
$CreateGPO['NotAfter'] = $CertificateData.NotAfter
$CreateGPO['HasPrivateKey'] = $CertificateData.HasPrivateKey
$CreateGPO['Thumbprint'] = $CertificateData.Thumbprint
$CreateGPO['SerialNumber'] = $CertificateData.SerialNumber
$CreateGPO['Version'] = $CertificateData.Version
$CreateGPO['Handle'] = $CertificateData.Handle
$CreateGPO['SignatureAlgorithm'] = $CertificateData.SignatureAlgorithm.Value
$CreateGPO['SignatureAlgorithmName'] = $CertificateData.SignatureAlgorithm.FriendlyName
$CreateGPO['KeyUsages'] = $CertificateData.Extensions.KeyUsages
$CreateGPO.Remove('Data')
}
$CreateGPO['Filters'] = $Setting.Filters
$CreateGPO['Linked'] = $GPO.Linked
$CreateGPO['LinksCount'] = $GPO.LinksCount
$CreateGPO['Links'] = $GPO.Links
[PSCustomObject] $CreateGPO
}
}
}
+25
View File
@@ -1,4 +1,29 @@
function ConvertTo-XMLDriveMapSettings {
<#
.SYNOPSIS
Converts a PowerShell custom object representing drive mapping settings into XML format.
.DESCRIPTION
This function takes a PowerShell custom object representing drive mapping settings and converts it into XML format for storage or transmission.
.PARAMETER GPO
The PowerShell custom object representing the drive mapping settings.
.PARAMETER SingleObject
Indicates whether to convert a single object or multiple objects.
.EXAMPLE
ConvertTo-XMLDriveMapSettings -GPO $driveMapSettingsObject -SingleObject
Description:
Converts the $driveMapSettingsObject into XML format for a single object.
.EXAMPLE
$driveMapSettings | ConvertTo-XMLDriveMapSettings -SingleObject
Description:
Converts multiple drive mapping settings in $driveMapSettings into XML format for each object.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+34
View File
@@ -1,4 +1,38 @@
function ConvertTo-XMLEventLog {
<#
.SYNOPSIS
Converts Group Policy Object (GPO) data to an XML event log format.
.DESCRIPTION
This function takes a PSCustomObject representing GPO data and converts it to an XML event log format. It creates a structured XML output with specific GPO properties.
.PARAMETER GPO
Specifies the PSCustomObject containing GPO data to be converted.
.EXAMPLE
$GPOData = [PSCustomObject]@{
DisplayName = 'Example GPO'
DomainName = 'example.com'
GUID = '12345678-1234-1234-1234-1234567890AB'
GpoType = 'Security'
DataSet = @(
[PSCustomObject]@{
Log = 'Application'
Name = 'AuditLogRetentionPeriod'
SettingNumber = '1'
},
[PSCustomObject]@{
Log = 'System'
Name = 'MaximumLogSize'
SettingNumber = '1024'
}
)
Linked = $true
LinksCount = 2
Links = @('OU=Finance,DC=example,DC=com', 'OU=IT,DC=example,DC=com')
}
ConvertTo-XMLEventLog -GPO $GPOData
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO
+114
View File
@@ -0,0 +1,114 @@
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
}
}
}
}
+28
View File
@@ -1,4 +1,32 @@
function ConvertTo-XMLGenericPolicy {
<#
.SYNOPSIS
Converts a PowerShell custom object representing generic policy settings into XML format.
.DESCRIPTION
This function takes a PowerShell custom object representing generic policy settings and converts it into XML format for storage or transmission.
.PARAMETER GPO
The PowerShell custom object representing the generic policy settings.
.PARAMETER Category
An array of categories for the generic policy settings.
.PARAMETER SingleObject
Indicates whether to convert a single object or multiple objects.
.EXAMPLE
ConvertTo-XMLGenericPolicy -GPO $genericPolicyObject -Category @('Category1', 'Category2') -SingleObject
Description:
Converts the $genericPolicyObject into XML format for multiple categories as a single object.
.EXAMPLE
$genericPolicyObjects | ConvertTo-XMLGenericPolicy -Category @('Category1') -SingleObject
Description:
Converts multiple generic policy settings in $genericPolicyObjects into XML format for a single category.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+25
View File
@@ -1,4 +1,29 @@
function ConvertTo-XMLGenericPublicKey {
<#
.SYNOPSIS
Converts a PSCustomObject representing a Group Policy Object (GPO) to an XML format.
.DESCRIPTION
This function takes a PSCustomObject representing a GPO and converts it to an XML format. It extracts specific properties from the GPO object and organizes them into a structured XML output.
.PARAMETER GPO
Specifies the PSCustomObject representing the GPO to be converted.
.PARAMETER Category
Specifies an array of strings representing categories to include in the XML output.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple GPO objects.
.EXAMPLE
ConvertTo-XMLGenericPublicKey -GPO $MyGPO -Category @("Category1", "Category2") -SingleObject
Converts the PSCustomObject $MyGPO to an XML format including categories "Category1" and "Category2" as a single object.
.EXAMPLE
$GPOs | ConvertTo-XMLGenericPublicKey -Category @("Category1")
Converts multiple GPOs in the $GPOs array to an XML format including category "Category1".
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
@@ -1,4 +1,29 @@
function ConvertTo-XMLGenericSecuritySettings {
<#
.SYNOPSIS
Converts Generic Security Settings to XML format.
.DESCRIPTION
This function converts Generic Security Settings to XML format for further processing.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) to convert.
.PARAMETER Category
Specifies the category of settings to convert.
.EXAMPLE
ConvertTo-XMLGenericSecuritySettings -GPO $GPOObject -Category 'Security'
Description:
Converts the security settings of the specified GPO object to XML format.
.EXAMPLE
ConvertTo-XMLGenericSecuritySettings -GPO $GPOObject -Category 'Network'
Description:
Converts the network settings of the specified GPO object to XML format.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+22
View File
@@ -1,4 +1,26 @@
function ConvertTo-XMLLocalGroups {
<#
.SYNOPSIS
Converts Group Policy Objects (GPO) to XML format for local groups.
.DESCRIPTION
This function converts Group Policy Objects (GPO) to XML format for local groups. It takes a GPO object and an optional switch to process a single object.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) to be converted to XML format.
.PARAMETER SingleObject
Indicates whether to process a single GPO object.
.EXAMPLE
ConvertTo-XMLLocalGroups -GPO $myGPO
Converts the specified GPO object to XML format for local groups.
.EXAMPLE
ConvertTo-XMLLocalGroups -GPO $myGPO -SingleObject
Converts a single GPO object to XML format for local groups.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+23
View File
@@ -1,4 +1,27 @@
function ConvertTo-XMLLocalUser {
<#
.SYNOPSIS
Converts Group Policy Objects (GPO) data to XML format for local users.
.DESCRIPTION
This function converts GPO data to XML format specifically for local users. It extracts relevant user settings from the GPO data and organizes them into a structured XML format.
.PARAMETER GPO
Specifies the GPO object containing user data to be converted.
.PARAMETER SingleObject
Indicates whether to convert a single user object or multiple user objects.
.EXAMPLE
ConvertTo-XMLLocalUser -GPO $myGPO -SingleObject
Converts a single GPO object to XML format for local users.
.EXAMPLE
ConvertTo-XMLLocalUser -GPO $myGPO
Converts multiple GPO objects to XML format for local users.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+31
View File
@@ -1,4 +1,35 @@
function ConvertTo-XMLNested {
<#
.SYNOPSIS
Converts nested XML elements to a structured format for further processing.
.DESCRIPTION
This function recursively converts nested XML elements to a structured format for easier manipulation and analysis. It extracts properties from the XML elements and organizes them into a hierarchical structure.
.PARAMETER CreateGPO
Specifies the dictionary representing the XML structure being created.
.PARAMETER Setting
Specifies the XML element to be processed.
.PARAMETER SkipNames
Specifies an array of property names to skip during processing.
.PARAMETER Name
Specifies the name of the current XML element being processed.
.EXAMPLE
ConvertTo-XMLNested -CreateGPO $MyGPO -Setting $XmlSetting -SkipNames @('Name', 'Value') -Name 'Root'
Description:
Converts the nested XML element $XmlSetting into a structured format stored in $MyGPO, skipping properties 'Name' and 'Value', with the root element named 'Root'.
.EXAMPLE
$XmlElements | ForEach-Object { ConvertTo-XMLNested -CreateGPO $Output -Setting $_ -SkipNames @('ID') -Name 'Element' }
Description:
Processes multiple XML elements in $XmlElements, converting each into a structured format stored in $Output, skipping property 'ID', and naming each element 'Element'.
#>
[cmdletBinding()]
param(
[System.Collections.IDictionary] $CreateGPO,
+22
View File
@@ -1,4 +1,26 @@
function ConvertTo-XMLPolicies {
<#
.SYNOPSIS
Converts Group Policy Object (GPO) data to XML format.
.DESCRIPTION
This function converts the provided GPO data into XML format for easier processing and analysis.
.PARAMETER GPO
Specifies the GPO object containing the data to be converted.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple GPO objects.
.EXAMPLE
ConvertTo-XMLPolicies -GPO $myGPO -SingleObject
Converts a single GPO object $myGPO to XML format.
.EXAMPLE
ConvertTo-XMLPolicies -GPO $GPOList
Converts multiple GPO objects in $GPOList to XML format.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+22
View File
@@ -1,4 +1,26 @@
function ConvertTo-XMLPrinter {
<#
.SYNOPSIS
Converts Group Policy Objects (GPO) to an XML printer format.
.DESCRIPTION
This function converts GPO objects to an XML printer format, providing detailed information about printers and printer connections.
.PARAMETER GPO
Specifies the GPO object to be converted.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple GPO objects.
.EXAMPLE
ConvertTo-XMLPrinter -GPO $myGPO -SingleObject
Converts a single GPO object $myGPO to an XML printer format.
.EXAMPLE
ConvertTo-XMLPrinter -GPO $myGPO
Converts multiple GPO objects to an XML printer format.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+28
View File
@@ -1,4 +1,32 @@
function ConvertTo-XMLPrinterInternal {
<#
.SYNOPSIS
Converts printer settings to XML format for internal use.
.DESCRIPTION
This function converts printer settings to XML format for internal use. It takes a GPO object, entry details, type, and a switch for limited output. The output includes various printer settings in XML format.
.PARAMETER GPO
The GPO object containing printer settings.
.PARAMETER Entry
Details of the printer entry.
.PARAMETER Type
The type of printer setting.
.PARAMETER Limited
Switch to output limited printer settings.
.EXAMPLE
ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type "Network" -Limited
Converts the specified printer settings to XML format with limited output.
.EXAMPLE
ConvertTo-XMLPrinterInternal -GPO $GPO -Entry $Entry -Type "Local"
Converts the specified printer settings to XML format without limited output.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
@@ -1,4 +1,59 @@
function ConvertTo-XMLRegistryAutologon {
<#
.SYNOPSIS
Converts a Group Policy Object (GPO) to an XML format for Registry Autologon settings.
.DESCRIPTION
This function takes a GPO object as input and extracts relevant Registry Autologon settings to create an XML representation.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) to be converted to XML format for Registry Autologon settings.
.EXAMPLE
$GPO = [PSCustomObject]@{
DisplayName = "Autologon GPO"
DomainName = "example.com"
GUID = "12345678-1234-5678-1234-567812345678"
GpoType = "Registry"
DataSet = [PSCustomObject]@{
Registry = @(
[PSCustomObject]@{
Properties = [PSCustomObject]@{
Key = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
Name = "AutoAdminLogon"
Value = $true
Changed = Get-Date
}
},
[PSCustomObject]@{
Properties = [PSCustomObject]@{
Key = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
Name = "DefaultDomainName"
Value = "example.com"
Changed = Get-Date
}
},
[PSCustomObject]@{
Properties = [PSCustomObject]@{
Key = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
Name = "DefaultUserName"
Value = "user"
Changed = Get-Date
}
},
[PSCustomObject]@{
Properties = [PSCustomObject]@{
Key = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
Name = "DefaultPassword"
Value = "password"
Changed = Get-Date
}
}
)
}
}
ConvertTo-XMLRegistryAutologon -GPO $GPO
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO
@@ -1,4 +1,34 @@
function ConvertTo-XMLRegistryAutologonOnReport {
<#
.SYNOPSIS
Converts Group Policy Object (GPO) settings related to Autologon into an XML report.
.DESCRIPTION
This function takes a GPO object as input and extracts Autologon related settings to generate an XML report.
.PARAMETER GPO
Specifies the GPO object containing Autologon settings.
.EXAMPLE
$GPO = [PSCustomObject]@{
DisplayName = "Autologon GPO"
DomainName = "example.com"
GUID = "12345678-1234-1234-1234-1234567890AB"
GpoType = "Security"
Settings = @(
[PSCustomObject]@{
Key = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
Name = "AutoAdminLogon"
Value = $true
Changed = (Get-Date)
}
)
Linked = $true
LinksCount = 1
Links = "area1.local"
}
ConvertTo-XMLRegistryAutologonOnReport -GPO $GPO
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO
@@ -1,4 +1,19 @@
function ConvertTo-XMLRegistryInternetExplorerZones {
<#
.SYNOPSIS
Converts registry settings related to Internet Explorer security zones into XML format.
.DESCRIPTION
This function converts registry settings from a Group Policy Object (GPO) related to Internet Explorer security zones into XML format. It extracts relevant information such as display name, domain name, GUID, GPO type, configuration, policy type, and security zone based on the registry settings provided.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) containing the registry settings to be converted.
.EXAMPLE
ConvertTo-XMLRegistryInternetExplorerZones -GPO $GPO
Converts the registry settings from the specified Group Policy Object ($GPO) related to Internet Explorer security zones into XML format.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO
+22
View File
@@ -1,4 +1,26 @@
function ConvertTo-XMLRegistrySettings {
<#
.SYNOPSIS
Converts Group Policy Object (GPO) settings to XML format.
.DESCRIPTION
This function converts the settings of a Group Policy Object (GPO) to XML format. It can be used to export GPO settings for analysis or backup purposes.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) to convert to XML format.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple GPO objects.
.EXAMPLE
ConvertTo-XMLRegistrySettings -GPO $myGPO -SingleObject
Converts a single GPO object to XML format.
.EXAMPLE
ConvertTo-XMLRegistrySettings -GPO $myGPO
Converts multiple GPO objects to XML format.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+22
View File
@@ -1,4 +1,26 @@
function ConvertTo-XMLScripts {
<#
.SYNOPSIS
Converts Group Policy Objects (GPO) to XML scripts.
.DESCRIPTION
This function converts GPO objects to XML scripts for further processing.
.PARAMETER GPO
Specifies the GPO object to be converted.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple GPO objects.
.EXAMPLE
ConvertTo-XMLScripts -GPO $myGPO -SingleObject
Converts a single GPO object to an XML script.
.EXAMPLE
ConvertTo-XMLScripts -GPO $myGPO
Converts multiple GPO objects to XML scripts.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+22
View File
@@ -1,4 +1,26 @@
function ConvertTo-XMLSecurityOptions {
<#
.SYNOPSIS
Converts Group Policy Object (GPO) data to XML security options.
.DESCRIPTION
This function converts GPO data to XML security options for further processing.
.PARAMETER GPO
Specifies the GPO object to convert.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object.
.EXAMPLE
ConvertTo-XMLSecurityOptions -GPO $myGPO -SingleObject
Converts a single GPO object to XML security options.
.EXAMPLE
ConvertTo-XMLSecurityOptions -GPO $myGPO
Converts multiple GPO objects to XML security options.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
@@ -1,4 +1,26 @@
function ConvertTo-XMLSoftwareInstallation {
<#
.SYNOPSIS
Converts Group Policy Object (GPO) data into XML format for software installation.
.DESCRIPTION
This function takes GPO data and converts it into XML format suitable for software installation. It creates an XML structure with detailed information about each software installation entry.
.PARAMETER GPO
Specifies the GPO object containing software installation data.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple objects.
.EXAMPLE
ConvertTo-XMLSoftwareInstallation -GPO $GPOObject -SingleObject
Converts a single GPO object into XML format for software installation.
.EXAMPLE
ConvertTo-XMLSoftwareInstallation -GPO $GPOObject
Converts multiple GPO objects into XML format for software installation.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+22
View File
@@ -1,4 +1,26 @@
function ConvertTo-XMLSystemServices {
<#
.SYNOPSIS
Converts Group Policy Objects (GPO) data to an XML format for System Services.
.DESCRIPTION
This function takes a GPO object and converts its data into an XML format suitable for System Services. It organizes the GPO data including service names, startup modes, security auditing status, permissions, and security descriptors.
.PARAMETER GPO
Specifies the GPO object to be converted to XML format.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple GPO objects.
.EXAMPLE
ConvertTo-XMLSystemServices -GPO $myGPO -SingleObject
Converts a single GPO object $myGPO to XML format for System Services.
.EXAMPLE
ConvertTo-XMLSystemServices -GPO $myGPO
Converts multiple GPO objects to XML format for System Services.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+21
View File
@@ -1,4 +1,25 @@
function ConvertTo-XMLSystemServicesNT {
<#
.SYNOPSIS
Converts a Group Policy Object (GPO) to an XML representation for System Services on Windows NT.
.DESCRIPTION
This function takes a GPO object and converts it into an XML format specifically tailored for System Services on Windows NT. It extracts relevant information about each service defined in the GPO and structures it in an XML format.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) to be converted to XML.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple GPO objects.
.EXAMPLE
ConvertTo-XMLSystemServicesNT -GPO $myGPO -SingleObject
Converts a single GPO object $myGPO to an XML representation for System Services on Windows NT.
.EXAMPLE
$GPOs | ConvertTo-XMLSystemServicesNT
Converts multiple GPO objects in the $GPOs array to XML representations for System Services on Windows NT.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+21
View File
@@ -1,4 +1,25 @@
function ConvertTo-XMLTaskScheduler {
<#
.SYNOPSIS
Converts Task Scheduler settings to XML format.
.DESCRIPTION
This function converts Task Scheduler settings from a PSCustomObject to XML format. It provides detailed information about the task settings for each task.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) containing the Task Scheduler settings.
.PARAMETER SingleObject
Indicates whether to convert a single object or multiple objects.
.EXAMPLE
ConvertTo-XMLTaskScheduler -GPO $GPOObject -SingleObject
Converts the Task Scheduler settings from the specified GPO object to XML format for a single object.
.EXAMPLE
ConvertTo-XMLTaskScheduler -GPO $GPOObject
Converts the Task Scheduler settings from the specified GPO object to XML format for multiple objects.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
@@ -1,4 +1,26 @@
function ConvertTo-XMLUserRightsAssignment {
<#
.SYNOPSIS
Converts user rights assignments to XML format.
.DESCRIPTION
This function converts user rights assignments to XML format based on the provided GPO object.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) to extract user rights assignments from.
.PARAMETER SingleObject
Indicates whether to process a single object.
.EXAMPLE
ConvertTo-XMLUserRightsAssignment -GPO $GPOObject -SingleObject
Converts user rights assignments from a single GPO object to XML format.
.EXAMPLE
ConvertTo-XMLUserRightsAssignment -GPO $GPOObject
Converts user rights assignments from multiple GPO objects to XML format.
#>
[cmdletBinding()]
param(
[PSCustomObject] $GPO,
+66
View File
@@ -0,0 +1,66 @@
function ConvertTo-XMLWindowsFirewall {
<#
.SYNOPSIS
Converts a Group Policy Object (GPO) to an XML representation for Windows Firewall settings.
.DESCRIPTION
This function takes a GPO object and converts it into an XML format suitable for Windows Firewall settings. It can handle single GPO objects or multiple GPO objects.
.PARAMETER GPO
Specifies the Group Policy Object to be converted to XML.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple GPO objects.
.EXAMPLE
ConvertTo-XMLWindowsFirewall -GPO $myGPO -SingleObject
Converts a single GPO object $myGPO to an XML representation for Windows Firewall settings.
.EXAMPLE
$GPOs | ConvertTo-XMLWindowsFirewall
Converts multiple GPO objects in the $GPOs array to XML representations for Windows Firewall settings.
#>
[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 ($Policy in $GPO.DataSet) {
[PSCustomObject] @{
Name = $Policy.LocalName
Version = $Policy.PolicyVersion.Value
}
}
$CreateGPO['Count'] = $CreateGPO['Settings'].Count
$CreateGPO['Linked'] = $GPO.Linked
$CreateGPO['LinksCount'] = $GPO.LinksCount
$CreateGPO['Links'] = $GPO.Links
[PSCustomObject] $CreateGPO
} else {
foreach ($Policy in $GPO.DataSet) {
[PSCustomObject]@{
DisplayName = $GPO.DisplayName
DomainName = $GPO.DomainName
GUID = $GPO.GUID
GpoType = $GPO.GpoType
Name = $Policy.LocalName
Version = $Policy.PolicyVersion.Value
Linked = $GPO.Linked
LinksCount = $GPO.LinksCount
Links = $GPO.Links
}
}
}
}
@@ -0,0 +1,77 @@
function ConvertTo-XMLWindowsFirewallConnectionSecurityAuthentiation {
<#
.SYNOPSIS
Converts Windows Firewall Connection Security Authentication settings to XML format.
.DESCRIPTION
This function converts Windows Firewall Connection Security Authentication settings from a PSCustomObject to XML format. It provides detailed information about the authentication settings for each connection.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) containing the Windows Firewall Connection Security Authentication settings.
.PARAMETER SingleObject
Indicates whether to convert a single object or multiple objects.
.EXAMPLE
ConvertTo-XMLWindowsFirewallConnectionSecurityAuthentiation -GPO $GPOObject -SingleObject
Converts the Windows Firewall Connection Security Authentication settings from the specified GPO object to XML format for a single object.
.EXAMPLE
ConvertTo-XMLWindowsFirewallConnectionSecurityAuthentiation -GPO $GPOObject
Converts the Windows Firewall Connection Security Authentication settings from the specified GPO object to XML format for multiple objects.
#>
[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 ($Connection in $GPO.DataSet) {
[PSCustomObject] @{
Name = $Connection.LocalName
Version = $Connection.Version
ConnectionGUID = $Connection.GUID
Method = $Connection.AuthenticationSuites.Method #: MachineCert
CAName = $Connection.AuthenticationSuites.CAName #: DC = xyz, DC = evotec, DC = ad, CN = ad-ADCS-CA
CertAccountMapping = if ($Connection.AuthenticationSuites.CertAccountMapping -eq 'true') { $true } elseif ($Connection.AuthenticationSuites.CertAccountMapping -eq 'false') { $false } else { $Connection.AuthenticationSuites.CertAccountMapping }
ExcludeCAName = if ($Connection.AuthenticationSuites.ExcludeCAName -eq 'true') { $true } elseif ($Connection.AuthenticationSuites.ExcludeCAName -eq 'false') { $false } else { $Connection.AuthenticationSuites.ExcludeCAName }
HealthCert = if ($Connection.AuthenticationSuites.HealthCert -eq 'true') { $true } elseif ($Connection.AuthenticationSuites.HealthCert -eq 'false') { $false } else { $Connection.AuthenticationSuites.HealthCert }
}
}
$CreateGPO['Count'] = $CreateGPO['Settings'].Count
$CreateGPO['Linked'] = $GPO.Linked
$CreateGPO['LinksCount'] = $GPO.LinksCount
$CreateGPO['Links'] = $GPO.Links
[PSCustomObject] $CreateGPO
} else {
foreach ($Connection in $GPO.DataSet) {
[PSCustomObject]@{
DisplayName = $GPO.DisplayName
DomainName = $GPO.DomainName
GUID = $GPO.GUID
GpoType = $GPO.GpoType
Name = $Connection.LocalName
Version = $Connection.Version
ConnectionGUID = $Connection.GUID
Method = $Connection.AuthenticationSuites.Method #: MachineCert
CAName = $Connection.AuthenticationSuites.CAName #: DC = xyz, DC = evotec, DC = ad, CN = ad-ADCS-CA
CertAccountMapping = if ($Connection.AuthenticationSuites.CertAccountMapping -eq 'true') { $true } elseif ($Connection.AuthenticationSuites.CertAccountMapping -eq 'false') { $false } else { $Connection.AuthenticationSuites.CertAccountMapping }
ExcludeCAName = if ($Connection.AuthenticationSuites.ExcludeCAName -eq 'true') { $true } elseif ($Connection.AuthenticationSuites.ExcludeCAName -eq 'false') { $false } else { $Connection.AuthenticationSuites.ExcludeCAName }
HealthCert = if ($Connection.AuthenticationSuites.HealthCert -eq 'true') { $true } elseif ($Connection.AuthenticationSuites.HealthCert -eq 'false') { $false } else { $Connection.AuthenticationSuites.HealthCert }
Linked = $GPO.Linked
LinksCount = $GPO.LinksCount
Links = $GPO.Links
}
}
}
}
@@ -0,0 +1,88 @@
function ConvertTo-XMLWindowsFirewallProfile {
<#
.SYNOPSIS
Converts a Windows Firewall profile to XML format.
.DESCRIPTION
This function takes a Windows Firewall profile object and converts it to XML format for further processing.
.PARAMETER GPO
Specifies the Windows Firewall profile object to convert.
.PARAMETER SingleObject
Indicates whether to convert a single object or multiple objects.
.EXAMPLE
ConvertTo-XMLWindowsFirewallProfile -GPO $FirewallProfile -SingleObject
Converts a single Windows Firewall profile object to XML format.
.EXAMPLE
ConvertTo-XMLWindowsFirewallProfile -GPO $FirewallProfiles -SingleObject:$false
Converts multiple Windows Firewall profile objects to XML format.
#>
[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 ($Profile in $GPO.DataSet) {
[PSCustomObject] @{
Profile = $Profile.LocalName
EnableFirewall = if ($Profile.EnableFirewall.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
AllowLocalIPsecPolicyMerge = if ($Profile.AllowLocalIPsecPolicyMerge.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
AllowLocalPolicyMerge = if ($Profile.AllowLocalPolicyMerge.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DefaultInboundAction = if ($Profile.DefaultInboundAction.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DefaultOutboundAction = if ($Profile.DefaultOutboundAction.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DisableNotifications = if ($Profile.DisableNotifications.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DisableUnicastResponsesToMulticastBroadcast = if ($Profile.DisableUnicastResponsesToMulticastBroadcast.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DoNotAllowExceptions = if ($Profile.DoNotAllowExceptions.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
LogFilePath = if ($Profile.LogFilePath.Value) { $Profile.LogFilePath.Value } else { 'Not configured' }
LogDroppedPackets = if ($Profile.LogDroppedPackets.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
LogFileSize = if ($Profile.LogFileSize.Value) { $Profile.LogFileSize.Value } else { 'Not configured' }
LogSuccessfulConnections = if ($Profile.LogSuccessfulConnections.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
}
}
$CreateGPO['Count'] = $CreateGPO['Settings'].Count
$CreateGPO['Linked'] = $GPO.Linked
$CreateGPO['LinksCount'] = $GPO.LinksCount
$CreateGPO['Links'] = $GPO.Links
[PSCustomObject] $CreateGPO
} else {
foreach ($Profile in $GPO.DataSet) {
[PSCustomObject]@{
DisplayName = $GPO.DisplayName
DomainName = $GPO.DomainName
GUID = $GPO.GUID
GpoType = $GPO.GpoType
Profile = $Profile.LocalName
EnableFirewall = if ($Profile.EnableFirewall.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
AllowLocalIPsecPolicyMerge = if ($Profile.AllowLocalIPsecPolicyMerge.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
AllowLocalPolicyMerge = if ($Profile.AllowLocalPolicyMerge.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DefaultInboundAction = if ($Profile.DefaultInboundAction.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DefaultOutboundAction = if ($Profile.DefaultOutboundAction.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DisableNotifications = if ($Profile.DisableNotifications.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DisableUnicastResponsesToMulticastBroadcast = if ($Profile.DisableUnicastResponsesToMulticastBroadcast.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
DoNotAllowExceptions = if ($Profile.DoNotAllowExceptions.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
LogFilePath = if ($Profile.LogFilePath.Value) { $Profile.LogFilePath.Value } else { 'Not configured' }
LogDroppedPackets = if ($Profile.LogDroppedPackets.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
LogFileSize = if ($Profile.LogFileSize.Value) { $Profile.LogFileSize.Value } else { 'Not configured' }
LogSuccessfulConnections = if ($Profile.LogSuccessfulConnections.Value -eq 'true') { 'Yes' } elseif ($Profile.EnableFirewall.Value -eq 'false') { 'No' } else { 'Not configured' }
Linked = $GPO.Linked
LinksCount = $GPO.LinksCount
Links = $GPO.Links
}
}
}
}
@@ -0,0 +1,155 @@
function ConvertTo-XMLWindowsFirewallRules {
<#
.SYNOPSIS
Converts Windows Firewall rules to XML format.
.DESCRIPTION
This function converts Windows Firewall rules to XML format for easier management and analysis.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) containing the firewall rules to be converted.
.PARAMETER SingleObject
Indicates whether to convert a single firewall rule object.
.EXAMPLE
ConvertTo-XMLWindowsFirewallRules -GPO $GPOObject -SingleObject
Converts all firewall rules in the specified GPO to XML format.
.EXAMPLE
ConvertTo-XMLWindowsFirewallRules -GPO $GPOObject
Converts all firewall rules in the specified GPO to XML format without creating a single object.
#>
[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 ($Rule in $GPO.DataSet) {
[PSCustomObject] @{
Version = $Rule.Version
Type = if ($Rule.Dir -eq 'In') { 'Inbound' } elseif ($Rule.Dir -eq 'Out') { 'Outbound' } else { $Rule.Dir }
Name = $Rule.Name
Action = $Rule.Action
Enabled = if ($Rule.Active -eq 'true') { $true } else { $false }
Profile = $Rule.Profile
Svc = $Rule.Svc
LocalAddressIPv4 = $Rule.LA4
LocalAddressIPv6 = $Rule.LA6
RemoteAddressIPV4 = $Rule.RA4
RemoteAddressIPV6 = $Rule.RA6
LocalPort = $Rule.LPort
RemotePort = $Rule.RPort
Description = $Rule.Desc
EmbedCtxt = $Rule.EmbedCtxt
Edge = $Rule.Edge
IFType = $Rule.IFType
Security = $Rule.Security
App = $Rule.App
Protocol = $Rule.Protocol
RMAuth = $Rule.RMAuth
RUAuth = $Rule.RUAuth
ICMP4 = $Rule.ICMP4
LocalName = $Rule.LocalName
}
}
$CreateGPO['Count'] = $CreateGPO['Settings'].Count
$CreateGPO['Linked'] = $GPO.Linked
$CreateGPO['LinksCount'] = $GPO.LinksCount
$CreateGPO['Links'] = $GPO.Links
[PSCustomObject] $CreateGPO
} else {
foreach ($Rule in $GPO.DataSet) {
[PSCustomObject]@{
DisplayName = $GPO.DisplayName
DomainName = $GPO.DomainName
GUID = $GPO.GUID
GpoType = $GPO.GpoType
Version = $Rule.Version
Type = if ($Rule.Dir -eq 'In') { 'Inbound' } elseif ($Rule.Dir -eq 'Out') { 'Outbound' } else { $Rule.Dir }
Name = $Rule.Name
Action = $Rule.Action
Enabled = if ($Rule.Active -eq 'true') { $true } else { $false }
Profile = $Rule.Profile
Svc = $Rule.Svc
LocalAddressIPv4 = $Rule.LA4
LocalAddressIPv6 = $Rule.LA6
RemoteAddressIPV4 = $Rule.RA4
RemoteAddressIPV6 = $Rule.RA6
LocalPort = $Rule.LPort
RemotePort = $Rule.RPort
Description = $Rule.Desc
EmbedCtxt = $Rule.EmbedCtxt
Edge = $Rule.Edge
IFType = $Rule.IFType
Security = $Rule.Security
App = $Rule.App
Protocol = $Rule.Protocol
RMAuth = $Rule.RMAuth
RUAuth = $Rule.RUAuth
ICMP4 = $Rule.ICMP4
LocalName = $Rule.LocalName
Linked = $GPO.Linked
LinksCount = $GPO.LinksCount
Links = $GPO.Links
}
}
}
}
<#
Version : 2.30
Action : Allow
Name : @%SystemRoot%\system32\firewallapi.dll,-37303
Dir : In
App : %SystemRoot%\system32\svchost.exe
Svc : dnscache
Profile : Public
RA4 : LocalSubnet
RA6 : LocalSubnet
LPort : 5353
Protocol : 17
Desc : @%SystemRoot%\system32\firewallapi.dll,-37304
Active : true
EmbedCtxt : @%SystemRoot%\system32\firewallapi.dll,-37302
Version : 2.30
Action : Allow
Name : TEST APP
Dir : In
App : C:\Test\exe.exe
Active : true
Version : 2.30
Action : Block
Name : Blo
Dir : Out
App : dfdff
Active : true
Version : 2.30
Action : Block
Name : @FirewallAPI.dll,-36012
Dir : Out
App : %SystemRoot%\system32\svchost.exe
Svc : Qwave
Profile : {Private, Public}
RPort : 2177
Protocol : 17
Desc : @FirewallAPI.dll,-36013
Active : true
EmbedCtxt : @FirewallAPI.dll,-36001
#>
@@ -0,0 +1,100 @@
function ConvertTo-XMLWindowsFirewallSecurityRules {
<#
.SYNOPSIS
Converts Windows Firewall security rules data to XML format.
.DESCRIPTION
This function converts Windows Firewall security rules data to XML format. It takes a GPO object as input and generates XML data representing the security rules.
.PARAMETER GPO
Specifies the Group Policy Object (GPO) containing the security rules data.
.PARAMETER SingleObject
Indicates whether to convert a single GPO object or multiple security rules.
.EXAMPLE
$GPO = Get-GPO -Name "FirewallRules"
ConvertTo-XMLWindowsFirewallSecurityRules -GPO $GPO -SingleObject
Converts the security rules data from the GPO "FirewallRules" to XML format for a single GPO object.
.EXAMPLE
$GPOs = Get-GPO -All
ConvertTo-XMLWindowsFirewallSecurityRules -GPO $GPOs -SingleObject:$false
Converts the security rules data from all GPOs to XML format for multiple security rules.
#>
[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 ($Rule in $GPO.DataSet) {
[PSCustomObject] @{
Version = $Rule.Version
Name = $Rule.Name
Action = $Rule.Action
Enabled = if ($Rule.Active -eq 'true') { $true } else { $false }
Auth1Set = $Rule.Auth1Set
Auth2Set = $Rule.Auth2Set
Crypto2Set = $Rule.Crypto2Set
Description = $Rule.Desc
}
}
$CreateGPO['Count'] = $CreateGPO['Settings'].Count
$CreateGPO['Linked'] = $GPO.Linked
$CreateGPO['LinksCount'] = $GPO.LinksCount
$CreateGPO['Links'] = $GPO.Links
[PSCustomObject] $CreateGPO
} else {
foreach ($Rule in $GPO.DataSet) {
[PSCustomObject]@{
DisplayName = $GPO.DisplayName
DomainName = $GPO.DomainName
GUID = $GPO.GUID
GpoType = $GPO.GpoType
Version = $Rule.Version
Name = $Rule.Name
Action = $Rule.Action
Enabled = if ($Rule.Active -eq 'true') { $true } else { $false }
Auth1Set = $Rule.Auth1Set
Auth2Set = $Rule.Auth2Set
Crypto2Set = $Rule.Crypto2Set
Description = $Rule.Desc
Linked = $GPO.Linked
LinksCount = $GPO.LinksCount
Links = $GPO.Links
}
}
}
}
<#
Version : 2.30
Action : Boundary
Name : TeST Aut
Auth1Set : {E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE3}
Auth2Set : {E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE4}
Crypto2Set : {E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE2}
Desc :
Active : true
Version : 2.30
Action : Boundary
Name : CA TEST
Auth1Set : {0E3A2DDC-F31B-42B5-BEAC-890752F9C0BB}
Auth2Set : EmptySet
Crypto2Set : {E5A5D32A-4BCE-4e4d-B07F-4AB1BA7E5FE2}
Desc :
Active : true
#>
+15
View File
@@ -1,4 +1,19 @@
function Find-GPOPassword {
<#
.SYNOPSIS
Finds and decrypts the password stored in the cpassword attribute of a Group Policy Object (GPO) XML file.
.DESCRIPTION
This function takes the path to a GPO XML file as input, searches for the cpassword attribute, decrypts it, and returns the password.
.PARAMETER Path
Specifies the path to the GPO XML file.
.EXAMPLE
Find-GPOPassword -Path "C:\GPOs\GPO1.xml"
Searches for the cpassword attribute in the GPO XML file "GPO1.xml" and returns the decrypted password.
#>
[cmdletBinding()]
param(
[string] $Path
+21
View File
@@ -1,4 +1,25 @@
function Format-CamelCaseToDisplayName {
<#
.SYNOPSIS
Converts a camelCase string to a display name with spaces.
.DESCRIPTION
This function takes a camelCase string and converts it to a display name by adding spaces between words.
.PARAMETER Text
The camelCase string(s) to be converted to display name.
.PARAMETER AddChar
The character to add between words in the display name.
.EXAMPLE
Format-CamelCaseToDisplayName -Text 'testString' -AddChar ' '
Converts 'testString' to 'Test String'
.EXAMPLE
Format-CamelCaseToDisplayName -Text 'anotherExample' -AddChar '-'
Converts 'anotherExample' to 'Another-Example'
#>
[cmdletBinding()]
param(
[string[]] $Text,
+220
View File
@@ -0,0 +1,220 @@
function Get-ADOrganizationalUnitObject {
<#
.SYNOPSIS
Gets number of objects in a given OU/OUs with ability to find only those being affected by GPOs.
.DESCRIPTION
Gets number of objects in a given OU/OUs with ability to find only those being affected by GPOs.
.PARAMETER OrganizationalUnit
One or more organizational units to get the number of objects in.
.PARAMETER Extended
Adds all objects affected for better understanding
.PARAMETER Summary
Returns only summary for given OU/OUs
.PARAMETER IncludeAffectedOnly
Ignores any object types that are not Users or Computers
.PARAMETER Forest
Target different Forest, by default current forest is used
.PARAMETER ExcludeDomains
Exclude domain from search, by default whole forest is scanned
.PARAMETER IncludeDomains
Include only specific domains, by default whole forest is scanned
.PARAMETER AsHashTable
Returns results in form of hashtable
.PARAMETER ExtendedForestInformation
Ability to provide Forest Information from another command to speed up processing
.EXAMPLE
$OUs = @(
'OU=SE,OU=ITR01,DC=ad,DC=evotec,DC=xyz'
'OU=US,OU=ITR01,DC=ad,DC=evotec,DC=xyz'
'OU=ITR01,DC=ad,DC=evotec,DC=xyz'
'OU=Users,OU=User,OU=SE1,OU=SE,OU=ITR01,DC=ad,DC=evotec,DC=xyz'
)
Get-ADOrganizationalUnitObject -OrganizationalUnit $OUs -IncludeAffectedOnly | Format-Table
.EXAMPLE
$OUs = @(
'OU=SE,OU=ITR01,DC=ad,DC=evotec,DC=xyz'
'OU=US,OU=ITR01,DC=ad,DC=evotec,DC=xyz'
'OU=ITR01,DC=ad,DC=evotec,DC=xyz'
'OU=Users,OU=User,OU=SE1,OU=SE,OU=ITR01,DC=ad,DC=evotec,DC=xyz'
)
Get-ADOrganizationalUnitObject -OrganizationalUnit $OUs | Format-Table
.EXAMPLE
$OUs = @(
#'OU=SE,OU=ITR01,DC=ad,DC=evotec,DC=xyz'
#'OU=US,OU=ITR01,DC=ad,DC=evotec,DC=xyz'
'OU=Users,OU=User,OU=SE1,OU=SE,OU=ITR01,DC=ad,DC=evotec,DC=xyz'
'OU=ITR01,DC=ad,DC=evotec,DC=xyz'
)
Get-ADOrganizationalUnitObject -OrganizationalUnit $OUs -Summary -IncludeAffectedOnly | Format-List
.NOTES
General notes
#>
[cmdletBinding()]
param(
[parameter(Mandatory)][Array] $OrganizationalUnit,
[switch] $Extended,
[switch] $Summary,
[switch] $IncludeAffectedOnly,
[alias('ForestName')][string] $Forest,
[string[]] $ExcludeDomains,
[alias('Domain', 'Domains')][string[]] $IncludeDomains,
[switch] $AsHashTable,
[System.Collections.IDictionary] $ExtendedForestInformation
)
$CachedOu = [ordered] @{}
$ListOU = @(
foreach ($OU in $OrganizationalUnit) {
if ($OU.DistinguishedName) {
$OU.DistinguishedName
} else {
$OU
}
}
)
$ForestInformation = Get-WinADForestDetails -Extended -Forest $Forest -IncludeDomains $IncludeDomains -ExcludeDomains $ExcludeDomains -ExtendedForestInformation $ExtendedForestInformation
$OUCache = Get-GPOBlockedInheritance -AsHashTable -ExtendedForestInformation $ForestInformation
if ($Summary) {
$SummaryData = [ordered] @{
ObjectsClasses = [ordered] @{}
ObjectsTotalCount = 0
ObjectsBlockedInheritanceCount = 0
ObjectsTotal = [ordered] @{}
ObjectsBlockedInheritance = [ordered] @{}
DistinguishedName = [System.Collections.Generic.List[string]]::new()
}
}
foreach ($OU in $ListOU) {
$Domain = ConvertFrom-DistinguishedName -ToDomainCN -DistinguishedName $OU
$ObjectsInOu = Get-ADObject -LDAPFilter "(|(ObjectClass=user)(ObjectClass=contact)(ObjectClass=computer)(ObjectClass=group)(objectClass=inetOrgPerson)(ObjectClass=PrintQueue))" -SearchBase $OU -Server $ForestInformation['QueryServers'][$Domain]['hostname'][0]
#Write-Verbose "Get-GPOZaurrOrganizationalUnit - Processing $($Domain) / $($TOPOU.DistinguishedName) [$CountTop/$($TopOrganizationalUnits.Count)], found $($ObjectsInOu.Count) objects to process."
if (-not $CachedOu[$OU]) {
$CachedOu[$OU] = [ordered] @{
DistinguishedName = $OU
Domain = $Domain
'ObjectsClasses' = [ordered] @{} # only direct, indirect, but not with blocked inheritance
'ObjectsDirectCount' = 0
'ObjectsIndirectCount' = 0
'ObjectsTotalCount' = 0
'ObjectsTotalIncludingBlockedCount' = 0
'ObjectsBlockedInheritanceCount' = 0
}
if ($Extended) {
$CachedOu[$OU]['ObjectsDirect'] = [ordered] @{}
$CachedOu[$OU]['ObjectsIndirect'] = [ordered] @{}
$CachedOu[$OU]['ObjectsTotal'] = [ordered] @{}
$CachedOu[$OU]['ObjectsTotalIncludingBlocked'] = [ordered] @{}
$CachedOu[$OU]['ObjectsBlockedInheritance'] = [ordered] @{}
}
}
foreach ($Object in $ObjectsInOu) {
if ($IncludeAffectedOnly) {
if ($Object.ObjectClass -notin 'User', 'computer') {
continue
}
}
$Place = ConvertFrom-DistinguishedName -ToOrganizationalUnit -DistinguishedName $Object.DistinguishedName
if (-not $Place) {
# Write-Verbose -Message "Get-OrganizationalUnitObject - Processing object in container/root $($Object.DistinguishedName)"
}
if ($Place -and $OUCache[$Place]) {
$BlockedInheritance = $OUCache[$Place].BlockedInheritance
} else {
$BlockedInheritance = $false
}
if ($Summary) {
$SummaryData['DistinguishedName'].Add($OU)
$SummaryData['ObjectsClasses'][$Object.ObjectClass] = ''
if (-not $Place -or $Place -eq $OU) {
$SummaryData['ObjectsTotal'][$Object.DistinguishedName] = $Object
} else {
if ($BlockedInheritance) {
$SummaryData['ObjectsBlockedInheritance'][$Object.DistinguishedName] = $Object
} else {
$SummaryData['ObjectsTotal'][$Object.DistinguishedName] = $Object
}
}
} else {
# This is standard way of finding OU's
if (-not $Place -or $Place -eq $OU) {
$CachedOu[$OU]['ObjectsDirectCount']++
$CachedOu[$OU]['ObjectsTotalCount']++
# using hashtable to avoid duplicates
$CachedOu[$OU]['ObjectsClasses'][$Object.ObjectClass] = ''
# adding all objects to the list, excluding blocked inheritance
if ($Extended) {
$CachedOu[$OU]['ObjectsTotal'][$Object.DistinguishedName] = $Object
$CachedOu[$OU]['ObjectsDirect'][$Object.DistinguishedName] = $Object
}
} else {
if ($BlockedInheritance) {
# We only check for blocked inheritance if the object is not in the same OU
$CachedOu[$OU]['ObjectsBlockedInheritanceCount']++
if ($Extended) {
$CachedOu[$OU]['ObjectsBlockedInheritance'][$Object.DistinguishedName] = $Object
}
} else {
$CachedOu[$OU]['ObjectsIndirectCount']++
$CachedOu[$OU]['ObjectsTotalCount']++
# using hashtable to avoid duplicates
$CachedOu[$OU]['ObjectsClasses'][$Object.ObjectClass] = ''
# adding all objects to the list excluding blocked inheritance
if ($Extended) {
$CachedOu[$OU]['ObjectsTotal'][$Object.DistinguishedName] = $Object
$CachedOu[$OU]['ObjectsIndirect'][$Object.DistinguishedName] = $Object
}
}
}
$CachedOu[$OU]['ObjectsTotalIncludingBlockedCount']++
if ($Extended) {
$CachedOu[$OU]['ObjectsTotalIncludingBlocked'][$Object.DistinguishedName] = $Object
}
}
}
}
if ($Summary) {
foreach ($ObjectDistinguishedName in [string[]] $SummaryData['ObjectsBlockedInheritance'].Keys) {
if ($SummaryData['ObjectsTotal'][$ObjectDistinguishedName]) {
$SummaryData['ObjectsBlockedInheritance'].Remove($ObjectDistinguishedName)
}
}
$SummaryData['ObjectsTotalCount'] = $SummaryData['ObjectsTotal'].Count
$SummaryData['ObjectsBlockedInheritanceCount'] = $SummaryData['ObjectsBlockedInheritance'].Count
if (-not $Extended) {
$SummaryData.Remove('ObjectsTotal')
$SummaryData.Remove('ObjectsBlockedInheritance')
}
[PSCustomObject] $SummaryData
} else {
if ($AsHashTable) {
$CachedOu
} else {
$CachedOu.Values | ForEach-Object { [PSCustomObject] $_ }
}
}
}
+136
View File
@@ -0,0 +1,136 @@
function Get-ChoosenDates {
<#
.SYNOPSIS
Retrieves dates based on the specified date range.
.DESCRIPTION
This function retrieves dates based on the specified date range. The available date ranges are:
- Everything
- PastHour
- CurrentHour
- PastDay
- CurrentDay
- PastMonth
- CurrentMonth
- PastQuarter
- CurrentQuarter
- Last14Days
- Last21Days
- Last30Days
- Last7Days
- Last3Days
- Last1Days
.PARAMETER DateRange
Specifies the date range to retrieve dates for.
.EXAMPLE
Get-ChoosenDates -DateRange PastHour
Retrieves dates for the past hour.
.EXAMPLE
Get-ChoosenDates -DateRange CurrentMonth
Retrieves dates for the current month.
#>
[CmdletBinding()]
param(
[ValidateSet('Everything', 'PastHour', 'CurrentHour', 'PastDay', 'CurrentDay', 'PastMonth', 'CurrentMonth', 'PastQuarter', 'CurrentQuarter', 'Last14Days', 'Last21Days', 'Last30Days' , 'Last7Days', 'Last3Days', 'Last1Days')][string] $DateRange
)
# Report Per Hour
if ($DateRange -eq 'PastHour') {
$DatesPastHour = Find-DatesPastHour
if ($DatesPastHour) {
$DatesPastHour
}
}
if ($DateRange -eq 'CurrentHour') {
$DatesCurrentHour = Find-DatesCurrentHour
if ($DatesCurrentHour) {
$DatesCurrentHour
}
}
# Report Per Day
if ($DateRange -eq 'PastDay') {
$DatesDayPrevious = Find-DatesDayPrevious
if ($DatesDayPrevious) {
$DatesDayPrevious
}
}
if ($DateRange -eq 'CurrentDay') {
$DatesDayToday = Find-DatesDayToday
if ($DatesDayToday) {
$DatesDayToday
}
}
# Report Per Month
if ($DateRange -eq 'PastMonth') {
# Find-DatesMonthPast runs only on 1st of the month unless -Force is used
$DatesMonthPrevious = Find-DatesMonthPast -Force $true
if ($DatesMonthPrevious) {
$DatesMonthPrevious
}
}
if ($DateRange -eq 'CurrentMonth') {
$DatesMonthCurrent = Find-DatesMonthCurrent
if ($DatesMonthCurrent) {
$DatesMonthCurrent
}
}
# Report Per Quarter
if ($DateRange -eq 'PastQuarter') {
# Find-DatesMonthPast runs only on 1st of the quarter unless -Force is used
$DatesQuarterLast = Find-DatesQuarterLast -Force $true
if ($DatesQuarterLast) {
$DatesQuarterLast
}
}
if ($DateRange -eq 'CurrentQuarter') {
$DatesQuarterCurrent = Find-DatesQuarterCurrent
if ($DatesQuarterCurrent) {
$DatesQuarterCurrent
}
}
if ($DateRange -eq 'Everything') {
$DatesEverything = @{
DateFrom = Get-Date -Year 1900 -Month 1 -Day 1
DateTo = Get-Date -Year 2300 -Month 1 -Day 1
}
$DatesEverything
}
if ($DateRange -eq 'Last1days') {
$DatesCurrentDayMinusDaysX = Find-DatesCurrentDayMinuxDaysX -days 1
if ($DatesCurrentDayMinusDaysX) {
$DatesCurrentDayMinusDaysX
}
}
if ($DateRange -eq 'Last3days') {
$DatesCurrentDayMinusDaysX = Find-DatesCurrentDayMinuxDaysX -days 3
if ($DatesCurrentDayMinusDaysX) {
$DatesCurrentDayMinusDaysX
}
}
if ($DateRange -eq 'Last7days') {
$DatesCurrentDayMinusDaysX = Find-DatesCurrentDayMinuxDaysX -days 7
if ($DatesCurrentDayMinusDaysX) {
$DatesCurrentDayMinusDaysX
}
}
if ($DateRange -eq 'Last14days') {
$DatesCurrentDayMinusDaysX = Find-DatesCurrentDayMinuxDaysX -days 14
if ($DatesCurrentDayMinusDaysX) {
$DatesCurrentDayMinusDaysX
}
}
if ($DateRange -eq 'Last21days') {
$DatesCurrentDayMinusDaysX = Find-DatesCurrentDayMinuxDaysX -days 21
if ($DatesCurrentDayMinusDaysX) {
$DatesCurrentDayMinusDaysX
}
}
if ($DateRange -eq 'Last30Days') {
$DatesCurrentDayMinusDaysX = Find-DatesCurrentDayMinuxDaysX -days 30
if ($DatesCurrentDayMinusDaysX) {
$DatesCurrentDayMinusDaysX
}
}
}
+64
View File
@@ -0,0 +1,64 @@
function Get-GPOBlockedInheritance {
<#
.SYNOPSIS
Retrieves information about Organizational Units (OUs) with blocked inheritance of Group Policy Objects (GPOs).
.DESCRIPTION
The Get-GPOBlockedInheritance function retrieves information about OUs within a specified forest that have blocked inheritance of GPOs. It returns a list of OUs with their distinguished names and whether they have blocked inheritance enabled.
.PARAMETER Filter
Specifies a filter to select specific OUs. Default is '*'.
.PARAMETER Forest
Specifies the name of the forest to query.
.PARAMETER ExcludeDomains
Specifies an array of domain names to exclude from the query.
.PARAMETER IncludeDomains
Specifies an array of domain names to include in the query.
.PARAMETER AsHashTable
Indicates whether to return the results as a hashtable. If specified, the function returns a hashtable with OU distinguished names as keys and blocked inheritance status as values.
.PARAMETER ExtendedForestInformation
Specifies additional forest information to include in the query.
.EXAMPLE
Get-GPOBlockedInheritance -Forest 'contoso.com'
Retrieves a list of all OUs within the 'contoso.com' forest with blocked inheritance status.
.EXAMPLE
Get-GPOBlockedInheritance -Forest 'contoso.com' -IncludeDomains 'child1.contoso.com', 'child2.contoso.com' -AsHashTable
Retrieves a hashtable of OUs within the 'contoso.com' forest from specified domains with blocked inheritance status.
#>
[cmdletBinding()]
param(
[string] $Filter = '*',
[alias('ForestName')][string] $Forest,
[string[]] $ExcludeDomains,
[alias('Domain', 'Domains')][string[]] $IncludeDomains,
[switch] $AsHashTable,
[System.Collections.IDictionary] $ExtendedForestInformation
)
$OUCache = [ordered] @{}
$ForestInformation = Get-WinADForestDetails -Extended -Forest $Forest -IncludeDomains $IncludeDomains -ExcludeDomains $ExcludeDomains -ExtendedForestInformation $ExtendedForestInformation
foreach ($Domain in $ForestInformation.Domains) {
$OrganizationalUnits = Get-ADOrganizationalUnit -Filter $Filter -Properties gpOptions, canonicalName -Server $ForestInformation['QueryServers'][$Domain]['HostName'][0] #-SearchScope Subtree
foreach ($OU in $OrganizationalUnits) {
$OUCache[$OU.DistinguishedName] = [PSCustomObject] @{
DistinguishedName = $OU.DistinguishedName
BlockedInheritance = if ($OU.gpOptions -eq 1) { $true } else { $false } # blocked inheritance
}
}
}
if ($AsHashTable) {
$OUCache
} else {
$OUCache.Values
}
}

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