• Stars
    star
    241
  • Rank 162,492 (Top 4 %)
  • Language
    PowerShell
  • License
    MIT License
  • Created almost 6 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

PowerShell Module that creates Word/Excel/SQL documentation from Active Directory (AD), AWS, Office 365 and others. It's a work in progress!

PSWinDocumentation - PowerShell Module

Overview of this module is available at: https://evotec.xyz/hub/scripts/pswindocumentation-powershell-module/

This module utilizes three projects of mine

  • PSWriteWord - creating Microsoft Word without Word installed from PowerShell
  • PSWriteExcel - creating Microsoft Excel without Excel installed from PowerShell
  • PSSharedGoods - bunch of useful functions that I share among all of my projects

All 3 modules above are under active development.

For additional functionality it utilizes

  • AWSPowershell - allows connecting to AWS and creating AWS dataset
  • ActiveDirectory RSAT - allows connecting to AD and creating Active Directory dataset
  • DBATools - allows connecting to SQL and sending data to SQL (create table, alter table, inserts)
  • DSInternals - required for Password Audit in Active Directory

You have to install those modules yourself. I don't bundle them but it's as easy as typing Install-Module <YourModule>. While I could bundle them and maybe some day I will but for now it's too heavy as this module can be installed on AD servers directly - so I don't want you to overload your DC's - even if it's just PowerShell Module.

Goals

Ultimate goal of this project is to have proper documentation of following services:

  • Active Directory
  • AWS
  • Microsoft Exchange (mostly Excel / SQL export oriented)
  • Office 365 Exchange Online (mostly Excel / SQL export oriented)
  • Office 365 Azure AD (mostly Excel / SQL export oriented)
  • Office 365 Teams (not started)
  • Office 365 Skype for Business (not started)
  • Office 365 Intune (not started)
  • Office 365 SharePoint (not started)
  • Windows Server (some basic stuff - not functionable)
  • Windows Workstation (some basic stuff - not functionable)

I'm heavily open for feature requests and people willing to create data sets. By data sets I mean data prepared to be included in report (usually HashTable, OrderedHashTable, Array or PSCustomobject). This module is smart enough that it can easily convert that data into Word Sections. Also don't really pay attention to percentage numbers. If you have request I will consier adding it.

