Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improvement and new parameter #333

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all 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
47 changes: 38 additions & 9 deletions tiny11maker.ps1
Original file line number Diff line number Diff line change
@@ -1,19 +1,46 @@
# Enable debugging
#Set-PSDebug -Trace 1

<#
.SYNOPSIS
Scripts to build a trimmed-down Windows 11 image.

.DESCRIPTION
This is a script created to automate the build of a streamlined Windows 11 image, similar to tiny10.
My main goal is to use only Microsoft utilities like DISM, and no utilities from external sources.
The only executable included is oscdimg.exe, which is provided in the Windows ADK and it is used to create bootable ISO images.

.PARAMETER Scratch
Drive letter of the desired scratch disk (eg: D)

.PARAMETER Iso
Drive letter given to the mounted iso (eg: E)

.VALIDE CALL
.\tiny11maker.ps1 E D
.\tiny11maker.ps1 -ISO E -SCRATCH D
.\tiny11maker.ps1 -SCRATCH D -ISO E
.\tiny11maker.ps1

*If you put only the value in parameters the first one must be the iso mounted. The second is the scratch drive.
prefer the use of "-ISO" as you can put in the order you want.

.NOTES
Auteur: ntdevlabs
Date: 05-06-24
#>

param (
[ValidatePattern('^[c-zC-Z]$')]
[string]$ScratchDisk
[ValidatePattern('^[c-zC-Z]$')][string]$ISO,
[ValidatePattern('^[c-zC-Z]$')][string]$SCRATCH
)

if (-not $ScratchDisk) {
if (-not $SCRATCH) {
$ScratchDisk = $PSScriptRoot -replace '[\\]+$', ''
} else {
$ScratchDisk = $ScratchDisk + ":"
$ScratchDisk = $SCRATCH + ":"
}

Write-Output "Scratch disk set to $ScratchDisk"

# Check if PowerShell execution is restricted
if ((Get-ExecutionPolicy) -eq 'Restricted') {
Write-Host "Your current PowerShell Execution Policy is set to Restricted, which prevents scripts from running. Do you want to change it to RemoteSigned? (yes/no)"
Expand Down Expand Up @@ -42,8 +69,6 @@ if (! $myWindowsPrincipal.IsInRole($adminRole))
exit
}



# Start the transcript and prepare the window
Start-Transcript -Path "$ScratchDisk\tiny11.log"

Expand All @@ -54,7 +79,11 @@ Write-Host "Welcome to the tiny11 image creator! Release: 05-06-24"
$hostArchitecture = $Env:PROCESSOR_ARCHITECTURE
New-Item -ItemType Directory -Force -Path "$ScratchDisk\tiny11\sources" | Out-Null
do {
$DriveLetter = Read-Host "Please enter the drive letter for the Windows 11 image"
if (-not $ISO) {
$DriveLetter = Read-Host "Please enter the drive letter for the Windows 11 image"
} else {
$DriveLetter = $ISO
}
if ($DriveLetter -match '^[c-zC-Z]$') {
$DriveLetter = $DriveLetter + ":"
Write-Output "Drive letter set to $DriveLetter"
Expand Down