Skip to content

ruipalmeira/AdminTools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Admin Toolkit πŸ”¨πŸ“¦πŸ€–

Overview πŸ“πŸ”Ž

The Admin Toolkit is a collection of PowerShell scripts for managing and auditing Active Directory environments.
It helps IT administrators automate common tasks, enforce policies, and generate reports safely and efficiently.

Key Features : βš™οΈβœ¨

AD_User Set PasswordNeverExpires flag - SetPasswordNeverExpires.ps1

  • Purpose: Sets PasswordNeverExpires for users in nested OUs with optional recursion and Audit users’ PasswordNeverExpires flag across the entire domain.
  • Features:
    • Logs changes and audit reports to CSV files with proper UTF-8 encoding.
    • Skips likely service accounts automatically to prevent accidental changes.
    • Safe and interactive prompts with confirmations before making modifications.

AD User Export Script - AD_UserExtract.ps1

  • Purpose: Export users from Active Directory to CSV for reporting or auditing.
  • Features:
    • Interactive OU selection with support for child OUs.
    • Option to include/exclude sub-OUs.
    • Retrieves key user attributes: SamAccountName, DisplayName, Email, Enabled, LastLogonDate, Office, and OU.
    • Creates an audit log recording: who ran the script, which OU was exported, number of users, and timestamp.
    • UTF8-encoded CSV output supporting special characters.

SharePoint Site Group Export Script - SharePoint_GroupExtract.ps1

  • Purpose: Extract SharePoint Online site groups using PnP.PowerShell.
  • Features:
    • Connects via Entra ID App Registration (ClientId) with delegated permissions for Graph and SharePoint.
    • Retrieves all site groups: Title, Id, LoginName, OwnerTitle, OnlyAllowMembersViewMembership.
    • Exports to CSV and maintains audit logging with site URL, output file, admin, and timestamp.
    • Handles MFA or device login securely.

SharePoint Group Membership Export Script - SharePoint_GroupMembershipExtract.ps1

  • Purpose: Export each SharePoint site group and its members to CSV.
  • Features:
    • Connects using Entra ID App Registration with interactive login.
    • Loops through all site groups and retrieves members for each.
    • Captures: GroupName, GroupId, Member Name, LoginName, Email.
    • Handles groups with no members gracefully.
    • Outputs a membership CSV and updates an audit log including site, output file, and timestamp.
    • Provides clear console feedback while processing each group.

Quick Reference 🎯⚑

Script Purpose
Set-PasswordNeverExpires.ps1 Set or unset PasswordNeverExpires flag for users across nested OUs
AD_UserExtract.ps1 Export users from Active Directory to CSV for reporting or auditing.
SharePoint_GroupExtract.ps1 Extract SharePoint Online site groups using PnPPowerShell.
SharePoint_GroupMembershipExtract.ps1 Export each SharePoint site group and its members to CSV

Folder Structure πŸ“πŸ—„οΈ

AdminToolkit/
β”œβ”€ scripts/
β”‚ β”œβ”€ SetPasswordNeverExpires.ps1
β”‚ β”œβ”€ AD_GroupExtract.ps1
β”‚ β”œβ”€ Sharepoint_GroupExtract.ps1
β”‚ └─ SharePoint_GroupMembershipExtract.ps1
β”œβ”€ logs/
β”œβ”€ docs/
β”œβ”€ .gitignore
└─ README.md


Prerequisites πŸ› οΈπŸš€

  • Windows Server or Windows 10/11 with the ActiveDirectory module installed
  • PowerShell 5.1+ or PowerShell 7+ recommended
  • Appropriate AD privileges
  • PnP.PowerShell module for SharePoint scripts
  • Entra ID App Registration (ClientId) with delegated permissions for SharePoint scripts
  • Git (optional, if using version control)

Setup βš™οΈβš™οΈ

  • βœ… Clone the repository:
git clone https://github.com/ruipalmeira/AdminToolkit.git
  • βœ… Unblock the scripts if necessary:
Get-ChildItem .\scripts*.ps1 | Unblock-File
  • βœ… Ensure logs folder exists (scripts create it automatically if missing):
mkdir C:\AdminTools\Logs

