Code Formatting Changes

This commit is contained in:
Mr.k 2024-07-26 03:36:49 +03:00
parent 03e32279bb
commit 1d6d0d600c
No known key found for this signature in database
6 changed files with 192 additions and 217 deletions

View File

@ -57,9 +57,9 @@ function ConvertTo-Icon {
#> #>
param( param(
[Parameter(Mandatory=$true, position=0)] [Parameter(Mandatory, position=0)]
[string]$bitmapPath, [string]$bitmapPath,
[Parameter(Mandatory=$true, position=1)] [Parameter(Mandatory, position=1)]
[string]$iconPath, [string]$iconPath,
[Parameter(position=2)] [Parameter(position=2)]
[bool]$overrideIconFile = $true [bool]$overrideIconFile = $true

View File

@ -1,15 +1,17 @@
function Get-Oscdimg { function Get-Oscdimg {
<# <#
.DESCRIPTION .DESCRIPTION
This function will download oscdimg file from github Release folders and put it into env:temp folder This function will download oscdimg file from github Release folders and put it into env:temp folder
.EXAMPLE .EXAMPLE
Get-Oscdimg Get-Oscdimg
#> #>
param( [Parameter(Mandatory=$true)]
param(
[Parameter(Mandatory, position=0)]
[string]$oscdimgPath [string]$oscdimgPath
) )
$oscdimgPath = "$env:TEMP\oscdimg.exe" $oscdimgPath = "$env:TEMP\oscdimg.exe"
$downloadUrl = "https://github.com/ChrisTitusTech/winutil/raw/main/releases/oscdimg.exe" $downloadUrl = "https://github.com/ChrisTitusTech/winutil/raw/main/releases/oscdimg.exe"
Invoke-RestMethod -Uri $downloadUrl -OutFile $oscdimgPath Invoke-RestMethod -Uri $downloadUrl -OutFile $oscdimgPath

View File

@ -4,14 +4,18 @@ function Get-TabXaml {
Generates XAML for a tab in the WinUtil GUI Generates XAML for a tab in the WinUtil GUI
This function is used to generate the XAML for the applications tab in the WinUtil GUI This function is used to generate the XAML for the applications tab in the WinUtil GUI
It takes the tabname and the number of columns to display the applications in as input and returns the XAML for the tab as output It takes the tabname and the number of columns to display the applications in as input and returns the XAML for the tab as output
.PARAMETER tabname .PARAMETER tabname
The name of the tab to generate XAML for The name of the tab to generate XAML for
Note: the 'tabname' parameter must equal one of the json files found in $sync.configs variable Note: the 'tabname' parameter must equal one of the json files found in $sync.configs variable
Otherwise, it'll throw an exception Otherwise, it'll throw an exception
.PARAMETER columncount .PARAMETER columncount
The number of columns to display the applications in, default is 0 The number of columns to display the applications in, default is 0
.OUTPUTS .OUTPUTS
The XAML for the tab The XAML for the tab
.EXAMPLE .EXAMPLE
Get-TabXaml "applications" 3 Get-TabXaml "applications" 3
#> #>

View File

@ -3,10 +3,13 @@ function Get-WPFObjectName {
.SYNOPSIS .SYNOPSIS
This is a helper function that generates an objectname with the prefix WPF that can be used as a Powershell Variable after compilation. This is a helper function that generates an objectname with the prefix WPF that can be used as a Powershell Variable after compilation.
To achieve this, all characters that are not a-z, A-Z or 0-9 are simply removed from the name. To achieve this, all characters that are not a-z, A-Z or 0-9 are simply removed from the name.
.PARAMETER type .PARAMETER type
The type of object for which the name should be generated. (e.g. Label, Button, CheckBox...) The type of object for which the name should be generated. (e.g. Label, Button, CheckBox...)
.PARAMETER name .PARAMETER name
The name or description to be used for the object. (invalid characters are removed) The name or description to be used for the object. (invalid characters are removed)
.OUTPUTS .OUTPUTS
A string that can be used as a object/variable name in powershell. A string that can be used as a object/variable name in powershell.
For example: WPFLabelMicrosoftTools For example: WPFLabelMicrosoftTools
@ -15,13 +18,14 @@ function Get-WPFObjectName {
Get-WPFObjectName -type Label -name "Microsoft Tools" Get-WPFObjectName -type Label -name "Microsoft Tools"
#> #>
param( [Parameter(Mandatory=$true)] param(
$type, [Parameter(Mandatory, position=0)]
$name [string]$type,
[Parameter(position=1)]
[string]$name
) )
$Output = $("WPF"+$type+$name) -replace '[^a-zA-Z0-9]', '' $Output = $("WPF"+$type+$name) -replace '[^a-zA-Z0-9]', ''
return $Output return $Output
} }

View File

@ -1,19 +1,20 @@
function Test-CompatibleImage() { function Test-CompatibleImage() {
<# <#
.SYNOPSIS .SYNOPSIS
Checks the version of a Windows image and determines whether or not it is compatible with a specific feature depending on a desired version Checks the version of a Windows image and determines whether or not it is compatible with a specific feature depending on a desired version
.PARAMETER Name .PARAMETER Name
imgVersion - The version of the Windows image imgVersion - The version of the Windows image
desiredVersion - The version to compare the image version with desiredVersion - The version to compare the image version with
#> #>
param param
( (
[Parameter(Mandatory = $true, Position=0)] [string] $imgVersion, [Parameter(Mandatory, position=0)]
[Parameter(Mandatory = $true, Position=1)] [Version] $desiredVersion [string]$imgVersion,
[Parameter(Mandatory, position=1)]
[Version]$desiredVersion
) )
try { try {
@ -26,7 +27,6 @@ function Test-CompatibleImage() {
function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender = $false) { function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender = $false) {
<# <#
.SYNOPSIS .SYNOPSIS
Removes certain features from ISO image Removes certain features from ISO image
@ -36,13 +36,10 @@ function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender
.EXAMPLE .EXAMPLE
Remove-Features -keepDefender:$false Remove-Features -keepDefender:$false
#> #>
try try {
{
$featlist = (Get-WindowsOptionalFeature -Path $scratchDir).FeatureName $featlist = (Get-WindowsOptionalFeature -Path $scratchDir).FeatureName
if ($dumpFeatures) if ($dumpFeatures) {
{
$featlist > allfeaturesdump.txt $featlist > allfeaturesdump.txt
} }
@ -57,8 +54,7 @@ function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender
if ($keepDefender) { $featlist = $featlist | Where-Object { $_ -NotLike "*Defender*" }} if ($keepDefender) { $featlist = $featlist | Where-Object { $_ -NotLike "*Defender*" }}
foreach($feature in $featlist) foreach($feature in $featlist) {
{
$status = "Removing feature $feature" $status = "Removing feature $feature"
Write-Progress -Activity "Removing features" -Status $status -PercentComplete ($counter++/$featlist.Count*100) Write-Progress -Activity "Removing features" -Status $status -PercentComplete ($counter++/$featlist.Count*100)
Write-Debug "Removing feature $feature" Write-Debug "Removing feature $feature"
@ -67,16 +63,13 @@ function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender
Write-Progress -Activity "Removing features" -Status "Ready" -Completed Write-Progress -Activity "Removing features" -Status "Ready" -Completed
Write-Host "You can re-enable the disabled features at any time, using either Windows Update or the SxS folder in <installation media>\Sources." Write-Host "You can re-enable the disabled features at any time, using either Windows Update or the SxS folder in <installation media>\Sources."
} }
catch catch {
{
Write-Host "Unable to get information about the features. MicroWin processing will continue, but features will not be processed" Write-Host "Unable to get information about the features. MicroWin processing will continue, but features will not be processed"
} }
} }
function Remove-Packages function Remove-Packages {
{ try {
try
{
$pkglist = (Get-WindowsPackage -Path "$scratchDir").PackageName $pkglist = (Get-WindowsPackage -Path "$scratchDir").PackageName
$pkglist = $pkglist | Where-Object { $pkglist = $pkglist | Where-Object {
@ -117,8 +110,7 @@ function Remove-Packages
$_ -NotLike "*UI.XaML*" $_ -NotLike "*UI.XaML*"
} }
foreach ($pkg in $pkglist) foreach ($pkg in $pkglist) {
{
try { try {
$status = "Removing $pkg" $status = "Removing $pkg"
Write-Progress -Activity "Removing Apps" -Status $status -PercentComplete ($counter++/$pkglist.Count*100) Write-Progress -Activity "Removing Apps" -Status $status -PercentComplete ($counter++/$pkglist.Count*100)
@ -132,16 +124,13 @@ function Remove-Packages
} }
Write-Progress -Activity "Removing Apps" -Status "Ready" -Completed Write-Progress -Activity "Removing Apps" -Status "Ready" -Completed
} }
catch catch {
{
Write-Host "Unable to get information about the packages. MicroWin processing will continue, but packages will not be processed" Write-Host "Unable to get information about the packages. MicroWin processing will continue, but packages will not be processed"
} }
} }
function Remove-ProvisionedPackages([switch] $keepSecurity = $false) function Remove-ProvisionedPackages([switch] $keepSecurity = $false) {
{
<# <#
.SYNOPSIS .SYNOPSIS
Removes AppX packages from a Windows image during MicroWin processing Removes AppX packages from a Windows image during MicroWin processing
@ -150,7 +139,6 @@ function Remove-ProvisionedPackages([switch] $keepSecurity = $false)
.EXAMPLE .EXAMPLE
Remove-ProvisionedPackages -keepSecurity:$false Remove-ProvisionedPackages -keepSecurity:$false
#> #>
$appxProvisionedPackages = Get-AppxProvisionedPackage -Path "$($scratchDir)" | Where-Object { $appxProvisionedPackages = Get-AppxProvisionedPackage -Path "$($scratchDir)" | Where-Object {
$_.PackageName -NotLike "*AppInstaller*" -AND $_.PackageName -NotLike "*AppInstaller*" -AND
@ -165,12 +153,10 @@ function Remove-ProvisionedPackages([switch] $keepSecurity = $false)
$_.PackageName -NotLike "*Foundation*" $_.PackageName -NotLike "*Foundation*"
} }
if ($?) if ($?) {
{
if ($keepSecurity) { $appxProvisionedPackages = $appxProvisionedPackages | Where-Object { $_.PackageName -NotLike "*SecHealthUI*" }} if ($keepSecurity) { $appxProvisionedPackages = $appxProvisionedPackages | Where-Object { $_.PackageName -NotLike "*SecHealthUI*" }}
$counter = 0 $counter = 0
foreach ($appx in $appxProvisionedPackages) foreach ($appx in $appxProvisionedPackages) {
{
$status = "Removing Provisioned $($appx.PackageName)" $status = "Removing Provisioned $($appx.PackageName)"
Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100) Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100)
try { try {
@ -183,14 +169,12 @@ function Remove-ProvisionedPackages([switch] $keepSecurity = $false)
} }
Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed
} }
else else {
{
Write-Host "Could not get Provisioned App information. Skipping process..." Write-Host "Could not get Provisioned App information. Skipping process..."
} }
} }
function Copy-ToUSB([string] $fileToCopy) function Copy-ToUSB([string] $fileToCopy) {
{
foreach ($volume in Get-Volume) { foreach ($volume in Get-Volume) {
if ($volume -and $volume.FileSystemLabel -ieq "ventoy") { if ($volume -and $volume.FileSystemLabel -ieq "ventoy") {
$destinationPath = "$($volume.DriveLetter):\" $destinationPath = "$($volume.DriveLetter):\"
@ -214,8 +198,7 @@ function Copy-ToUSB([string] $fileToCopy)
Write-Host "Ventoy USB Key is not inserted" Write-Host "Ventoy USB Key is not inserted"
} }
function Remove-FileOrDirectory([string] $pathToDelete, [string] $mask = "", [switch] $Directory = $false) function Remove-FileOrDirectory([string] $pathToDelete, [string] $mask = "", [switch] $Directory = $false) {
{
if(([string]::IsNullOrEmpty($pathToDelete))) { return } if(([string]::IsNullOrEmpty($pathToDelete))) { return }
if (-not (Test-Path -Path "$($pathToDelete)")) { return } if (-not (Test-Path -Path "$($pathToDelete)")) { return }
@ -240,25 +223,21 @@ function Remove-FileOrDirectory([string] $pathToDelete, [string] $mask = "", [sw
$itemsToDelete = [System.Collections.ArrayList]::new() $itemsToDelete = [System.Collections.ArrayList]::new()
if ($mask -eq "") if ($mask -eq "") {
{
Write-Debug "Adding $($pathToDelete) to array." Write-Debug "Adding $($pathToDelete) to array."
[void]$itemsToDelete.Add($pathToDelete) [void]$itemsToDelete.Add($pathToDelete)
} }
else else {
{
Write-Debug "Adding $($pathToDelete) to array and mask is $($mask)" Write-Debug "Adding $($pathToDelete) to array and mask is $($mask)"
if ($Directory) { $itemsToDelete = Get-ChildItem $pathToDelete -Include $mask -Recurse -Directory } if ($Directory) { $itemsToDelete = Get-ChildItem $pathToDelete -Include $mask -Recurse -Directory }
else { $itemsToDelete = Get-ChildItem $pathToDelete -Include $mask -Recurse } else { $itemsToDelete = Get-ChildItem $pathToDelete -Include $mask -Recurse }
} }
foreach($itemToDelete in $itemsToDelete) foreach($itemToDelete in $itemsToDelete) {
{
$status = "Deleting $($itemToDelete)" $status = "Deleting $($itemToDelete)"
Write-Progress -Activity "Removing Items" -Status $status -PercentComplete ($counter++/$itemsToDelete.Count*100) Write-Progress -Activity "Removing Items" -Status $status -PercentComplete ($counter++/$itemsToDelete.Count*100)
if (Test-Path -Path "$($itemToDelete)" -PathType Container) if (Test-Path -Path "$($itemToDelete)" -PathType Container) {
{
$status = "Deleting directory: $($itemToDelete)" $status = "Deleting directory: $($itemToDelete)"
takeown /r /d $yesNo[0] /a /f "$($itemToDelete)" takeown /r /d $yesNo[0] /a /f "$($itemToDelete)"
@ -267,8 +246,7 @@ function Remove-FileOrDirectory([string] $pathToDelete, [string] $mask = "", [sw
icacls $itemToDelete /grant "*S-1-5-32-544:(OI)(CI)F" /t /c /q icacls $itemToDelete /grant "*S-1-5-32-544:(OI)(CI)F" /t /c /q
Remove-Item -Force -Recurse "$($itemToDelete)" Remove-Item -Force -Recurse "$($itemToDelete)"
} }
elseif (Test-Path -Path "$($itemToDelete)" -PathType Leaf) elseif (Test-Path -Path "$($itemToDelete)" -PathType Leaf) {
{
$status = "Deleting file: $($itemToDelete)" $status = "Deleting file: $($itemToDelete)"
takeown /a /f "$($itemToDelete)" takeown /a /f "$($itemToDelete)"
@ -379,13 +357,11 @@ function New-Unattend {
</component> </component>
</settings> </settings>
'@ '@
if ((Test-CompatibleImage $imgVersion $([System.Version]::new(10,0,22000,1))) -eq $false) if ((Test-CompatibleImage $imgVersion $([System.Version]::new(10,0,22000,1))) -eq $false) {
{
# Replace the placeholder text with an empty string to make it valid for Windows 10 Setup # Replace the placeholder text with an empty string to make it valid for Windows 10 Setup
$unattend = $unattend.Replace("<#REPLACEME#>", "").Trim() $unattend = $unattend.Replace("<#REPLACEME#>", "").Trim()
} }
else else {
{
# Replace the placeholder text with the Specialize pass # Replace the placeholder text with the Specialize pass
$unattend = $unattend.Replace("<#REPLACEME#>", $specPass).Trim() $unattend = $unattend.Replace("<#REPLACEME#>", $specPass).Trim()
} }
@ -472,8 +448,7 @@ function New-FirstRun {
$firstRun = @' $firstRun = @'
# Set the global error action preference to continue # Set the global error action preference to continue
$ErrorActionPreference = "Continue" $ErrorActionPreference = "Continue"
function Remove-RegistryValue function Remove-RegistryValue {
{
param ( param (
[Parameter(Mandatory = $true)] [Parameter(Mandatory = $true)]
[string]$RegistryPath, [string]$RegistryPath,
@ -483,30 +458,25 @@ function New-FirstRun {
) )
# Check if the registry path exists # Check if the registry path exists
if (Test-Path -Path $RegistryPath) if (Test-Path -Path $RegistryPath) {
{
$registryValue = Get-ItemProperty -Path $RegistryPath -Name $ValueName -ErrorAction SilentlyContinue $registryValue = Get-ItemProperty -Path $RegistryPath -Name $ValueName -ErrorAction SilentlyContinue
# Check if the registry value exists # Check if the registry value exists
if ($registryValue) if ($registryValue) {
{
# Remove the registry value # Remove the registry value
Remove-ItemProperty -Path $RegistryPath -Name $ValueName -Force Remove-ItemProperty -Path $RegistryPath -Name $ValueName -Force
Write-Host "Registry value '$ValueName' removed from '$RegistryPath'." Write-Host "Registry value '$ValueName' removed from '$RegistryPath'."
} }
else else {
{
Write-Host "Registry value '$ValueName' not found in '$RegistryPath'." Write-Host "Registry value '$ValueName' not found in '$RegistryPath'."
} }
} }
else else {
{
Write-Host "Registry path '$RegistryPath' not found." Write-Host "Registry path '$RegistryPath' not found."
} }
} }
function Stop-UnnecessaryServices function Stop-UnnecessaryServices {
{
$servicesToExclude = @( $servicesToExclude = @(
"AudioSrv", "AudioSrv",
"AudioEndpointBuilder", "AudioEndpointBuilder",
@ -573,8 +543,7 @@ function New-FirstRun {
) )
$runningServices = Get-Service | Where-Object { $servicesToExclude -notcontains $_.Name } $runningServices = Get-Service | Where-Object { $servicesToExclude -notcontains $_.Name }
foreach($service in $runningServices) foreach($service in $runningServices) {
{
Stop-Service -Name $service.Name -PassThru Stop-Service -Name $service.Name -PassThru
Set-Service $service.Name -StartupType Manual Set-Service $service.Name -StartupType Manual
"Stopping service $($service.Name)" | Out-File -FilePath c:\windows\LogFirstRun.txt -Append -NoClobber "Stopping service $($service.Name)" | Out-File -FilePath c:\windows\LogFirstRun.txt -Append -NoClobber
@ -613,10 +582,8 @@ function New-FirstRun {
# Delete Edge Icon from the desktop # Delete Edge Icon from the desktop
$edgeShortcutFiles = Get-ChildItem -Path $desktopPath -Filter "*Edge*.lnk" $edgeShortcutFiles = Get-ChildItem -Path $desktopPath -Filter "*Edge*.lnk"
# Check if Edge shortcuts exist on the desktop # Check if Edge shortcuts exist on the desktop
if ($edgeShortcutFiles) if ($edgeShortcutFiles) {
{ foreach ($shortcutFile in $edgeShortcutFiles) {
foreach ($shortcutFile in $edgeShortcutFiles)
{
# Remove each Edge shortcut # Remove each Edge shortcut
Remove-Item -Path $shortcutFile.FullName -Force Remove-Item -Path $shortcutFile.FullName -Force
Write-Host "Edge shortcut '$($shortcutFile.Name)' removed from the desktop." Write-Host "Edge shortcut '$($shortcutFile.Name)' removed from the desktop."
@ -639,8 +606,7 @@ function New-FirstRun {
# Create a shortcut object # Create a shortcut object
$shortcut = $shell.CreateShortcut($shortcutPath) $shortcut = $shell.CreateShortcut($shortcutPath)
if (Test-Path -Path "c:\Windows\cttlogo.png") if (Test-Path -Path "c:\Windows\cttlogo.png") {
{
$shortcut.IconLocation = "c:\Windows\cttlogo.png" $shortcut.IconLocation = "c:\Windows\cttlogo.png"
} }

View File

@ -1,6 +1,5 @@
function Set-WinUtilUITheme { function Set-WinUtilUITheme {
<# <#
.SYNOPSIS .SYNOPSIS
Sets the theme of the XAML file Sets the theme of the XAML file
@ -12,13 +11,13 @@ function Set-WinUtilUITheme {
.EXAMPLE .EXAMPLE
Set-WinUtilUITheme -inputXAML $inputXAML Set-WinUtilUITheme -inputXAML $inputXAML
#> #>
param param
( (
[Parameter(Mandatory=$true, Position=0)] [Parameter(Mandatory, position=0)]
[string] $inputXML, [string] $inputXML,
[Parameter(Mandatory=$false, Position=1)] [Parameter(position=1)]
[string] $themeName = 'matrix' [string] $themeName = 'matrix'
) )