Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## Description
<!-- Clear description of the problem -->

## Current Behavior
<!-- What happens currently -->

## Expected Behavior
<!-- What should happen instead -->

## Steps to Reproduce
1.
2.
3.

## Environment
- PowerShell Version:
- Windows Version:
- WinDeploy Version:
- Execution Method: [USB/Direct/RMM/AutoUnattend]

## Logs
<!-- Attach relevant logs from C:\WinDeploy\Logs -->
```

<details>
<summary>Additional logs</summary>
```
Paste logs here
```

</details>

## Additional Context
<!-- Any other relevant information -->
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

---

## [0.1.2] - 2025-10-22

### Changed
- Enhanced startup banner to display script source (local file path, GitHub URL, or remote execution)
- Improved script path detection for remote execution via `irm | iex`
- Fixed display of execution method with color-coded source information
- Standardized all script headers for consistency across the codebase
- Streamlined documentation blocks (`.SYNOPSIS`, `.DESCRIPTION`, `.NOTES`) for clarity
- Renamed `Test-AdminPrivileges` to `Test-AdminPrivilege` (singular noun) in `Install-PowerShell7.ps1` and `Install-Winget.ps1`
- Added a warning when importing drivers via `Import-Drivers.ps1`.

### Fixed
- Added error logging to empty catch blocks in `Start.ps1` (fixes #2)
- Improved error messages in path resolution catch blocks

### Removed
- Removed all author, company, and version metadata from individual script files
- Removed redundant `.LINK` sections from documentation blocks
- Removed verbose bullet lists and "Features:" sections from descriptions

---

## [0.1.1] - 2025-10-21

### Initial Public Release

First open-source release of WinDeploy - Windows Deployment Automation Toolkit. This is the first release under the new name and repository.

---

[0.1.2]: https://github.com/Stensel8/WinDeploy/releases/tag/v0.1.2
[0.1.1]: https://github.com/Stensel8/WinDeploy/releases/tag/v0.1.1
64 changes: 47 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,26 +38,56 @@ iex "& { $(irm 'https://raw.githubusercontent.com/Stensel8/WinDeploy/main/Script
```
WinDeploy/
├── Scripts/
│ ├── Start.ps1 # Main entry point with auto-elevation
│ ├── Deploy-Device.ps1 # Full deployment orchestrator
│ ├── Install-Drivers.ps1 # Dell/HP driver automation
│ ├── Install-Applications.ps1 # WinGet app installer
│ ├── Install-WindowsUpdates.ps1 # Windows Update automation
│ ├── Remove-Bloat.ps1 # Bloatware removal
│ ├── Get-IntuneHash.ps1 # Autopilot hash generator
│ ├── Set-Theme.ps1 # Desktop theme configuration
│ └── Utilities/ # Shared modules
│ ├── Logging.psm1 # Logging framework
│ ├── WinGet.psm1 # WinGet wrapper functions
│ ├── System.psm1 # System utilities
│ └── Download.psm1 # Download helpers
│ ├── Start.ps1 # [AUTO] Main entry point with Auto-Elevate
│ ├── Deploy-Device.ps1 # [AUTO] Full deployment orchestrator
│ │
│ ├── Install-Drivers.ps1 # [AUTO] Dell/HP driver automation
│ ├── Install-Applications.ps1 # [AUTO] WinGet app installer
│ ├── Install-WindowsUpdates.ps1 # [AUTO] Windows Update automation
│ ├── Remove-Bloat.ps1 # [AUTO] Bloatware removal
│ ├── Get-IntuneHash.ps1 # [AUTO] Generates Autopilot device hash for Intune
│ ├── Set-Theme.ps1 # [AUTO] Desktop theme configuration
│ ├── Install-PowerShell7.ps1 # [AUTO] PowerShell 7 installation (if needed)
│ ├── Install-Winget.ps1 # [AUTO] WinGet installation (if needed)
│ │
│ ├── Disable-AutoRun.ps1 # [UTIL] Standalone utility (manual use)
│ ├── DisableFirstLogonAnimation.ps1 # [UTIL] Standalone utility (manual use)
│ ├── Export-Drivers.ps1 # [UTIL] Standalone utility (manual use)
│ ├── Generate-Hostname.ps1 # [UTIL] Standalone utility (manual use)
│ ├── Get-InstalledSoftware.ps1 # [UTIL] Standalone utility (manual use)
│ ├── Import-Drivers.ps1 # [UTIL] Standalone utility (manual use)
│ ├── Install-MSI.ps1 # [UTIL] Standalone utility (manual use)
│ ├── OOBE-Requirement.ps1 # [UTIL] Standalone utility (manual use)
│ ├── Update-AllApps.ps1 # [UTIL] Standalone utility (manual use)
│ │
│ └── Utilities/ # Shared PowerShell module files (*.psm1)
│ ├── Logging.psm1 # Logging framework
│ ├── WinGet.psm1 # WinGet wrapper functions
│ ├── System.psm1 # System utilities
│ ├── Download.psm1 # Download helpers
│ ├── Deployment.psm1 # Deployment orchestration helpers
│ ├── Driver.psm1 # Driver detection & installation
│ ├── Network.psm1 # Network connectivity checks
│ ├── Registry.psm1 # Registry manipulation utilities
│ ├── RMMAgent.psm1 # RMM agent installation
│ └── ScriptBootstrap.psm1 # Script initialization & setup (integrity checks)
├── Docs/
│ ├── SupportedDellDevices.json # Dell device compatibility list
│ └── SupportedHPDevices.json # HP device compatibility list
├── Config/ # (Future) Configuration files
└── README.md
│ ├── SupportedDellDevices.json # Dell device compatibility list
│ └── SupportedHPDevices.json # HP device compatibility list
├── autounattend.xml # [AUTO] Unattended Windows installation config (this will only ask the user to select their drive, the setup will handle the rest on its own)
├── README.md # Main documentation
├── CONTRIBUTING.md # Contribution guidelines
├── CHANGELOG.md # Version history
├── LICENSE # MIT License
└── VERSION # Current version
```

**Legend:**
- [AUTO] **Auto-run during deployment** - Executed automatically by `Deploy-Device.ps1`
- [UTIL] **Standalone utilities** - Available for manual execution as needed

---

## How It Works
Expand Down
14 changes: 5 additions & 9 deletions Scripts/Deploy-Device.ps1
Original file line number Diff line number Diff line change
@@ -1,27 +1,23 @@
# WinDeploy Device Deployment Script
# WinDeploy Device Deployment Script
# Part of the WinDeploy Automation Toolkit
# See RELEASES.md for current version and CHANGELOG.md for changes
# See Releases for current version and CHANGELOG.md for changes

#requires -Version 7.0
#requires -RunAsAdministrator

<#
.SYNOPSIS
Orchestrates Windows device deployment by running child scripts in proper sequence.
Orchestrates Windows device deployment by running scripts in sequence.

.DESCRIPTION
Executes all deployment scripts in the correct order. Requires PowerShell 7.
Use Start.ps1 to automatically install prerequisites and launch this script.
All logs are saved to C:\WinDeploy\Logs. All downloads go to C:\WinDeploy\Download.

.EXAMPLE
.\Deploy-Device.ps1

.NOTES
Created by : Sten Tijhuis
Project : WinDeploy
Requires : PowerShell 7+, Admin rights
Version : See VERSION file in repository root
Requires : PowerShell 7+, Admin rights
#>

Set-StrictMode -Version Latest
Expand Down Expand Up @@ -164,7 +160,7 @@ exit `$exitCode

