{"id":31626424,"url":"https://github.com/twcau/powershellscripting","last_synced_at":"2025-10-06T19:52:09.238Z","repository":{"id":297164108,"uuid":"995841722","full_name":"twcau/PowerShellScripting","owner":"twcau","description":"Powershell scripts i've created over the years","archived":false,"fork":false,"pushed_at":"2025-09-09T21:07:22.000Z","size":682,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-10T00:56:08.301Z","etag":null,"topics":["active-directory","entra","entra-id","exchange-online-management","exchange-onpremise","exchange-server","intune","intune-remediations","onedrive","powershell","powershell-adminscripts","powershell-script","user-management"],"latest_commit_sha":null,"homepage":"https://twcau.github.io/PowerShellScripting/","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twcau.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing/index.html","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/support/index.html","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-04T04:58:21.000Z","updated_at":"2025-09-09T21:07:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"10732542-daf3-436e-9de9-12f5927d6701","html_url":"https://github.com/twcau/PowerShellScripting","commit_stats":null,"previous_names":["twcau/powershellscripting"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/twcau/PowerShellScripting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twcau%2FPowerShellScripting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twcau%2FPowerShellScripting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twcau%2FPowerShellScripting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twcau%2FPowerShellScripting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twcau","download_url":"https://codeload.github.com/twcau/PowerShellScripting/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twcau%2FPowerShellScripting/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278671749,"owners_count":26025743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["active-directory","entra","entra-id","exchange-online-management","exchange-onpremise","exchange-server","intune","intune-remediations","onedrive","powershell","powershell-adminscripts","powershell-script","user-management"],"created_at":"2025-10-06T19:52:08.100Z","updated_at":"2025-10-06T19:52:09.233Z","avatar_url":"https://github.com/twcau.png","language":"PowerShell","readme":"\u003c!-- omit from toc --\u003e\r\n# PowerShellScripting\r\n\r\nA collection of PowerShell scripts for enterprise IT administration, covering Active Directory, Microsoft 365, Exchange Online, Entra ID, and Intune management tasks that i've created over the years.\r\n\r\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\r\n[![PowerShell Gallery](https://img.shields.io/badge/PowerShell-7.0+-blue.svg)](https://github.com/PowerShell/PowerShell)\r\n[![Platform](https://img.shields.io/badge/Platform-Windows-lightgrey.svg)](https://www.microsoft.com/windows)\r\n\r\nFor comprehensive documentation, please refer to the project site:\r\n[https://twcau.github.io/PowerShellScripting/](https://twcau.github.io/PowerShellScripting/)\r\n\r\n\u003c!-- omit from toc --\u003e\r\n## Table of Contents\r\n\r\n- [Features](#features)\r\n- [Getting Started](#getting-started)\r\n  - [Prerequisites](#prerequisites)\r\n  - [Installation](#installation)\r\n- [Usage](#usage)\r\n- [Folder Structure](#folder-structure)\r\n- [Testing](#testing)\r\n  - [Development Environment](#development-environment)\r\n  - [Validation](#validation)\r\n  - [Development Guidelines](#development-guidelines)\r\n- [Changelog](#changelog)\r\n- [License](#license)\r\n- [Like to say thank you?](#like-to-say-thank-you)\r\n- [Contact and Support](#contact-and-support)\r\n  - [Project Maintainer](#project-maintainer)\r\n  - [Getting Help](#getting-help)\r\n    - [Common Issues](#common-issues)\r\n  - [Support Resources](#support-resources)\r\n    - [Support Guidelines](#support-guidelines)\r\n- [Accessibility](#accessibility)\r\n- [Contributing](#contributing)\r\n\r\n## Features\r\n\r\nMy scripts so far cover some of the bugbears i've experienced in my time in L2-2.5 support, including:\r\n\r\n- **Active Directory Management**: User creation, group management, computer organisation, and bulk operations\r\n- **Microsoft 365 Administration**: Exchange Online mailbox management, quarantine handling, and transport rules\r\n- **Entra ID Integration**: External user management, compromised account remediation, and identity operations\r\n- **Intune Device Management**: Bulk device synchronisation, remediation scripts, and compliance monitoring\r\n- **General Utilities**: Password generation, module management, and script selection tools\r\n- **OneDrive Administration**: User content download and management capabilities\r\n\r\nTo ensure scripts are easily understood and used, I try to ensure they all include:\r\n\r\n- **GUI Interfaces**: User-friendly forms for complex administrative tasks\r\n- **Error Handling**: Robust error handling and retry logic for enterprise environments\r\n- **Progress Updates**: Visual feedback when an operation is underway but may take some time to complete\r\n- **Comprehensive Logging**: Standardised logging across all scripts with detailed audit trails\r\n- **Documentation**: At both the code, and use level, so it can be understood what everything does where\r\n\r\n## Getting Started\r\n\r\n### Prerequisites\r\n\r\n- PowerShell 7.0 or later\r\n- Windows operating system\r\n- Appropriate administrative permissions for target systems\r\n- Required PowerShell modules (see individual scripts for specific requirements):\r\n  - Active Directory Module\r\n  - Exchange Online Management\r\n  - Microsoft Graph PowerShell SDK\r\n  - Microsoft.Graph.Intune\r\n  - MSOnline (where applicable)\r\n\r\n### Installation\r\n\r\n1. Clone the repository:\r\n\r\n   ```bash\r\n   git clone https://github.com/twcau/PowerShellScripting.git\r\n   ```\r\n\r\n2. Navigate to the project directory:\r\n\r\n   ```bash\r\n   cd PowerShellScripting\r\n   ```\r\n\r\n3. Review the script you want to use and install any required modules:\r\n\r\n   ```powershell\r\n   # Example: Install Exchange Online Management module\r\n   Install-Module -Name ExchangeOnlineManagement -Force\r\n   ```\r\n\r\n4. Configure the scripts according to your environment (see Configuration section)\r\n\r\n## Usage\r\n\r\nPlease refer to each scripts' documentation for instructions on how to use it, including environment varibles, authentication, and customisation.\r\n\r\n## Folder Structure\r\n\r\n```plaintext\r\nPowerShellScripting/\r\n├── ad/                                    # Active Directory scripts\r\n│   ├── computer/\r\n│   │   └── FindMachineOU.ps1              # Locate computer objects in AD\r\n│   └── user/\r\n│       ├── creation/                      # User account creation scripts\r\n│       │   ├── AD-CopyGroups.ps1          # Copy group memberships\r\n│       │   ├── User-Creation-Bulk.ps1     # Bulk user creation\r\n│       │   ├── User-Creation.ps1          # Individual user creation with GUI\r\n│       │   └── User-Departure.ps1         # User departure processing\r\n│       └── reconcillation/                # User account reconciliation\r\n│           ├── AD-Bulk-DepartedEmployeeReconcillation.ps1\r\n│           ├── Employee-Departure-Reconciliation.ps1\r\n│           └── Employee-Listing.ps1\r\n├── e365/                                  # Exchange 365 scripts\r\n│   ├── E365-Mailbox-ConvertToShared.ps1   # Convert mailboxes to shared\r\n│   ├── E365-Quarantine-ExportRecord.ps1   # Export quarantine records\r\n│   ├── Exchange-QuarantineTABL-DataDownload.ps1\r\n│   └── NewTransportRuleExecName.ps1       # Transport rule management\r\n├── entra/                                 # Entra ID (Azure AD) scripts\r\n│   ├── AutomateCompromisedAccountRemediation.ps1\r\n│   ├── Entra-UserExternal-Create.ps1      # External user creation\r\n│   └── User-Management-External.ps1       # External user management\r\n├── general/                               # General utility scripts\r\n│   ├── ScriptSelector.ps1                 # Interactive script launcher\r\n│   ├── module-management/                 # PowerShell module utilities\r\n│   │   ├── Module-PowerShell7-Require.ps1\r\n│   │   └── Update-Module.ps1\r\n│   └── password-generation/               # Password generation tools\r\n│       ├── Password-Generator-Silent.ps1\r\n│       └── Password-Generator.ps1\r\n├── intune/                                # Microsoft Intune scripts\r\n│   ├── devices/\r\n│   │   └── Intune-BulkSync.ps1            # Bulk device synchronisation\r\n│   └── remediation/                       # Intune remediation scripts\r\n│       ├── M365-VersionDetect.ps1         # M365 Apps version detection\r\n│       ├── M365-VersionRemediate.ps1      # M365 Apps version remediation\r\n│       ├── Teams-Old-Detect.ps1            # Legacy Teams detection\r\n│       ├── Teams-Old-Remediate.ps1         # Legacy Teams remediation\r\n│       ├── WinUpdate-23H2to24H2Force-Detect.ps1\r\n│       ├── WinUpdate-23H2to24H2Force-Remediate.ps1\r\n│       ├── WinUpdate-Outstanding-Detect.ps1           # Windows Update detection\r\n│       ├── WinUpdate-Outstanding-Remediate.ps1        # Windows Update remediation\r\n│       ├── WinUpdate-Pause-Detect.ps1     # Windows Update pause detection\r\n│       └── WinUpdate-Pause-Remediate.ps1  # Windows Update pause remediation\r\n├── m365/                                  # Microsoft 365 scripts\r\n├── onedrive/                              # OneDrive management scripts\r\n│   ├── M365-OneDriveForBusiness-User-FileDownload.ps1\r\n│   └── M365-OneDriveForBusiness-User-FileUpload.ps1\r\n```\r\n\r\n## Testing\r\n\r\n### Development Environment\r\n\r\nWhere available, testing scripts are located in the `testing/` folder and include:\r\n\r\n- Proof-of-concept implementations\r\n- Version comparisons\r\n- Experimental features\r\n\r\nSome scripts may also include dry run features in lieu of testing.\r\n\r\n### Validation\r\n\r\nBefore using scripts in production:\r\n\r\n1. Review the script documentation, header for version information and changelog\r\n2. Always test in a non-production environment\r\n3. Verify all required modules are installed\r\n4. Check logging output for any warnings or errors\r\n\r\n### Development Guidelines\r\n\r\n- Use Australian English (EN-AU) for documentation and comments\r\n- Include proper error handling and logging\r\n- Follow the established folder structure\r\n- Update this README when adding new functionality\r\n\r\n## Changelog\r\n\r\nSee individual script headers for detailed version history and changelog information.\r\n\r\n## License\r\n\r\nThis project is licensed under the GNU General Public License v3.0 - see the [LICENSE](LICENSE) file for details.\r\n\r\nCopyright (c) 2025, Michael Harris, All rights reserved.\r\n\r\n## Like to say thank you?\r\n\r\nIf these scripts have helped you in your IT administration tasks, consider:\r\n\r\n- ⭐ Starring this repository\r\n- 🐛 Reporting issues or suggesting improvements\r\n- 📖 Contributing to the documentation\r\n- ☕ [Buy me a coffee](https://ko-fi.com/twcau) to support continued development\r\n\r\n## Contact and Support\r\n\r\n### Project Maintainer\r\n\r\n- **Michael Harris** - [@twcau](https://github.com/twcau)\r\n\r\n### Getting Help\r\n\r\n#### Common Issues\r\n\r\n- **Module Import Errors**: Ensure required PowerShell modules are installed\r\n- **Authentication Failures**: Verify credentials and MFA settings\r\n- **Permission Errors**: Check administrative rights for target systems\r\n- **Network Connectivity**: Ensure access to required cloud services\r\n\r\n### Support Resources\r\n\r\n- Check script headers for specific documentation links\r\n- Review Microsoft documentation for API changes\r\n- Consult PowerShell Gallery for module updates\r\n\r\n- **Issues**: Report bugs or request features via [GitHub Issues](https://github.com/twcau/PowerShellScripting/issues)\r\n- **Discussions**: Join the conversation in [GitHub Discussions](https://github.com/twcau/PowerShellScripting/discussions)\r\n- **Documentation**: Review script headers and Microsoft documentation links\r\n\r\n#### Support Guidelines\r\n\r\n- Provide clear descriptions of issues with relevant log files\r\n- Include PowerShell version and module information\r\n- Specify the target environment (on-premises, cloud, hybrid)\r\n- Follow the issue templates when reporting problems\r\n\r\n## Accessibility\r\n\r\nThis project is committed to accessibility and inclusive design:\r\n\r\n- Scripts include progress indicators and clear status messages\r\n- Documentation uses descriptive text for all functionality\r\n- Error messages provide actionable guidance\r\n- GUI interfaces follow accessibility best practices\r\n- All documentation supports screen readers\r\n\r\n## Contributing\r\n\r\nContributions to improve and expand this script collection are welcome. Please read the contribution guidelines:\r\n\r\n1. **Code Standards**: Follow PowerShell best practices and existing code style\r\n2. **Documentation**: Include comprehensive headers and inline comments\r\n3. **Testing**: Validate scripts in appropriate test environments\r\n4. **Security**: Ensure no hardcoded credentials or sensitive information\r\n\r\n---\r\n\r\n*This project follows Microsoft PowerShell best practices and maintains compatibility with enterprise IT environments.*\r\n","funding_links":["https://ko-fi.com/twcau"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwcau%2Fpowershellscripting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwcau%2Fpowershellscripting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwcau%2Fpowershellscripting/lists"}