Browse Source

v4.6/v4.4.2 17.06.2020

## Windows 10 2004 Version/Windows 10 1903/1909 Version

## Updated

- Updated "Unpin all the Start tiles" section
  - Now using another method to unpin all Start tiles
- Updated "Pin the shortcuts to Start" section
  - Updated check for the internet connection

## Версия для Windows 10 2004/Windows 10 1903/1909

## Обновлено

- Обновлен раздел "Открепить все ярлыки от начального экрана"
  - Теперь используется другой метод для открепления
- Обновлен раздел "Закрепить ярлыки на начальном экране"
  - Обновлена проверка на наличие интернет-соединения
pull/59/head 4.5.1
Dmitry Nefedov 5 years ago
committed by GitHub
parent
commit
7ccace922f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 173
      Win 10 1903-1909.ps1
  2. 145
      Win 10 2004.ps1

173
Win 10 1903-1909.ps1

@ -18,8 +18,8 @@
.EXAMPLE .EXAMPLE
PS C:\> & '.\Win 10.ps1' PS C:\> & '.\Win 10.ps1'
.NOTES .NOTES
Version: v4.4.1 Version: v4.4.2
Date: 10.06.2020 Date: 17.06.2020
Written by: farag & oZ-Zo Written by: farag & oZ-Zo
Thanks to all http://forum.ru-board.com members involved Thanks to all http://forum.ru-board.com members involved
@ -113,14 +113,6 @@ Set-StrictMode -Version Latest
# Очистка переменной $Error # Очистка переменной $Error
$Error.Clear() $Error.Clear()
# Set the encoding to UTF-8 without BOM for the PowerShell session
# Установить кодировку UTF-8 без BOM для текущей сессии PowerShell
if ($RU)
{
ping.exe | Out-Null
$OutputEncoding = [System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8
}
# Create a restore point # Create a restore point
# Создать точку восстановления # Создать точку восстановления
if ($RU) if ($RU)
@ -520,6 +512,7 @@ if (-not ("WinAPI.GetStr" -as [type]))
{ {
Add-Type @Signature -Using System.Text Add-Type @Signature -Using System.Text
} }
# Extract the "Unpin from taskbar" string from shell32.dll # Extract the "Unpin from taskbar" string from shell32.dll
# Извлечь строку "Открепить от панели задач" из shell32.dll # Извлечь строку "Открепить от панели задач" из shell32.dll
$unpin = [WinAPI.GetStr]::GetString(5387) $unpin = [WinAPI.GetStr]::GetString(5387)
@ -874,7 +867,7 @@ New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name L
# Group svchost.exe processes # Group svchost.exe processes
# Группировать процессы svchost.exe # Группировать процессы svchost.exe
$RAMCapacity = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum/1kb $RAMCapacity = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum / 1KB
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control -Name SvcHostSplitThresholdInKB -PropertyType DWord -Value $RAMCapacity -Force New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control -Name SvcHostSplitThresholdInKB -PropertyType DWord -Value $RAMCapacity -Force
# Display the Stop error information on the BSoD # Display the Stop error information on the BSoD
@ -971,7 +964,7 @@ if ((Get-CimInstance -ClassName Win32_ComputerSystem).PCSystemType -ne 2)
$CheckedCapabilities += "Hello.Face*" $CheckedCapabilities += "Hello.Face*"
} }
# Windows capabilities that will be shown in the form # Windows capabilities that will be shown in the form
# Дополнительные компоненты Windows, которые будут выводиться в form # Дополнительные компоненты Windows, которые будут выводиться в форме
$ExcludedCapabilities = @( $ExcludedCapabilities = @(
# The DirectX Database to configure and optimize apps when multiple Graphics Adapters are present # The DirectX Database to configure and optimize apps when multiple Graphics Adapters are present
# База данных DirectX для настройки и оптимизации приложений при наличии нескольких графических адаптеров # База данных DirectX для настройки и оптимизации приложений при наличии нескольких графических адаптеров
@ -980,7 +973,7 @@ $ExcludedCapabilities = @(
# Языковые компоненты # Языковые компоненты
"Language\." "Language\."
# Mail, contacts, and calendar sync component # Mail, contacts, and calendar sync component
# Компонент синхронизации почты, контактов и календаря. # Компонент синхронизации почты, контактов и календаря
"OneCoreUAP\.OneSync" "OneCoreUAP\.OneSync"
# Management of printers, printer drivers, and printer servers # Management of printers, printer drivers, and printer servers
# Управление принтерами, драйверами принтеров и принт-серверами # Управление принтерами, драйверами принтеров и принт-серверами
@ -1255,7 +1248,7 @@ if (Get-WindowsEdition -Online | Where-Object -FilterScript {$_.Edition -eq "Pro
{ {
try try
{ {
# Checking whether a Hyper-V is enabled # Determining whether a Hyper-V is enabled
# Проверка: включен ли Hyper-V # Проверка: включен ли Hyper-V
if ((Get-CimInstance -ClassName CIM_ComputerSystem).HypervisorPresent -eq $true) if ((Get-CimInstance -ClassName CIM_ComputerSystem).HypervisorPresent -eq $true)
{ {
@ -1408,8 +1401,8 @@ function UserShellFolder
"IconFile=%SystemRoot%\system32\shell32.dll","IconIndex=-238" "IconFile=%SystemRoot%\system32\shell32.dll","IconIndex=-238"
} }
# Checking the current user folder path # Determining the current user folder path
# Проверяем текущее значение пути пользовательской папки # Определяем текущее значение пути пользовательской папки
$UserShellFolderRegValue = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name $UserShellFoldersRegName[$UserFolder] $UserShellFolderRegValue = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name $UserShellFoldersRegName[$UserFolder]
if ($UserShellFolderRegValue -ne $FolderPath) if ($UserShellFolderRegValue -ne $FolderPath)
{ {
@ -1954,12 +1947,43 @@ switch ($Result)
{ {
"0" "0"
{ {
$TileCollection = Get-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*start.tilegrid`$windows.data.curatedtilecollection.tilecollection\Current $StartMenuLayout = @"
$Value = $TileCollection.Data[0..25] + ([byte[]](202,50,0,226,44,1,1,0,0)) <LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
New-ItemProperty -Path $TileCollection.PSPath -Name Data -PropertyType Binary -Value $Value -Force <LayoutOptions StartTileGroupCellWidth="6" />
# Restart Start menu <DefaultLayoutOverride>
<StartLayoutCollection>
<defaultlayout:StartLayout GroupCellWidth="6" />
</StartLayoutCollection>
</DefaultLayoutOverride>
</LayoutModificationTemplate>
"@
$StartMenuLayoutPath = "$env:TEMP\StartMenuLayout.xml"
# Saving StartMenuLayout.xml in UTF-8 encoding
# Сохраняем StartMenuLayout.xml в кодирвоке UTF-8
Set-Content -Value (New-Object System.Text.UTF8Encoding).GetBytes($StartMenuLayout) -Encoding Byte -Path $StartMenuLayoutPath -Force
# Temporarily disable changing Start layout
# Временно выключаем возможность редактировать начальный экран
if (-not (Test-Path -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer))
{
New-Item -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Force
}
New-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name LockedStartLayout -Value 1 -Force
New-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name StartLayoutFile -Value $StartMenuLayoutPath -Force
# Restart the Start menu
# Перезапустить меню "Пуск" # Перезапустить меню "Пуск"
Stop-Process -Name StartMenuExperienceHost -Force Stop-Process -Name StartMenuExperienceHost -Force
Start-Sleep -Seconds 3
Remove-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name LockedStartLayout -Force
Remove-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name StartLayoutFile -Force
# Restart the Start menu
# Перезапустить меню "Пуск"
Stop-Process -Name StartMenuExperienceHost -Force
# https://en.wikipedia.org/wiki/8.3_filename
Get-Item -Path $StartMenuLayoutPath -Force | Remove-Item -Force
} }
"1" "1"
{ {
@ -1976,51 +2000,47 @@ switch ($Result)
# Pin the shortcuts to Start # Pin the shortcuts to Start
# Закрепить ярлыки на начальном экране # Закрепить ярлыки на начальном экране
# http://www.technosys.net/products/utils/pintotaskbar if (Test-Path -Path $PSScriptRoot\syspin.exe)
# SHA256: 6967E7A3C2251812DD6B3FA0265FB7B61AADC568F562A98C50C345908C6E827
if (Test-Connection -ComputerName google.com -Quiet)
{ {
# Download syspin.exe to the "Downloads" folder $syspin = $true
# Скачать syspin.exe в папку "Загрузки"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$Parameters = @{
Uri = "https://github.com/farag2/Windows-10-Setup-Script/raw/master/Start%20menu%20pinning/syspin.exe"
OutFile = "$DownloadsFolder\syspin.exe"
Verbose = [switch]::Present
}
Invoke-WebRequest @Parameters
} }
else else
{ {
if ($RU) try
{ {
Write-Warning -Message "Отсутствует интернет-соединение" -ErrorAction SilentlyContinue # Downloading syspin.exe
# Скачиваем syspin.exe
# http://www.technosys.net/products/utils/pintotaskbar
# SHA256: 6967E7A3C2251812DD6B3FA0265FB7B61AADC568F562A98C50C345908C6E827
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
if ((Invoke-WebRequest -Uri https://www.google.com -UseBasicParsing -DisableKeepAlive -Method Head).StatusDescription)
{
$Parameters = @{
Uri = "https://github.com/farag2/Windows-10-Setup-Script/raw/master/Start%20menu%20pinning/syspin.exe"
OutFile = "$PSScriptRoot\syspin.exe"
Verbose = [switch]::Present
}
Invoke-WebRequest @Parameters
$syspin = $true
}
} }
else catch
{ {
Write-Warning -Message "No Internet connection" -ErrorAction SilentlyContinue if ($Error.Exception.Status -eq "NameResolutionFailure")
{
if ($RU)
{
Write-Warning -Message "Отсутствует интернет-соединение" -ErrorAction SilentlyContinue
}
else
{
Write-Warning -Message "No Internet connection" -ErrorAction SilentlyContinue
}
}
} }
} }
Add-Type -AssemblyName System.Windows.Forms if ($syspin -eq $true)
$OpenFileDialog = New-Object -TypeName System.Windows.Forms.OpenFileDialog
$OpenFileDialog.InitialDirectory = $DownloadsFolder
$OpenFileDialog.Multiselect = $false
if ($RU)
{
$OpenFileDialog.Filter = "*.exe|*.exe|Все файлы (*.*)|*.*"
}
else
{
$OpenFileDialog.Filter = "*.exe|*.exe|All Files (*.*)|*.*"
}
# Focus on open file dialog
# Перевести фокус на диалог открытия файла
$tmp = New-Object -TypeName System.Windows.Forms.Form -Property @{TopMost = $true}
$OpenFileDialog.ShowDialog($tmp)
if ($OpenFileDialog.FileName)
{ {
# Pin "Control Panel" to Start # Pin "Control Panel" to Start
# Закрепить "Панель управления" на начальном экране # Закрепить "Панель управления" на начальном экране
@ -2041,7 +2061,7 @@ if ($OpenFileDialog.FileName)
$Arguments = @" $Arguments = @"
"$env:APPDATA\Microsoft\Windows\Start menu\Programs\$ControlPanelLocalizedName.lnk" "51201" "$env:APPDATA\Microsoft\Windows\Start menu\Programs\$ControlPanelLocalizedName.lnk" "51201"
"@ "@
Start-Process -FilePath $OpenFileDialog.FileName -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
} }
else else
{ {
@ -2055,8 +2075,7 @@ if ($OpenFileDialog.FileName)
$Arguments = @" $Arguments = @"
"$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk" "51201" "$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk" "51201"
"@ "@
Start-Process -FilePath $OpenFileDialog.FileName -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
Remove-Item -Path "$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk" -Force Remove-Item -Path "$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk" -Force
} }
@ -2086,7 +2105,7 @@ if ($OpenFileDialog.FileName)
$Arguments = @" $Arguments = @"
"$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesAndPrintersLocalizedName.lnk" "51201" "$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesAndPrintersLocalizedName.lnk" "51201"
"@ "@
Start-Process -FilePath $OpenFileDialog.FileName -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
# Pin "Command Prompt" to Start # Pin "Command Prompt" to Start
# Закрепить "Командную строку" на начальном экране # Закрепить "Командную строку" на начальном экране
@ -2101,16 +2120,12 @@ if ($OpenFileDialog.FileName)
$Arguments = @" $Arguments = @"
"$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\Command Prompt.lnk" "51201" "$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\Command Prompt.lnk" "51201"
"@ "@
Start-Process -FilePath $OpenFileDialog.FileName -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
}
# Delete downloaded syspin.exe
# Удалить скачанный syspin.exe
Remove-Item -Path "$DownloadsFolder\syspin.exe" -Force
# Restart the Start menu # Restart the Start menu
# Перезапустить меню "Пуск" # Перезапустить меню "Пуск"
Stop-Process -Name StartMenuExperienceHost -Force Stop-Process -Name StartMenuExperienceHost -Force
}
#endregion Start menu #endregion Start menu
#region Edge #region Edge
@ -2538,6 +2553,7 @@ if (Get-CimInstance -ClassName Win32_VideoController | Where-Object -FilterScrip
<# <#
Create a Windows cleaning up task in the Task Scheduler Create a Windows cleaning up task in the Task Scheduler
The task runs every 90 days The task runs every 90 days
Создать задачу в Планировщике задач по очистке Windows Создать задачу в Планировщике задач по очистке Windows
Задача выполняется каждые 90 дней Задача выполняется каждые 90 дней
#> #>
@ -2638,18 +2654,19 @@ $SourceMainWindowHandle = (Get-Process -Name cleanmgr).MainWindowHandle
function MinimizeWindow function MinimizeWindow
{ {
[CmdletBinding()] [CmdletBinding()]
Param param
( (
[Parameter(Mandatory = $true)] [Parameter(Mandatory = $true)]
$Process $Process
) )
$ShowWindowAsync = @{
Namespace = "WinAPI" $ShowWindowAsync = @{
Name = "Win32ShowWindowAsync" Namespace = "WinAPI"
Language = "CSharp" Name = "Win32ShowWindowAsync"
MemberDefinition = @" Language = "CSharp"
[DllImport("user32.dll")] MemberDefinition = @"
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll")]
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
"@ "@
} }
if (-not ("WinAPI.Win32ShowWindowAsync" -as [type])) if (-not ("WinAPI.Win32ShowWindowAsync" -as [type]))
@ -2719,6 +2736,7 @@ Register-ScheduledTask @Parameters -Force
<# <#
Create a task in the Task Scheduler to clear the %SystemRoot%\SoftwareDistribution\Download folder Create a task in the Task Scheduler to clear the %SystemRoot%\SoftwareDistribution\Download folder
The task runs on Thursdays every 4 weeks The task runs on Thursdays every 4 weeks
Создать задачу в Планировщике задач по очистке папки %SystemRoot%\SoftwareDistribution\Download Создать задачу в Планировщике задач по очистке папки %SystemRoot%\SoftwareDistribution\Download
Задача выполняется по четвергам каждую 4 неделю Задача выполняется по четвергам каждую 4 неделю
#> #>
@ -2752,6 +2770,7 @@ Register-ScheduledTask @Parameters -Force
<# <#
Create a task in the Task Scheduler to clear the %TEMP% folder Create a task in the Task Scheduler to clear the %TEMP% folder
The task runs every 62 days The task runs every 62 days
Создать задачу в Планировщике задач по очистке папки %TEMP% Создать задачу в Планировщике задач по очистке папки %TEMP%
Задача выполняется каждые 62 дня Задача выполняется каждые 62 дня
#> #>

145
Win 10 2004.ps1

@ -18,8 +18,8 @@
.EXAMPLE .EXAMPLE
PS C:\> & '.\Win 10.ps1' PS C:\> & '.\Win 10.ps1'
.NOTES .NOTES
Version: v4.5 Version: v4.6
Date: 10.06.2020 Date: 17.06.2020
Written by: farag & oZ-Zo Written by: farag & oZ-Zo
Thanks to all http://forum.ru-board.com members involved Thanks to all http://forum.ru-board.com members involved
@ -113,14 +113,6 @@ Set-StrictMode -Version Latest
# Очистка переменной $Error # Очистка переменной $Error
$Error.Clear() $Error.Clear()
# Set the encoding to UTF-8 without BOM for the PowerShell session
# Установить кодировку UTF-8 без BOM для текущей сессии PowerShell
if ($RU)
{
ping.exe | Out-Null
$OutputEncoding = [System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8
}
# Create a restore point # Create a restore point
# Создать точку восстановления # Создать точку восстановления
if ($RU) if ($RU)
@ -520,6 +512,7 @@ if (-not ("WinAPI.GetStr" -as [type]))
{ {
Add-Type @Signature -Using System.Text Add-Type @Signature -Using System.Text
} }
# Extract the "Unpin from taskbar" string from shell32.dll # Extract the "Unpin from taskbar" string from shell32.dll
# Извлечь строку "Открепить от панели задач" из shell32.dll # Извлечь строку "Открепить от панели задач" из shell32.dll
$unpin = [WinAPI.GetStr]::GetString(5387) $unpin = [WinAPI.GetStr]::GetString(5387)
@ -869,7 +862,7 @@ New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem -Name L
# Group svchost.exe processes # Group svchost.exe processes
# Группировать процессы svchost.exe # Группировать процессы svchost.exe
$RAMCapacity = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum/1kb $RAMCapacity = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum / 1KB
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control -Name SvcHostSplitThresholdInKB -PropertyType DWord -Value $RAMCapacity -Force New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control -Name SvcHostSplitThresholdInKB -PropertyType DWord -Value $RAMCapacity -Force
# Display the Stop error information on the BSoD # Display the Stop error information on the BSoD
@ -1962,12 +1955,43 @@ switch ($Result)
{ {
"0" "0"
{ {
$TileCollection = Get-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*start.tilegrid`$windows.data.curatedtilecollection.tilecollection\Current $StartMenuLayout = @"
$Value = $TileCollection.Data[0..25] + ([byte[]](202,50,0,226,44,1,1,0,0)) <LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
New-ItemProperty -Path $TileCollection.PSPath -Name Data -PropertyType Binary -Value $Value -Force <LayoutOptions StartTileGroupCellWidth="6" />
# Restart Start menu <DefaultLayoutOverride>
<StartLayoutCollection>
<defaultlayout:StartLayout GroupCellWidth="6" />
</StartLayoutCollection>
</DefaultLayoutOverride>
</LayoutModificationTemplate>
"@
$StartMenuLayoutPath = "$env:TEMP\StartMenuLayout.xml"
# Saving StartMenuLayout.xml in UTF-8 encoding
# Сохраняем StartMenuLayout.xml в кодирвоке UTF-8
Set-Content -Value (New-Object System.Text.UTF8Encoding).GetBytes($StartMenuLayout) -Encoding Byte -Path $StartMenuLayoutPath -Force
# Temporarily disable changing Start layout
# Временно выключаем возможность редактировать начальный экран
if (-not (Test-Path -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer))
{
New-Item -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Force
}
New-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name LockedStartLayout -Value 1 -Force
New-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name StartLayoutFile -Value $StartMenuLayoutPath -Force
# Restart the Start menu
# Перезапустить меню "Пуск" # Перезапустить меню "Пуск"
Stop-Process -Name StartMenuExperienceHost -Force Stop-Process -Name StartMenuExperienceHost -Force
Start-Sleep -Seconds 3
Remove-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name LockedStartLayout -Force
Remove-ItemProperty -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Name StartLayoutFile -Force
# Restart the Start menu
# Перезапустить меню "Пуск"
Stop-Process -Name StartMenuExperienceHost -Force
# https://en.wikipedia.org/wiki/8.3_filename
Get-Item -Path $StartMenuLayoutPath -Force | Remove-Item -Force
} }
"1" "1"
{ {
@ -1984,51 +2008,47 @@ switch ($Result)
# Pin the shortcuts to Start # Pin the shortcuts to Start
# Закрепить ярлыки на начальном экране # Закрепить ярлыки на начальном экране
# http://www.technosys.net/products/utils/pintotaskbar if (Test-Path -Path $PSScriptRoot\syspin.exe)
# SHA256: 6967E7A3C2251812DD6B3FA0265FB7B61AADC568F562A98C50C345908C6E827
if (Test-Connection -ComputerName google.com -Quiet)
{ {
# Download syspin.exe to the "Downloads" folder $syspin = $true
# Скачать syspin.exe в папку "Загрузки"
$DownloadsFolder = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$Parameters = @{
Uri = "https://github.com/farag2/Windows-10-Setup-Script/raw/master/Start%20menu%20pinning/syspin.exe"
OutFile = "$DownloadsFolder\syspin.exe"
Verbose = [switch]::Present
}
Invoke-WebRequest @Parameters
} }
else else
{ {
if ($RU) try
{ {
Write-Warning -Message "Отсутствует интернет-соединение" -ErrorAction SilentlyContinue # Downloading syspin.exe
# Скачиваем syspin.exe
# http://www.technosys.net/products/utils/pintotaskbar
# SHA256: 6967E7A3C2251812DD6B3FA0265FB7B61AADC568F562A98C50C345908C6E827
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
if ((Invoke-WebRequest -Uri https://www.google.com -UseBasicParsing -DisableKeepAlive -Method Head).StatusDescription)
{
$Parameters = @{
Uri = "https://github.com/farag2/Windows-10-Setup-Script/raw/master/Start%20menu%20pinning/syspin.exe"
OutFile = "$PSScriptRoot\syspin.exe"
Verbose = [switch]::Present
}
Invoke-WebRequest @Parameters
$syspin = $true
}
} }
else catch
{ {
Write-Warning -Message "No Internet connection" -ErrorAction SilentlyContinue if ($Error.Exception.Status -eq "NameResolutionFailure")
{
if ($RU)
{
Write-Warning -Message "Отсутствует интернет-соединение" -ErrorAction SilentlyContinue
}
else
{
Write-Warning -Message "No Internet connection" -ErrorAction SilentlyContinue
}
}
} }
} }
Add-Type -AssemblyName System.Windows.Forms if ($syspin -eq $true)
$OpenFileDialog = New-Object -TypeName System.Windows.Forms.OpenFileDialog
$OpenFileDialog.InitialDirectory = $DownloadsFolder
$OpenFileDialog.Multiselect = $false
if ($RU)
{
$OpenFileDialog.Filter = "*.exe|*.exe|Все файлы (*.*)|*.*"
}
else
{
$OpenFileDialog.Filter = "*.exe|*.exe|All Files (*.*)|*.*"
}
# Focus on open file dialog
# Перевести фокус на диалог открытия файла
$tmp = New-Object -TypeName System.Windows.Forms.Form -Property @{TopMost = $true}
$OpenFileDialog.ShowDialog($tmp)
if ($OpenFileDialog.FileName)
{ {
# Pin "Control Panel" to Start # Pin "Control Panel" to Start
# Закрепить "Панель управления" на начальном экране # Закрепить "Панель управления" на начальном экране
@ -2049,7 +2069,7 @@ if ($OpenFileDialog.FileName)
$Arguments = @" $Arguments = @"
"$env:APPDATA\Microsoft\Windows\Start menu\Programs\$ControlPanelLocalizedName.lnk" "51201" "$env:APPDATA\Microsoft\Windows\Start menu\Programs\$ControlPanelLocalizedName.lnk" "51201"
"@ "@
Start-Process -FilePath $OpenFileDialog.FileName -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
} }
else else
{ {
@ -2063,8 +2083,7 @@ if ($OpenFileDialog.FileName)
$Arguments = @" $Arguments = @"
"$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk" "51201" "$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk" "51201"
"@ "@
Start-Process -FilePath $OpenFileDialog.FileName -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
Remove-Item -Path "$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk" -Force Remove-Item -Path "$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk" -Force
} }
@ -2094,7 +2113,7 @@ if ($OpenFileDialog.FileName)
$Arguments = @" $Arguments = @"
"$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesAndPrintersLocalizedName.lnk" "51201" "$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesAndPrintersLocalizedName.lnk" "51201"
"@ "@
Start-Process -FilePath $OpenFileDialog.FileName -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
# Pin "Command Prompt" to Start # Pin "Command Prompt" to Start
# Закрепить "Командную строку" на начальном экране # Закрепить "Командную строку" на начальном экране
@ -2109,16 +2128,12 @@ if ($OpenFileDialog.FileName)
$Arguments = @" $Arguments = @"
"$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\Command Prompt.lnk" "51201" "$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\Command Prompt.lnk" "51201"
"@ "@
Start-Process -FilePath $OpenFileDialog.FileName -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
}
# Delete downloaded syspin.exe
# Удалить скачанный syspin.exe
Remove-Item -Path "$DownloadsFolder\syspin.exe" -Force
# Restart the Start menu # Restart the Start menu
# Перезапустить меню "Пуск" # Перезапустить меню "Пуск"
Stop-Process -Name StartMenuExperienceHost -Force Stop-Process -Name StartMenuExperienceHost -Force
}
#endregion Start menu #endregion Start menu
#region UWP apps #region UWP apps
@ -2554,6 +2569,7 @@ if ((Get-CimInstance -ClassName CIM_VideoController | Where-Object -FilterScript
<# <#
Create a Windows cleaning up task in the Task Scheduler Create a Windows cleaning up task in the Task Scheduler
The task runs every 90 days The task runs every 90 days
Создать задачу в Планировщике задач по очистке Windows Создать задачу в Планировщике задач по очистке Windows
Задача выполняется каждые 90 дней Задача выполняется каждые 90 дней
#> #>
@ -2659,6 +2675,7 @@ function MinimizeWindow
[Parameter(Mandatory = $true)] [Parameter(Mandatory = $true)]
$Process $Process
) )
$ShowWindowAsync = @{ $ShowWindowAsync = @{
Namespace = "WinAPI" Namespace = "WinAPI"
Name = "Win32ShowWindowAsync" Name = "Win32ShowWindowAsync"
@ -2735,6 +2752,7 @@ Register-ScheduledTask @Parameters -Force
<# <#
Create a task in the Task Scheduler to clear the %SystemRoot%\SoftwareDistribution\Download folder Create a task in the Task Scheduler to clear the %SystemRoot%\SoftwareDistribution\Download folder
The task runs on Thursdays every 4 weeks The task runs on Thursdays every 4 weeks
Создать задачу в Планировщике задач по очистке папки %SystemRoot%\SoftwareDistribution\Download Создать задачу в Планировщике задач по очистке папки %SystemRoot%\SoftwareDistribution\Download
Задача выполняется по четвергам каждую 4 неделю Задача выполняется по четвергам каждую 4 неделю
#> #>
@ -2768,6 +2786,7 @@ Register-ScheduledTask @Parameters -Force
<# <#
Create a task in the Task Scheduler to clear the %TEMP% folder Create a task in the Task Scheduler to clear the %TEMP% folder
The task runs every 62 days The task runs every 62 days
Создать задачу в Планировщике задач по очистке папки %TEMP% Создать задачу в Планировщике задач по очистке папки %TEMP%
Задача выполняется каждые 62 дня Задача выполняется каждые 62 дня
#> #>

Loading…
Cancel
Save