YokoRUMsetPC.psm1
<#
.SYNOPSIS Export HWID for INTUNE .DESCRIPTION Generate HWID with Group Tag to upload to INTUNE or to generate CVS file. .PARAMETER AdminUsername Provide INTUNE Administrator username. .PARAMETER Tag Tag will generate itself for Yokohama, RUMA, if you define it it will be as defined. .PARAMETER GenerateCSV Do not upload online to INTUNE, just make CVS file with Group Tag. .PARAMETER Force Skip confirmation question. .PARAMETER ConsoleTimeClose Select time in secounds from 3 to 20 for closing upload console. .EXAMPLE PS C:\> Export-HWIDtoINTUE PS C:\> Export-HWIDtoINTUE -AdminUsername "myIntuneAdminAccount.MicrosoftOnline.com" .NOTES Made for Yokohama, Serbia, RUMA. By chixus ©2025. #> function Export-HWIDtoINTUE { [CmdletBinding()] param ( [string]$AdminUsername, [string]$Tag = 'YTWSEM-RUM', [switch]$GenerateCSV, [ValidateRange(3, 20)] [Alias('time')] [int]$ConsoleTimeClose = 9, [switch]$Force ) function Get-Answer { [CmdletBinding()] [OutputType([boolean])] param () $title = "Confirmation" $message = "Are you sure you want to continue?" $options = '&Yes', '&No (or any other key)' $defaultOption = 1 $choice = $Host.UI.PromptForChoice($title, $message, $options, $defaultOption) if ($choice -eq 0) { return $true } else { return $false } } [boolean]$answer = $true [string]$PCtype = "Unknown" Write-Output -InputObject "" $FileExplorer = Get-Command -Name 'Explorer' -CommandType Application $Powershell = Get-Command -Name 'powershell' -CommandType Application $ScriptName = 'Get-WindowsAutopilotInfo' $ScripyCheck = Get-Command -Name $ScriptName -CommandType ExternalScript -ListImported if (!$ScripyCheck) { Write-Warning -Message "Installing Get-WindowsAutopilotInfo script`n" Start-Process -FilePath $Powershell -ArgumentList "Install-Script -Name $ScriptName -Force" -Verb runas -WindowStyle Hidden -Wait } if ($Tag -ne 'YTWSEM-RUM') { Write-Output -InputObject "Tag defined manually:`t$Tag" } else { if ((Get-CimInstance -Class Win32_ComputerSystem).PCSystemType -eq 2) { $Tag += "L" $PCtype = "Laptop" } else { $Tag += "W" $PCtype = "Desktop" } if ($Tag -eq "YTWSEM-RUM") { return Write-Error -Message "Unable to determine PC type to create tag." -Category DeviceError } } $Serial = (Get-CimInstance -class win32_bios).SerialNumber if ($GenerateCSV) { $hashFolder = New-Item -Path "$env:SystemDrive\HWID\" -ItemType Directory -Force $Filename = "AutopilotHWID_TAG-$Tag.csv" $OutputFile = $hashFolder.FullName + "\$Filename" Write-Output -InputObject "Generating file: $Filename at folder $hashFolder for $PCtype with serial number: $Serial" Start-Process -FilePath $Powershell -ArgumentList "$ScriptName -OutputFile $OutputFile -GroupTag $Tag" -WindowStyle Hidden -Wait -Verb runas Start-Process -FilePath $FileExplorer $hashFolder -WindowStyle Normal -Wait } else { if (!$AdminUsername) { $AdminUsername = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('aABkAC4AaQAuAGIAZQBuAGkAcwBlAGsAQAB5AG8AawBvAGgAYQBtAGEAdAB3AHMALgBvAG4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQA=')) } Write-Output -InputObject "Admin username:`t`t$AdminUsername" Write-Output -InputObject "Computer type:`t`t$PCtype" Write-Output -InputObject "$PCtype serial:`t`t$Serial" Write-Output -InputObject "Group tag:`t`t$Tag" if (!$Force) { Write-Output -InputObject "`nAre you sure you want to upload to INTUNES Autopilot ?" $answer = Get-Answer } if ($answer) { Write-Output -InputObject "`nUploading data." Start-Process -FilePath $Powershell -ArgumentList "Get-WindowsAutoPilotInfo.ps1 -GroupTag $Tag -Credential $AdminUsername -Online -Force; Write-Output -InputObject '`n`n`t`t`tWaiting 9 secounds to close windos...'; Start-Sleep -Seconds $ConsoleTimeClose" -Wait -WindowStyle Normal -Verb runas Write-Output -InputObject "Done.`n" } else { Write-Output -InputObject "`nAction canceled." } } } <# .SYNOPSIS Enable dotNET 3.5 .DESCRIPTION A detailed description of the Install-dotNet3.5 function. .EXAMPLE PS C:\> Install-dotNet3.5 .NOTES Made for Yokohama, Serbia, RUMA. By chixus ©2025. #> function Install-dotNet3.5 { [CmdletBinding(SupportsShouldProcess = $true)] param () $Powershell = Get-Command -Name 'powershell' -CommandType Application $Arguments = "if (((Get-WindowsOptionalFeature -FeatureName NetFx3 -Online).State) -ne 'Enabled') { Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All }" if ($pscmdlet.ShouldProcess("Target", "Operation")) { Start-Process -FilePath $Powershell -ArgumentList $Arguments -WindowStyle Hidden -Verb runas } } <# .SYNOPSIS Install Serbian .DESCRIPTION Install Serbian language packs, cyrilic and latin. .EXAMPLE PS C:\> Install-SerbianLanguage .NOTES Additional information about the function. #> function Install-SerbianLanguage { [CmdletBinding(SupportsShouldProcess = $true)] param () $admin = [boolean]([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) if (!$admin) { return Write-Error -Message "Must run in Admin console." -Category AuthenticationError } if ($pscmdlet.ShouldProcess("Target", "Operation")) { Write-Output -InputObject "Intalling Serbian cyrilic language pack." Install-Language -Language "sr-Cyrl-RS" Write-Output -InputObject "Intalling Serbian latin language pack." Install-Language -Language "sr-Latn-RS" } } <# .SYNOPSIS Opens P:\IT\Programi\ .DESCRIPTION Open public network shared folder with programs installations. .EXAMPLE PS C:\> Open-PublicITfolder .NOTES Made for Yokohama, Serbia, RUMA. By chixus ©2025. #> function Open-PublicITfolder { [CmdletBinding()] param () $FileExplorer = Get-Command -Name 'Explorer' -CommandType Application $path = '\\twsrumfil001\Public\IT\programi\' $test = Resolve-Path -Path $path -ErrorAction SilentlyContinue if ($test) { Start-Process -FilePath $FileExplorer -ArgumentList $test -Wait -WindowStyle Normal } else { Write-Error -Message "Cannot access public folder." -Category ConnectionError } } <# .SYNOPSIS Imstall M3 for user .DESCRIPTION A detailed description of the Install-M3 function. .PARAMETER web Install online. .EXAMPLE PS C:\> Install-M3 .NOTES Install M3 for user. #> function Install-M3 { [CmdletBinding(SupportsShouldProcess = $true)] param ( [switch]$online ) [uri]$site = 'https://Twsm3isoprd.yokohama-tws.com:20108/mango' $M3path = '\\twsrumfil001\Public\IT\programi\M3\' $InstallFile = 'M3 install.lnk' $StartInstall = $M3path + $InstallFile if ($pscmdlet.ShouldProcess("Target", "Operation")) { if ($online) { Write-Output -InputObject "Opening webpage to install M3 online from site: $site`nAlso can install from local network at 'P:\IT\Programi\M3'`n" Start-Process -FilePath msedge -ArgumentList $site -WindowStyle Maximized } else { $test = Resolve-Path -Path $M3path -ErrorAction SilentlyContinue if ($test) { Write-Output -InputObject "Opening 'P:\IT\Programi\M3'`n" $FileExplorer = Get-Command -Name 'Explorer' -CommandType Application Start-Process -FilePath $FileExplorer -ArgumentList $test -WindowStyle Normal -Wait Start-Process -FilePath $StartInstall -NoNewWindow -Wait Write-Output -InputObject "Installation complete." } else { Write-Error -Message "Cannot access public folder." -Category ConnectionError Write-Output -InputObject "Try to use online installation with cmdlet:`n`nInstall-M3 -online`n" } } } } <# .SYNOPSIS Instal printer .DESCRIPTION Install local printer for user. .EXAMPLE PS C:\> Install-Printer .NOTES Additional information about the function. #> function Install-Printer { [CmdletBinding(SupportsShouldProcess = $true)] param () if ($pscmdlet.ShouldProcess("Target", "Operation")) { $FileExplorer = Get-Command -Name 'Explorer' -CommandType Application $path = '\\twsrumasl001' $test = Resolve-Path -Path $path -ErrorAction SilentlyContinue if ($test) { Start-Process -FilePath $FileExplorer -ArgumentList $test -LoadUserProfile -Wait } { Write-Error -Message "Cannot access printer network folder." -Category ConnectionError } } } <# .SYNOPSIS Set 2 factor authorisation .DESCRIPTION Set multi factor authorisation to Microsoft authenticator. .PARAMETER incognito Open Chrome in incognito (private) mode. .PARAMETER anybrowser Open from any installed browser, does not apply incognito option. .EXAMPLE PS C:\> Set-MFA PS C:\> Set-MFA -incognito .NOTES Made for Yokohama, Serbia, RUMA. By chixus ©2025. #> function Set-MFA { [CmdletBinding(SupportsShouldProcess = $true)] param ( [switch]$incognito, [switch]$anybrowser ) [uri]$site = 'https://aka.ms/mfasetup' $Arguments = $site if ($incognito) { $Arguments = $Arguments + " --incognito" } if ($pscmdlet.ShouldProcess("Target", "Operation")) { if ($anybrowser) { Write-Output -InputObject "This option does not inculde incognito option, opening`n$site`n" Start-Process -FilePath $site -WindowStyle Maximized } else { Start-Process -FilePath chrome -ArgumentList $Arguments -ErrorAction SilentlyContinue $testChrome = Get-Process -Name chrome -ErrorAction SilentlyContinue if ($testChrome) { Write-Output -InputObject "Visiting: $site to set multi factor authorisation." } else { Write-Error -Message "Google Chrome browser not installed." -Category NotInstalled Write-Output -InputObject "Try cmdlet with this switch:`n`nSet-MFA -anybroser`n" } } } } function Show-TrayIcon { [CmdletBinding()] param () $TrayIcons = "HKCU:\Control Panel\NotifyIconSettings" $Property = "IsPromoted" if (Test-Path -LiteralPath $TrayIcons -PathType 'Container' -ErrorAction SilentlyContinue) { Get-ChildItem -LiteralPath $TrayIcons | Where-Object { $_.GetValue($Property) -ne 1 } | ForEach-Object { Set-ItemProperty -LiteralPath ($_.PSPath) -Name $Property -Value 1 -Force -ErrorAction SilentlyContinue | Out-Null } } else { Write-Error -Message "Registry path for hidden icons not found." -Category ObjectNotFound } } function Move-TaskBarLeft { [CmdletBinding()] param () $path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" $name = "TaskbarAl" $test = Get-ItemProperty -Path $path -Name $name -ErrorAction SilentlyContinue if (!$test) { New-ItemProperty -Path $path -Name $name -PropertyType DWORD -Value 0 -Force | Out-Null } } function Enable-DesktopIcon { [CmdletBinding()] param () $desktopIconSettingsPath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel" $desktopSettings = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes" $ThemesChange = "ThemeChangesDesktopIcons" $MyComputer = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" $UserFiles = "{59031a47-3f72-44a7-89c5-5595fe6b30ee}" $Network = "{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}" Set-ItemProperty -Path $desktopIconSettingsPath -Name $MyComputer -Value 0 -Force | Out-Null Set-ItemProperty -Path $desktopIconSettingsPath -Name $UserFiles -Value 0 -Force | Out-Null Set-ItemProperty -Path $desktopIconSettingsPath -Name $Network -Value 0 -Force | Out-Null Set-ItemProperty -Path $desktopSettings -Name $ThemesChange -Value 0 -Force | Out-Null } function Disable-TaskView { [CmdletBinding()] param () $path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" $name = "ShowTaskViewButton" $value = Get-ItemProperty -Path $path -Name $name -ErrorAction SilentlyContinue if ($value.ShowTaskViewButton -ne 0) { Set-ItemProperty -Path $path -Name $name -Value 0 -Force } } function Format-RegionalCulture { [CmdletBinding()] param () $DateFormat = 'dd.MM.yyyy' $DateLongFormat = 'dddd, MMMM d, yyyy' $TimeZone = 'Central Europe Standard Time' $TimeFormat = 'HH:mm' $TimeLongFormat = 'HH:mm:ss' $separator = "HKCU:\Control Panel\International" if ((Get-WinHomeLocation).GeoId -ne 271) { Set-WinHomeLocation -GeoId 271 Write-Output -InputObject "Setting country to:`t`tSerbia" } if ((Get-TimeZone).Id -ne $TimeZone) { Set-TimeZone -Id $TimeZone Write-Output -InputObject "Setting Time Zone to:`t`t$TimeZone" } if ((Get-ItemProperty -Path "HKCU:\Control Panel\International\" -name sShortDate).sShortDate -ne $DateFormat) { Set-ItemProperty -Path "HKCU:\Control Panel\International\" -name sShortDate -value $DateFormat Write-Output -InputObject "Setting short date format to:`t$DateFormat" } if ((Get-ItemProperty -Path "HKCU:\Control Panel\International\" -name sLongDate).sLongDate -ne $DateLongFormat) { Set-ItemProperty -Path "HKCU:\Control Panel\International\" -name sLongDate -value $DateLongFormat Write-Output -InputObject "Setting long date format to:`t$dateLongFormat" } if ((Get-ItemProperty -Path "HKCU:\Control Panel\International" -name sShortTime).sShortTime -ne $TimeFormat) { Set-ItemProperty -Path "HKCU:\Control Panel\International" -name sShortTime -value $TimeFormat Write-Output -InputObject "Setting short time format to:`t$TimeFormat" } if ((Get-ItemProperty -Path "HKCU:\Control Panel\International" -name sTimeFormat).sTimeFormat -ne $TimeLongFormat) { Set-ItemProperty -Path "HKCU:\Control Panel\International" -name sTimeFormat -value $TimeLongFormat Write-Output -InputObject "Setting long time format to:`t$TimeLongFormat" } if ((Get-ItemProperty -Path $separator -Name sDecimal).sDecimal -eq ".") { Set-ItemProperty -Path $separator -Name sDecimal -Value "," Set-ItemProperty -Path $separator -Name sThousand -Value "." Write-Output -InputObject "Group separator set to:`t`t.`nDecimal separator set to:`t," } elseif ((Get-ItemProperty -Path $separator -Name sThousand).sThousand -eq ",") { Set-ItemProperty -Path $eparator -Name sThousand -Value "." Write-Output -InputObject "Group separator set to:`t`t." } } function Enable-DeleteConfirmation { [CmdletBinding()] param () $Powershell = Get-Command -Name 'powershell' -CommandType Application $path = 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' $name = 'ConfirmFileDelete' if (!(Test-Path -Path $path)) { Start-Process -FilePath $Powershell -ArgumentList "New-Item -Path $path -Force | Out-Null; Set-ItemProperty -Path $path -Name $name -Value 1 -Force" -WindowStyle Hidden -Verb runas -Wait Start-Process -FilePath $Powershell -ArgumentList "New-Item -Path $path -Force; Set-ItemProperty -Path $path -Name $name -Value 1 -Force" -WindowStyle Hidden -Verb runas -Wait } else { Start-Process -FilePath $Powershell -ArgumentList "Set-ItemProperty -Path $path -Name $name -Value 1 -Force" -WindowStyle Hidden -Verb runas -Wait } $RegCheck = Get-Item -Path $path -ErrorAction SilentlyContinue if (!$RegCheck) { Start-Process -FilePath $Powershell -ArgumentList "New-Item -Path $path -Force; New-ItemProperty -Path $path -Name $name -PropertyType DWORD -Value 1 -Force" -WindowStyle Hidden -Verb runas -Wait Write-Output -InputObject "Created value ConfirmFileDelete and set to enabled." } elseif ((Get-ItemProperty -Path $path -Name $name).ConfirmFileDelete -ne 1) { Start-Process -FilePath $Powershell -ArgumentList "Set-ItemProperty -Path $path -Name $name -Value 1 -Force" -WindowStyle Hidden -Verb runas -Wait Write-Output -InputObject "Delete confirmation enabled." } } function Set-AutoTImeZone { [CmdletBinding(SupportsShouldProcess = $true)] param () $TZAutoSettingRegPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\tzautoupdate' $name = 'Start' if ($pscmdlet.ShouldProcess("Target", "Operation")) { if ((Get-ItemProperty -Path $TZAutoSettingRegPath -Name $name).Start -ne 3) { Start-Process -FilePath powershell -ArgumentList "Set-ItemProperty -Path $TZAutoSettingRegPath -Name $name -Value 3 -Force" -WindowStyle Hidden -Verb runas } } } <# .SYNOPSIS Set user PC .DESCRIPTION Private cmdlet for setting Yokohama - Serbia - Ruma user PC. .EXAMPLE PS C:\> Set-YokoPC .NOTES Private cmdlet, no additional info. .PARAMETER A description of the parameter. .PARAMETER A description of the parameter. .PARAMETER Specify user to apply settings. .PARAMETER Apply setting to all users on PC. #> function Set-YokoPC { [CmdletBinding(SupportsShouldProcess = $true)] param () $ProgressPreference = 'SilentlyContinue' [string]$line = "-----------------------------------------------------------------------------" Write-Output -InputObject $line Write-Output -InputObject "If not installed, dotNET 3.5 will install in the background." Install-dotNet3.5 if ((Get-Culture).Name -ne "en-US") { Write-Output -InputObject "Setting region format to:`tEnglish (United States)" Set-Culture -CultureInfo en-US } if ((Get-ComputerInfo -Property OsName).OsName -clike "*11*") { Write-Output -InputObject "Moving Taskbar to the left." Move-TaskBarLeft } else { Write-Output -InputObject "Windows 11 not detected, Taskbar already on the left." } Show-TrayIcon Write-Output -InputObject "Showing hidden tray icons if there is some." Enable-DesktopIcon $user = $env:USERNAME Write-Output -InputObject "Enabling icons on Desktop: 'This PC' (My Computer), '$user' and 'Network'." Disable-TaskView Write-Output -InputObject "Disabling 'Task View' button." Format-RegionalCulture Write-Output -InputObject $line Write-Warning -Message 'Next two settings will require Admin prvileges.' Write-Output -InputObject $line Start-Sleep -Seconds 3 Write-Output -InputObject 'Enabling Recycle Bin delete confirmation dialog.' Enable-DeleteConfirmation Write-Output -InputObject 'Setting Time Zone to automatic.' Set-AutoTImeZone Write-Output -InputObject $line Write-Output -InputObject "Widgets must be disabled manually." Write-Output -InputObject 'Set default apps.' Start-Sleep -Seconds 3 Start-Process -PSPath ms-settings:defaultapps Write-Warning -Message "`nNeed to restart PC to changes take the effect.`n" } <# .SYNOPSIS Set PC alternative cmdlet .DESCRIPTION A detailed description of the Set-AllInOne function. .EXAMPLE PS C:\> Set-AllInOne .OUTPUTS boolean .NOTES Made for Yokohama, Serbia, RUMA. By chixus ©2025. #> function Set-AllInOne { [CmdletBinding(DefaultParameterSetName = 'Win11', SupportsShouldProcess = $true)] [OutputType([boolean], ParameterSetName = 'Win11')] param () $ProgressPreference = 'SilentlyContinue' $DateFormat = 'dd.MM.yyyy' $DateLongFormat = 'dddd, MMMM d, yyyy' $TimeZoneAuto = 'On' $TimeZone = 'Central Europe Standard Time' $TimeFormat = 'HH:mm' $TimeLongFormat = 'HH:mm:ss' $name = "Start" $TZAutoSettingRegPath = "HKLM:\SYSTEM\CurrentControlSet\Services\tzautoupdate" $separator = "HKCU:\Control Panel\International" $desktopIconSettingsPath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel" $desktopSettings = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes" $ThemesChange = "ThemeChangesDesktopIcons" $MyComputer = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" $UserFiles = "{59031a47-3f72-44a7-89c5-5595fe6b30ee}" $Network = "{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}" $TrayIcons = "HKCU:\Control Panel\NotifyIconSettings" $Property = "IsPromoted" $ExplorerPath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" [string]$line = "*****************************************************************************************" [string]$lineRow = "*`t`t`t`t`t`t`t`t`t`t`t*" Clear-Host; Write-Output -InputObject $line; Write-Output -InputObject "*`t`t`t`tUpdating user's settings`t`t`t`t*"; Write-Output -InputObject $line; Write-Output -InputObject $lineRow if ((Get-ComputerInfo -Property OsName).OsName -clike "*11*") { $Win11 = $true } else { $Win11 = $false } if ((Get-Culture).Name -ne "en-US") { Set-Culture -CultureInfo "en-US" Write-Output -InputObject "Setting region format to:`tEnglish (United States)" } if ((Get-WinHomeLocation).GeoId -ne 271) { Set-WinHomeLocation -GeoId 271 Write-Output -InputObject "Setting country to:`t`t`tSerbia" } if ((Get-TimeZone).Id -ne $TimeZone) { Set-TimeZone -Id $TimeZone Write-Output -InputObject "Setting Time Zone to:`t`t$TimeZone" } if ((Get-ItemProperty -Path "HKCU:\Control Panel\International\" -name sShortDate).sShortDate -ne $DateFormat) { Set-ItemProperty -Path "HKCU:\Control Panel\International\" -name sShortDate -value $DateFormat Write-Output -InputObject "Setting short date format to:`t$DateFormat" } if ((Get-ItemProperty -Path "HKCU:\Control Panel\International\" -name sLongDate).sLongDate -ne $DateLongFormat) { Set-ItemProperty -Path "HKCU:\Control Panel\International\" -name sLongDate -value $DateLongFormat Write-Output -InputObject "Setting long date format to:`t$dateLongFormat" } if ((Get-ItemProperty -Path "HKCU:\Control Panel\International" -name sShortTime).sShortTime -ne $TimeFormat) { Set-ItemProperty -Path "HKCU:\Control Panel\International" -name sShortTime -value $TimeFormat Write-Output -InputObject "Setting short time format to:`t$TimeFormat" } if ((Get-ItemProperty -Path "HKCU:\Control Panel\International" -name sTimeFormat).sTimeFormat -ne $TimeLongFormat) { Set-ItemProperty -Path "HKCU:\Control Panel\International" -name sTimeFormat -value $TimeLongFormat Write-Output -InputObject "Setting long time format to:`t`t$TimeLongFormat" } if ((Get-ItemProperty -Path $separator -Name sDecimal).sDecimal -eq ".") { Set-ItemProperty -Path $separator -Name sDecimal -Value "," Set-ItemProperty -Path $separator -Name sThousand -Value "." Write-Output -InputObject "Group separator set to:`t`t.`nDecimal separator set to:`t`t," } elseif ((Get-ItemProperty -Path $separator -Name sThousand).sThousand -eq ",") { Set-ItemProperty -Path $eparator -Name sThousand -Value "." Write-Output -InputObject "Group separator set to:`t`t." } Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name ShowTaskViewButton -Value 0 -Force | Out-Null Write-Output -InputObject "Task view disabled." Set-ItemProperty -Path $desktopIconSettingsPath -Name $MyComputer -Value 0 -Force | Out-Null Set-ItemProperty -Path $desktopIconSettingsPath -Name $UserFiles -Value 0 -Force | Out-Null Set-ItemProperty -Path $desktopIconSettingsPath -Name $Network -Value 0 -Force | Out-Null Set-ItemProperty -Path $desktopSettings -Name $ThemesChange -Value 0 -Force | Out-Null Write-Output -InputObject "Showing My Computer, User's files and Network on Desktop." if ($Win11) { Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name TaskbarAl -Value 0 Write-Output -InputObject "Taskbar moved to the left." } if (Test-Path -LiteralPath $TrayIcons -PathType 'Container' -ErrorAction SilentlyContinue) { Get-ChildItem -LiteralPath $TrayIcons | Where-Object { $_.GetValue($Property) -ne 1 } | ForEach-Object { Set-ItemProperty -LiteralPath ($_.PSPath) -Name $Property -Value 1 -Force -ErrorAction SilentlyContinue | Out-Null } Write-Output -InputObject "Tray icons unhided (if there was hidden)." } else { Write-Output -InputObject "Registry path not found !!!" } # admin needed. if ((Get-ItemProperty -Path $TZAutoSettingRegPath -Name 'Start').Start -ne 3) { Start-Process -FilePath powershell -ArgumentList "Set-ItemProperty -Path $TZAutoSettingRegPath -Name 'Start' -Value 3 -Force" -WindowStyle Hidden -Verb runas Write-Output -InputObject "Set time zone automatically:`t$TimeZoneAuto" } $RegCheck = Get-Item -Path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' -ErrorAction SilentlyContinue if (!$RegCheck) { Start-Process -FilePath powershell -ArgumentList "New-Item -Path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Force; New-ItemProperty -Path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name 'ConfirmFileDelete' -PropertyType DWORD -Value 1 -Force" -WindowStyle Hidden -Verb runas Write-Output -InputObject "Created value ConfirmFileDelete and set to enabled." } elseif ((Get-ItemProperty -Path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name 'ConfirmFileDelete').ConfirmFileDelete -ne 1) { Start-Process -FilePath powershell -ArgumentList "Set-ItemProperty -Path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer' -Name 'ConfirmFileDelete' -Value 1 -Force" -WindowStyle Hidden -Verb runas Write-Output -InputObject "Delete confirmation enabled." } Write-Output -InputObject "Widgets must be disabled manually." Write-Output -InputObject "Setup finished, need to restart the computer." } |