return $result.ExitCode
} catch {
Write-Log "Failed to execute $StepName: $_" -Level Error
Write-Log "Failed to execute $($StepName): $($_)" -Level Error
return 1
}
}
Expand Down
20 changes: 8 additions & 12 deletions Scripts/Disable-AutoRun.ps1
Original file line number Diff line number Diff line change
@@ -1,27 +1,23 @@
# WinDeploy AutoRun Disabler
# Part of the WinDeploy Automation Toolkit
# See Releases for current version and CHANGELOG.md for changes

#requires -Version 5.1
#requires -RunAsAdministrator

<#
.SYNOPSIS
Disables all Windows AutoRun functionality for security hardening.
Disables Windows AutoRun functionality for security hardening.

.DESCRIPTION
This script disables AutoRun and AutoPlay functionality across all drive types
to prevent automatic execution of potentially malicious code from external media.

The script:
- Disables AutoRun for all drive types (USB, CD-ROM, network drives, etc.)
- Blocks autorun.inf execution system-wide
- Configures registry settings to prevent automatic software installations
- Applies security hardening to protect against malware propagation
Disables AutoRun and AutoPlay across all drive types to prevent automatic
execution of potentially malicious code from external media.

.EXAMPLE
.\Disable-AutoRun.ps1

.NOTES
Created by : Sten Tijhuis
Project : WinDeploy
Requires : Administrator rights, PowerShell 5.1+
Requires : Admin rights
#>

[CmdletBinding()]
Expand Down
23 changes: 6 additions & 17 deletions Scripts/DisableFirstLogonAnimation.ps1
Original file line number Diff line number Diff line change
@@ -1,33 +1,22 @@
<#PSScriptInfo

.AUTHOR Sten Tijhuis

.COMPANYNAME WinDeploy

.TAGS PowerShell Windows Deployment Intune FirstLogonAnimation Policy

.PROJECTURI https://github.com/Stensel8/WinDeploy

#>
# WinDeploy First Logon Animation Disabler
# Part of the WinDeploy Automation Toolkit
# See Releases for current version and CHANGELOG.md for changes

