A comprehensive PowerShell script library for Windows system administrators managing servers in an Active Directory domain.
This toolkit provides scripts for daily operations including:
- Service monitoring and health checks
- Web application availability testing
- Event log analysis
- Active Directory management
- IIS administration
- Disk space monitoring
- System uptime tracking
- SQL Server administration
- Network monitoring (ports, SSL, DNS, firewall)
- Data transformation (CSV/JSON/XML)
- Scheduled task management
- Server baseline comparison
- Daily health check reporting
- FTP/SFTP file transfers (via WinSCP)
- File system operations
- Secrets management (DPAPI, AES, Vaultwarden, Azure Key Vault)
SysOps/
├── Config/ # Configuration files
│ └── settings.json
├── Modules/ # Shared PowerShell modules
│ └── AdminTools.psm1
├── ServiceMonitoring/ # Service health checks
├── WebMonitoring/ # Web app availability
├── EventLogs/ # Windows event log queries
├── AD/ # Active Directory management
├── IIS/ # IIS administration
├── DiskSpace/ # Disk space monitoring
├── SystemInfo/ # System information (uptime)
├── SQL/ # SQL Server administration
├── NetworkMonitoring/ # Network monitoring scripts
├── DataTransform/ # Data format conversion
├── ScheduledTasks/ # Task scheduling management
├── Baseline/ # Server baseline comparison
├── FTP/ # FTP/SFTP file transfers
├── FileSystem/ # File system operations
├── Secrets/ # Secure credential management
└── Reports/ # Daily health check reports
Edit Config/settings.json to customize:
- Server list
- Critical services to monitor
- Websites to check
- Disk space thresholds
- SQL Server connections
- Email settings for reports
# Check service health across all servers
.\ServiceMonitoring\Check-ServiceHealth.ps1 -UseConfig
# Test web application availability
.\WebMonitoring\Test-WebApplicationBatch.ps1 -UseConfig
# Get disk space with threshold alerts
.\DiskSpace\Get-DiskSpaceThresholdReport.ps1 -ComputerName "Server01" -ThresholdPercent 80
# Create a server baseline
.\Baseline\New-ServerBaseline.ps1 -ComputerName "Server01"
# Compare current state to baseline
.\Baseline\Compare-Baseline.ps1 -ComputerName "Server01"
# Run daily health check with email
.\Reports\Invoke-DailyHealthCheck.ps1 -UseConfig -SendEmail- PowerShell 5.1 or later
- Windows Server 2012 R2 or later
- For remote management: WinRM enabled, appropriate firewall rules
- For AD scripts: Active Directory PowerShell module (RSAT-AD-PowerShell)
- For IIS scripts: WebAdministration module
- For SQL scripts: SqlServer module or dbatools
- For FTP scripts: WinSCP assembly installed (
$env:ProgramFiles (x86)\WinSCP\WinSCPnet.dll)
Provides shared functions:
Get-Config- Load configurationTest-ServerReachability- Ping checkGet-RemoteService- Get service status remotelyInvoke-RemoteCommand- Execute remote commandsWrite-Log- Logging functionExport-ReportData- Export to CSV/JSON/XMLSend-EmailReport- Send email reports
Check-ServiceStatus.ps1- Check specific service statusCheck-ServiceHealth.ps1- Monitor services across serversMonitor-CriticalServices.ps1- Monitor critical services with alertsFind-DisabledAutoStartServices.ps1- Find disabled auto-start servicesFind-HungServices.ps1- Find hung/stuck servicesTest-ServiceAccountPermissions.ps1- Check service account permissionsWatch-ServiceStateChanges.ps1- Watch for service state changes
Get-EventLogErrors.ps1- Get errors and warnings from event logsGet-SystemRestarts.ps1- List system restarts (expected vs unexpected)Get-UserLogonEvents.ps1- List user login events with details
Test-WebApplication.ps1- Test single URLTest-WebApplicationBatch.ps1- Test multiple URLs
Get-ADUser.ps1- Query AD usersGet-ADGroup.ps1- Query AD groupsGet-ADComputer.ps1- Query computersGet-ADUserGroups.ps1- Get user's group membership (recursive)Get-ADLockedAccounts.ps1- Find locked accountsGet-ADExpiredAccounts.ps1- Find expired accountsGet-ADInactiveComputers.ps1- Find stale computersTest-ADReplication.ps1- Check replication statusTest-ADServices.ps1- Verify AD services
Test-IISService.ps1- Check W3SVC serviceGet-IISSiteStatus.ps1- List IIS sitesGet-IISAppPoolStatus.ps1- List app poolsTest-IISSite.ps1- Test site via HTTPGet-IISBindings.ps1- List site bindingsGet-IISWorkerProcesses.ps1- List w3wp processesGet-IISErrorLogs.ps1- Parse IIS error logsStart-IISSite.ps1/Stop-IISSite.ps1- Control sitesRecycle-IISAppPool.ps1- Recycle app pools
Get-DiskSpace.ps1- Local disk infoGet-DiskSpaceRemote.ps1- Remote disk infoGet-DiskSpaceThresholdReport.ps1- Alert on threshold
Get-SystemUptime.ps1- Local uptimeGet-SystemUptimeRemote.ps1- Remote uptimeGet-WindowsRoles.ps1- List installed roles and features
Get-DatabaseSchema.ps1- Database schemaGet-TableSchema.ps1- Table schemaGet-SQLData.ps1- Execute queriesGet-ActiveConnections.ps1- Active connectionsGet-BlockedThreads.ps1- Blocked processesBackup-Database.ps1- Create database backupGet-DatabaseBackups.ps1- List backup historyRestore-Database.ps1- Restore from backup
Get-PortStatus.ps1- Check port availabilityGet-ProcessOnPort.ps1- Find process on portGet-ListeningPorts.ps1- List all listening portsTest-SSLCertificate.ps1- Test SSL certificateGet-SSLCertificateRemote.ps1- Get remote certGet-ExpiringCertificates.ps1- Find expiring certsTest-NetworkConnectivity.ps1- Ping/port testsTest-DNSResolution.ps1- DNS lookupTest-Traceroute.ps1- TracerouteGet-NetworkAdapterStatus.ps1- List adaptersGet-FirewallRules.ps1- List firewall rulesGet-GPOFirewallRules.ps1- GPO-managed rules
ConvertTo-CsvFromJson.ps1- JSON to CSVConvertTo-JsonFromCsv.ps1- CSV to JSONConvertTo-XmlFromCsv.ps1- CSV to XMLConvertTo-CsvFromXml.ps1- XML to CSVConvertTo-JsonFromXml.ps1- XML to JSONConvertTo-XmlFromJson.ps1- JSON to XML
Get-ScheduledTask.ps1- List tasksNew-ScheduledTask.ps1- Create taskRemove-ScheduledTask.ps1- Delete taskEnable-ScheduledTask.ps1- Enable taskDisable-ScheduledTask.ps1- Disable taskGet-ScheduledTaskHistory.ps1- Task run history
New-ServerBaseline.ps1- Record baseline snapshotGet-ServerBaseline.ps1- List stored baselinesCompare-Baseline.ps1- Diff current vs baselineRemove-ScheduledTask.ps1- Delete baseline
Send-FileToFtp.ps1- Upload single fileSend-BatchToFtp.ps1- Batch upload filesGet-FileFromFtp.ps1- Download fileGet-FtpDirectory.ps1- List directory contentsTest-FtpConnection.ps1- Test FTP connection
Test-PathExists.ps1- Test if path existsGet-IsDirectory.ps1- Check if path is directoryGet-FolderSize.ps1- Get folder sizeGet-FileDetails.ps1- Get file details (with optional hash)Get-DirectoryTree.ps1- List directory structureFind-LargeFiles.ps1- Find large filesGet-FileHash.ps1- Calculate file hashCompare-FileHash.ps1- Compare two file hashesGet-FileAge.ps1- Get file age informationFind-OldFiles.ps1- Find old filesGet-DuplicateFiles.ps1- Find duplicate filesGet-FileType.ps1- Get file type informationGet-FilePermissions.ps1- Get NTFS permissionsCopy-Robust.ps1- Robust file copy using Robocopy
Install-SecretModules.ps1- Install prerequisitesNew-StoredCredential.ps1- Create credential XML (DPAPI/AES)Get-StoredCredential.ps1- Load credential in scriptsNew-EncryptedPassword.ps1- Encrypt standalone passwordGet-WindowsCredential.ps1- Windows Credential ManagerInvoke-Vaultwarden.ps1- Vaultwarden CLI wrapperInvoke-AzureKeyVault.ps1- Azure Key Vault integrationGet-Secret.ps1- Unified secret retrieval
MIT License