Updates

  • 0.5.4 / Unreleased

    • Added Invoke-Documentation for oneliner fun
  • 0.5.3 / 2020.06.22

    • Updated modules to newest versions
  • 0.5.0 / 2019.06.23

    • Updated with support for PSWriteWord 1.0.0
    • Updated with support for PSSharedGoods 0.0.79
    • Updated with support for PSWriteExcel 0.7.2
  • 0.3.x / 2018.10.08 - full blog post

    • Added audit your Active Directory Passwords
    • Expanded Active Directory data types (computer based)
    • Expanded Active Directory data types (fine grained policies)
    • Couple of fixes here and there
  • 0.2.x / 2018.09.23 - full blog post

    • Allows Exporting to Microsoft SQL (that's right – export data directly to SQL – complete with create table, alter table and inserts)
    • Basic data set AWS
    • Advanced data set Active Directory
    • Basic data set Microsoft Exchange
    • Basic data set Office 365 – Exchange Online
    • Basic data set Office 365 – Azure AD
    • Prescanning of data headers for exports (unravel hidden data)
    • Ability to define TableColumnWidths in sections
  • 0.1 / 2018.08.23

  • 0.0.5 / 2018.07.30

    • fix for DefaultPassWordPolicy MinPasswordLength (was reporting wrong value)
  • 0.0.4 / 2018.07.30

    • added domain controllers section
    • added few verbose messages with -Verbose switch for easier debugging
    • commented out some unused code for now (to speed up work)
  • 0.0.3 / 2018.07.29

    • first "good" release

Progress on Documentation

Active Directory

Following is very incomplete list of things that are done or are planned in near future. I really need to update that.

  • Forest Summary
  • Forest FSMO Roles
  • Forest Optional Features (Recycle Bin, PAM)
  • Forest UPN List
  • Forest SPN List
  • Domain Summary
  • Domain Controllers
    • Basic information
    • Basic hardware information
  • Domain FSMO Roles
  • Domain Password Policies
  • Domain Group Policies
  • Domain Organizational Units
    • Requires work. Currently a bit useless
  • Domain Privileged Members (Groups)
  • Domain Administrators (All users)
  • Domain User Count
    • Users Count Incl. System
    • Users Count
    • Users Expired
    • Users Expired Incl. Disabled
    • Users Never Expiring
    • Users Never Expiring Incl. Disabled
    • Users System Accounts
  • Domain User List (deciding if needed)
    • Users Count Incl. System
    • Users Count
    • Users Expired
    • Users Expired Incl. Disabled
    • Users Never Expiring
    • Users Never Expiring Incl. Disabled
    • Users System Accounts

Active Directory Data Sources - to use with new version

public enum ActiveDirectory {
    // Forest Information - Section Main
    ForestInformation,
    ForestFSMO,
    ForestGlobalCatalogs,
    ForestOptionalFeatures,
    ForestUPNSuffixes,
    ForestSPNSuffixes,
    ForestSites,
    ForestSites1,
    ForestSites2,
    ForestSubnets,
    ForestSubnets1,
    ForestSubnets2,
    ForestSiteLinks,

    // Domain Information - Section Main

    DomainRootDSE,
    DomainRIDs,
    DomainAuthenticationPolicies, // Not yet tested
    DomainAuthenticationPolicySilos, // Not yet tested
    DomainCentralAccessPolicies, // Not yet tested
    DomainCentralAccessRules, // Not yet tested
    DomainClaimTransformPolicies, // Not yet tested
    DomainClaimTypes, // Not yet tested
    DomainFineGrainedPolicies,
    DomainFineGrainedPoliciesUsers,
    DomainFineGrainedPoliciesUsersExtended,
    DomainGUIDS,
    DomainDNSSRV,
    DomainDNSA,
    DomainInformation,
    DomainControllers,
    DomainFSMO,
    DomainDefaultPasswordPolicy,
    DomainGroupPolicies,
    DomainGroupPoliciesDetails,
    DomainGroupPoliciesACL,
    DomainOrganizationalUnits,
    DomainOrganizationalUnitsBasicACL,
    DomainOrganizationalUnitsExtended,
    DomainContainers,
    DomainTrusts,

    // Domain Information - Group Data
    DomainGroupsFullList, // Contains all data

    DomainGroups,
    DomainGroupsMembers,
    DomainGroupsMembersRecursive,

    DomainGroupsSpecial,
    DomainGroupsSpecialMembers,
    DomainGroupsSpecialMembersRecursive,

    DomainGroupsPriviliged,
    DomainGroupsPriviligedMembers,
    DomainGroupsPriviligedMembersRecursive,

    // Domain Information - User Data
    DomainUsersFullList, // Contains all data
    DomainUsers,
    DomainUsersCount,
    DomainUsersAll,
    DomainUsersSystemAccounts,
    DomainUsersNeverExpiring,
    DomainUsersNeverExpiringInclDisabled,
    DomainUsersExpiredInclDisabled,
    DomainUsersExpiredExclDisabled,
    DomainAdministrators,
    DomainAdministratorsRecursive,
    DomainEnterpriseAdministrators,
    DomainEnterpriseAdministratorsRecursive,

    // Domain Information - Computer Data
    DomainComputersFullList, // Contains all data
    DomainComputersAll,
    DomainComputersAllCount,
    DomainComputers,
    DomainComputersCount,
    DomainServers,
    DomainServersCount,
    DomainComputersUnknown,
    DomainComputersUnknownCount,

    // This requires DSInstall PowerShell Module
    DomainPasswordDataUsers, // Gathers users data and their passwords
    DomainPasswordDataPasswords, // Compares Users Password with File
    DomainPasswordDataPasswordsHashes, // Compares Users Password with File HASH
    DomainPasswordClearTextPassword,
    DomainPasswordLMHash,
    DomainPasswordEmptyPassword,
    DomainPasswordWeakPassword,
    DomainPasswordDefaultComputerPassword,
    DomainPasswordPasswordNotRequired,
    DomainPasswordPasswordNeverExpires,
    DomainPasswordAESKeysMissing,
    DomainPasswordPreAuthNotRequired,
    DomainPasswordDESEncryptionOnly,
    DomainPasswordDelegatableAdmins,
    DomainPasswordDuplicatePasswordGroups,
    DomainPasswordHashesWeakPassword,
    DomainPasswordStats,
}

More suggestions are welcome.

Microsoft Exchange

  • Currently not defined. Feel free to make feature requests

Microsoft Office 365

  • Currently not defined. Feel free to make feature requests

Windows Server doc

  • Currently not defined. Feel free to make feature requests

Windows Workstation doc

  • Currently not defined. Feel free to make feature requests

Statistics

Known Issues

  • PSWinDocumentation #12 If you want to build documentation on your own template you're free to do so, however, you should use Data\EmptyDocument.docx as your starting template. This is because of an issue with PSWriteWord (more specifically with DLL it uses) where Heading styles are not available when using the template created directly in Microsoft Word. The issue was reported PSWriteWord #16 but it's a long time till it will be fixed. Until then simply use Data\EmptyDocument.docx and then add your logos, text, whatever you feel like you need in a template.

More Repositories

1

GPOZaurr

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.
PowerShell
772
star
2

PSWriteHTML

PSWriteHTML is PowerShell Module to generate beautiful HTML reports, pages, emails without any knowledge of HTML, CSS or JavaScript. To get started basics PowerShell knowledge is required.
PowerShell
760
star
3

PSWinReporting

This PowerShell Module has multiple functionalities, but one of the signature features of this module is the ability to parse Security logs on Domain Controllers providing easy to use access to AD Events.
PowerShell
689
star
4

Testimo

Testimo is a PowerShell module for running health checks for Active Directory against a bunch of different tests
PowerShell
496
star
5

PSTeams

PSTeams is a PowerShell Module working on Windows / Linux and Mac. It allows sending notifications to Microsoft Teams via WebHook Notifications. It's pretty flexible and provides a bunch of options. Initially, it only supported one sort of Team Cards but since version 2.X.X it supports Adaptive Cards, Hero Cards, List Cards, and Thumbnail Cards. All those new cards have their own cmdlets and the old version of creating Teams Cards stays as-is for compatibility reasons.
PowerShell
391
star
6

ADEssentials

PowerShell Active Directory helper functions to manage healthy Active Directory
PowerShell
372
star
7

PSWriteWord

PSWriteWord is powershell module to create Microsoft Word documents without Microsoft Word installed...
PowerShell
228
star
8

OfficeIMO

Fast and easy to use cross-platform .NET library that creates or modifies Microsoft Word (DocX) and later also Excel (XLSX) files without installing any software. Library is based on Open XML SDK
C#
228
star
9

PSSharedGoods

PSSharedGoods is little PowerShell Module that primary purpose is to be useful for multiple tasks, unrelated to each other. I've created this module as β€œa glue” between my other modules.
PowerShell
203
star
10

PSWritePDF

PowerShell Module to create, edit, split, merge PDF files on Windows / Linux and MacOS
PowerShell
172
star
11

PSWriteColor

Write-Color is a wrapper around Write-Host allowing you to create nice looking scripts, with colorized output.
PowerShell
151
star
12

Mailozaurr

Mailozaurr is a PowerShell module that aims to provide SMTP, POP3, IMAP and probably some other ways to interact with Email. Underneath it uses MimeKit and MailKit libraries written by Jeffrey Stedfast.
PowerShell
134
star
13

O365Essentials

A module that helps to manage some tasks on Office 365/Azure via undocumented API
PowerShell
120
star
14

PSWinDocumentation.AD

PowerShell module delivering a lot of Active Directory Forest/Domain information
PowerShell
117
star
15

Dashimo

Dashimo is very simple, intuitive PowerShell generated HTML file. That's right. A single, static HTML file that you can send to email or host on a website.
HTML
102
star
16

PSEventViewer

PSEventViewer (Get-Events) is really useful PowerShell wrapper around Get-WinEvent. One of the features you may be interested in is a simple way of getting β€œhidden” events data
PowerShell
98
star
17

PowerBGInfo

PowerBGInfo is a PowerShell module that is used to generate background information for Windows machines. It's a replacement for BGInfo that doesn't require installation and is much more flexible.
PowerShell
92
star
18

Statusimo

PowerShell Generated Status Page
PowerShell
91
star
19

PasswordSolution

This module allows the creation of password expiry emails for users, managers, administrators, and security according to defined templates. It's able to work with different rules allowing to fully customize who gets the email and when.
PowerShell
81
star
20

PSWriteOffice

Experimental PowerShell Module to create and edit Microsoft Word, Microsoft Excel, and Microsoft PowerPoint documents without having Microsoft Office installed.
PowerShell
78
star
21

PSAutomator

This PowerShell Module is new approach to onboarding, offboarding and business as usual processes running in companies infrastructure.
PowerShell
68
star
22

Emailimo

Small project that simplifies (according to me) sending colorful emails in PowerShell
PowerShell
63
star
23

PSParseHTML

PSParseHTML is PowerShell module that's main purpose is to be a helper module for PSWriteHTML. However it's functionality can be utilized in other projects, not related to PSWriteHTML, therefore it's available as a separate module.
PowerShell
62
star
24

PSWriteExcel

PSWriteExcel is very basic (at the moment) PowerShell module to create Microsoft Excel workbooks without Microsoft Excel installed.
PowerShell
60
star
25

ImagePlayground

ImagePlayground is a PowerShell module that provides a set of functions for image processing. Among other things it can create QRCodes, BarCodes, Charts, and do image processing that can help with daily tasks.
C#
58
star
26

PSBlackListChecker

Basic functionality of this module is ability to quickly verify if given IP address is on any of over 80 defined DNSBL lists. Below code will return results only if IP is on any of the lists. Advanced functionality of this module is ability to send reports to your email when things get bad on one of those 80 defined DNSBL listrs.
PowerShell
54
star
27

PSPGP

PSPGP is a PowerShell module that provides PGP functionality in PowerShell. It allows encrypting and decrypting files/folders and strings using PGP.
PowerShell
53
star
28

Transferetto

Small PowerShell module with FTPS/SFTP functionality
PowerShell
47
star
29

PSDiscord

Simple PowerShell module allowing to send messages to Discord Channel over webhooks
PowerShell
42
star
30

PowerShellManager

Little PowerShell module to extract PowerShell scripts that no longer exists on disk but were run and are still in Event Logs.
PowerShell
39
star
31

PSPasswordExpiryNotifications

Following PowerShell Module provides different approach to scheduling password notifications for expiring Active Directory based accounts. While most of the scripts require knowledge on HTML... this one is just one config file and a bit of tingling around with texts. Whether this is good or bad it's up to you to decide. I do plan to add an option to use external HTML template if there will be requests for that.
PowerShell
39
star
32

PSLansweeper

PowerShell Module to interact with Lansweeper Database
TSQL
30
star
33

VirusTotalAnalyzer

PowerShell module that intearacts with the VirusTotal service using a VirusTotal API (free)
PowerShell
26
star
34

PSWinDocumentation.O365HealthService

PSWinDocumentation.O365HealthService is a Powershell module that has a single goal of getting Office 365 Health Status
PowerShell
24
star
35

PSPublishModule

This module is a module builder helper that helps build PowerShell modules "Evotec way". It allows us to make sure our modules are built the same way every time making the process really easy to build and publish new versions.
PowerShell
24
star
36

CleanupMonster

This module provides an easy way to cleanup Active Directory from dead/old objects based on various criteria. It can also disable, move or delete objects. It can utilize Azure AD, Intune and Jamf to get additional information about objects before deleting them.
PowerShell
21
star
37

IISParser

IISParser is a PowerShell module to read IIS logs. It's very fast and easy to use. This module is based on IISLogParser library that does all the heavy lifting.
PowerShell
18
star
38

ConsoleMonster

ConsoleMonster is a PowerShell module to build cool GUI applications using Spectre Console and Terminal GUI.
PowerShell
14
star
39

O365Synchronizer

O365Synchronizer is a PowerShell module that allows you to synchronize users/contacts to user mailboxes contact list. It can also be used to synchronize users between tenants as contacts or guests.
PowerShell
13
star
40

Documentimo

This PowerShell module allows you to create Microsoft Word documents without Word being installed on the machine
PowerShell
13
star
41

DesktopManager

DesktopManager is a C# library and PowerShell module that allows to get and set wallpapers to given monitor.
PowerShell
12
star
42

Connectimo

PowerShell
11
star
43

PSWebToolbox

Simple PowerShell Module to get RSS feeds
PowerShell
11
star
44

PSOutlookProfile

Tool to manage (to some degree) Outlook Profile in PowerShell
PowerShell
10
star
45

UnifiStockTracker

UnifiStockTracker is a PowerShell module to get current stock on Europe, Brazil or USA Ubiquiti stores. Since I was constantly checking stock on Ubiquiti store waiting for specific products I decided to automate it.
PowerShell
10
star
46

SecurityPolicy

Provides a way to configure user rights assignments in local security policies using PowerShell without using secedit.exe.
PowerShell
10
star
47

PSPulsewayManager

Following is an easy to use Powershell module to control some of Pulseway Manager functionality. While Pulseway Manager offers GUI for enterprise deployments configuring some things from GUI is time consuming and not always easy.
PowerShell
9
star
48

PSWinDocumentation.O365

PowerShell
9
star
49

Excelimo

PowerShell
8
star
50

Graphimo

Small PowerShell module that helps with Microsoft GraphApi calls
PowerShell
7
star
51

PSFreshService

PowerShell Module to control FreshService via their api (https://freshservice.com/)
PowerShell
7
star
52

PSWinDocumentation.DNS

PowerShell
6
star
53

PSWinDocumentation.AzureHealthService

PowerShell module that helps providing Azure Health as PowerShell data.
PowerShell
5
star
54

PowerFederatedDirectory

PowerFederatedDirectory is a PowerShell module to interact with service https://www.federated.directory/. This module uses API exposed by Federated Directory and allows to Add, Get, Set and Remove users from Federated Directory.
PowerShell
5
star
55

LittleInfrastructureManager

PowerShell
5
star
56

PSMyPassword

This little PowerShell module provides a simple way to change password of any user account if you know it. This is very useful for situations when you can't login to RDP
PowerShell
5
star
57

DelegationModel

DelegationModel PowerShell module provides a simplified way to manage delegation in Active Directory. It's based on ADEssentials module and builts on top of it.
PowerShell
5
star
58

PSWinDocumentation.DHCP

PowerShell
4
star
59

LocalSecurityEditor

.NET library for managing local security policy (User Rights Assignment).
C#
4
star
60

AuditPolicy

AuditPolicy module aims to replace auditpol.exe to get or set Auditing Policies in Windows in more native PowerShell way
PowerShell
4
star
61

PSUnifi

PowerShell
4
star
62

PSFilePermissions

PowerShell
3
star
63

PSWinDocumentation.AWS

PSWinDocumentation.AWS is a PowerShell module that has a single goal of getting AWS Information
PowerShell
3
star
64

MarkdownPrince

PowerShell module that helps converting HTML files into Markdown
PowerShell
3
star
65

O365EmailAddressPolicy

O365EmailAddressPolicy PowerShell module replicates Exchange On-Premise functionality when it comes to Email Address Policy allowing cloud-only environments. Office 365 doesn't provide an option to autogenerate email addresses for users. This module enables the creation of email addresses for users based on their first name and last name.
PowerShell
3
star
66

evotecit.github.io

HTML
2
star
67

PSWordPress

PSWordPress is PowerShell Module that allows interacting with WordPress using PowerShell via Rest API. It allows to list, create, edit or remove posts, pages, etc.
PowerShell
2
star
68

PSManageService

Proof of concept for reading services (Get-Service -ComputerName -Name ) with runspaces (parallel processing)
PowerShell
2
star
69

PSWindowsUpdates

PowerShell
2
star
70

CDN

This is a support project for PSWriteHTML to be able to provide CDN functionality for its own code, or code modified for PSWriteHTML needs.
JavaScript
2
star
71

PSWinDocumentation.Azure

PowerShell
2
star
72

PSDevSummary

PowerShell
2
star
73

PSWriteHTML.Maps

PSWriteHTML.Maps is an example plugin/extension to PSWriteHTML that adds ability to display MAPS in PSWriteHTML reports. This is proof of concept and good example for adding a single functionality to PSWriteHTML.
PowerShell
2
star
74

TheDashboard

TheDashboard is a PowerShell module that generates nice HTML dashboard that's main goal is to integrate multiple reports created by other PowerShell modules. It's main goal is to provide a single place to see all the information you need. It's not meant to be a replacement for other modules.
PowerShell
2
star
75

PSWinDocumentation.ADConnect

1
star
76

PSWinDocumentation.Exchange

PowerShell
1
star
77

PowerInfoblox

PowerShell module to manage Infoblox
PowerShell
1
star