#requires -Version 5.1
#requires -RunAsAdministrator

<#
.SYNOPSIS
Disables the Windows first logon animation for all users.
Disables Windows first logon animation.

.DESCRIPTION
Sets registry key to disable the animated first-sign-in experience.
Sets registry key to disable the animated first-sign-in experience for all users.

.EXAMPLE
.\DisableFirstLogonAnimation.ps1

.NOTES
Version : See VERSION file in repository root
Author : Sten Tijhuis
Project : WinDeploy
Requirements : Administrative privileges, Windows PowerShell 5.1+
Requires : Admin rights
#>

Set-StrictMode -Version Latest
Expand Down
32 changes: 12 additions & 20 deletions Scripts/Export-Drivers.ps1
Original file line number Diff line number Diff line change
@@ -1,44 +1,36 @@
# Driver Exporter
# Part of the Deployment Toolkit
# See RELEASES.md for current version and CHANGELOG.md for changes
# WinDeploy Driver Export Utility
# Part of the WinDeploy Automation Toolkit
# See Releases for current version and CHANGELOG.md for changes

#requires -Version 5.1
#requires -RunAsAdministrator

<#
.SYNOPSIS
Exports all third-party drivers from the system to a specified folder.
Exports third-party drivers to a specified folder.

.DESCRIPTION
This script exports all non-Microsoft signed drivers from your current Windows installation
to a target folder, which you specify as a command-line argument. Uses pnputil.exe
to export driver packages with proper error handling and detailed logging.
Exports all non-Microsoft signed drivers from the current Windows installation
using pnputil.exe with proper error handling and logging.

.PARAMETER ExportPath
The folder path where the drivers will be exported. Required.
The folder path where drivers will be exported. Required.

.EXAMPLE
.\Export-Drivers.ps1 -ExportPath "C:\drivers\backup"

.NOTES
Created by : Sten Tijhuis
Project : WinDeploy
Requires : Admin rights, Windows 10/11
Version : See VERSION file in repository root

.LINK
Project Site: https://github.com/Stensel8/WinDeploy
Requires : Admin rights, Windows 11
#>

#requires -Version 5.1
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Continue'

param(
[Parameter(Mandatory)]
[Parameter(Mandatory, Position=0)]
[string]$ExportPath
)

Set-StrictMode -Version Latest
$ErrorActionPreference = 'Continue'

# Bootstrap initialization using consolidated function
Import-Module (Join-Path $PSScriptRoot 'Utilities\ScriptBootstrap.psm1') -Force -Global
Initialize-DeploymentScript -LogName 'Export-Drivers.log' -RequiredModules @('Logging','System','Driver') -RequireAdmin
Expand Down
22 changes: 5 additions & 17 deletions Scripts/Generate-Hostname.ps1
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
<#PSScriptInfo

.AUTHOR Sten Tijhuis

.COMPANYNAME WinDeploy

.TAGS PowerShell Windows Serial ComputerName Hostname Naming Convention

.PROJECTURI https://github.com/Stensel8/WinDeploy

#>
# WinDeploy Hostname Generator
# Part of the WinDeploy Automation Toolkit
# See Releases for current version and CHANGELOG.md for changes

#requires -Version 5.1

Expand All @@ -31,12 +23,8 @@
String. Returns the formatted hostname (e.g., "PC-12345").

.NOTES
Version : See VERSION file in repository root
Created by : Sten Tijhuis
Project : WinDeploy

.LINK
Project Site: https://github.com/Stensel8/WinDeploy
Requires : PowerShell 5.1+
#>
#>

Set-StrictMode -Version Latest
Expand Down
26 changes: 6 additions & 20 deletions Scripts/Get-InstalledSoftware.ps1
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
<#PSScriptInfo

.AUTHOR Sten Tijhuis

.COMPANYNAME WinDeploy

.TAGS PowerShell Windows Software Inventory Registry AppX Reporting

.PROJECTURI https://github.com/Stensel8/WinDeploy

#>
# WinDeploy Software Inventory Tool
# Part of the WinDeploy Automation Toolkit
# See Releases for current version and CHANGELOG.md for changes

#requires -Version 5.1

Expand All @@ -17,20 +9,14 @@
Inventories all installed software on the system.

.DESCRIPTION
Comprehensive software inventory tool that queries both traditional Win32
applications (via registry) and modern Store apps (via AppX packages).
Queries traditional Win32 applications (via registry) and modern Store apps
(via AppX packages) to provide a comprehensive software inventory.

.EXAMPLE
.\Get-InstalledSoftware.ps1

.NOTES
Version : See VERSION file in repository root
Created by : Sten Tijhuis
Project : WinDeploy
Requires : PowerShell 5.1+

.LINK
Project Site: https://github.com/Stensel8/WinDeploy
Requires : PowerShell 5.1+
#>

Set-StrictMode -Version Latest
Expand Down
Loading