Usage πŸ”¨πŸ”¨

1. Set PasswordNeverExpires for Users

  • Script: Set-PasswordNeverExpires.ps1
  • Features:
    • Interactive OU navigation
    • Optional recursion into sub-OUs
    • Automatically excludes likely service accounts
    • Prompts for ENABLE/DISABLE
    • Generates CSV log of changes

Example:

cd C:\AdminTools\scripts
.\Set-PasswordNeverExpires.ps1

2. Export AD Users πŸ‘₯πŸ“‹

  • Script: AD_UserExtract.ps1
  • Features:
    • Interactive OU selection with support for child OUs.
    • Option to include/exclude sub-OUs.
    • Retrieves key user attributes: SamAccountName, DisplayName, Email, Enabled, LastLogonDate, Office, and OU.
    • Creates an audit log recording: who ran the script, which OU was exported, number of users, and timestamp.
    • UTF8-encoded CSV output supporting special characters.

Example:

cd C:\AdminTools\scripts
.\AD_UserExtract.ps1

3. Export SharePoint Site Groups πŸ’πŸ“‹

  • Script: SharePoint_GroupExtract.ps1
  • Features:
    • Connects to SharePoint Online site using Entra ID App Registration
    • Retrieves all site groups and key properties
    • Exports to CSV and creates audit log

Example:

cd C:\AdminTools\scripts
.\SharePoint_GroupExtract.ps1

4. Export SharePoint Group Memberships πŸ§‘β€πŸ€β€πŸ§‘πŸ“‹

  • Script: SharePoint_GroupMembershipExtract.ps1
  • Features:
    • Connects interactively with Entra ID App Registration
    • Loops through each site group and exports members to CSV
    • Updates audit log for each run

Example:

cd C:\AdminTools\scripts
.\SharePoint_GroupMembershipExtract.ps1

Logging πŸ“„πŸ“„

  • Logs and CSV files are stored in the logs/ folder
  • CSV files are timestamped for easy tracking

Best Practices βœ”οΈπŸŸ’

  • Test scripts in a lab before production
  • Keep logs/ folder out of Git to avoid committing sensitive data
  • Commit scripts and README updates regularly
  • Add new scripts under scripts/ and document usage in docs/

Admin Toolkit Flowchart πŸ—‚οΈπŸ“Š

flowchart TD
    A["Admin Toolkit Scripts"]:::main
    B["AD User Export Script"]:::ad
    C["AD Group Export Script"]:::ad
    D["SharePoint Site Group Export Script"]:::sp
    E["SharePoint Group Membership Export Script"]:::sp

    F["CSV: Users Attributes (SamAccountName, Name, Email, Office)"]:::csv
    G["CSV: Groups Attributes (Name, Scope, Description, OU)"]:::csv
    H["CSV: Site Groups Attributes (Title, Owner, OnlyAllowMembersViewMembership)"]:::csv
    I["CSV: Group Members (GroupName, Member, LoginName, Email)"]:::csv

    J["Audit Log CSV (Admin, Timestamp, Scope, Output File, Count, Action)"]:::log

    A --> B
    A --> C
    A --> D
    D --> E

    B --> F
    C --> G
    D --> H
    E --> I

    F --> J
    G --> J
    H --> J
    I --> J

    classDef main fill:#f9f,stroke:#333,stroke-width:2px,color:#000;
    classDef ad fill:#9be3ff,stroke:#333,stroke-width:1px,color:#000;
    classDef sp fill:#ffdab9,stroke:#333,stroke-width:1px,color:#000;
    classDef csv fill:#d4f4dd,stroke:#333,stroke-width:1px,color:#000;
    classDef log fill:#ffe699,stroke:#333,stroke-width:2px,color:#000;  
Loading

Contributing πŸ—οΈπŸ› οΈ

1. Fork the repository

2. Create a branch for your feature or fix:

git checkout -b feature/new-script

3. Commit your changes with descriptive messages

4. Push your branch and create a pull request


License Β©οΈπŸ§‘β€βš–οΈ

CC BY-NC-SA 4.0 – Attribution-NonCommercial-ShareAlike 4.0 International

About

Collection of Windows Domain administration tools

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors