Browse Source

22.12.2020 v5.3.1

pull/105/head 5.3.1
Dmitry Nefedov 4 years ago
committed by GitHub
parent
commit
a7e32ddfe1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 41
      Sophia/Sophia.ps1
  2. BIN
      Sophia/Sophia.psd1
  3. 213
      Sophia/Sophia.psm1
  4. 48
      Sophia/it-IT/Sophia.psd1
  5. 2
      Sophia/ru-RU/Sophia.psd1

41
Sophia/Sophia.ps1

@ -2,8 +2,8 @@
.SYNOPSIS .SYNOPSIS
Default preset file for "Windows 10 Sophia Script" Default preset file for "Windows 10 Sophia Script"
Version: v5.3 Version: v5.3.1
Date: 12.12.2020 Date: 21.12.2020
Copyright (c) 2020 farag & oZ-Zo Copyright (c) 2020 farag & oZ-Zo
Thanks to all https://forum.ru-board.com members involved Thanks to all https://forum.ru-board.com members involved
@ -11,9 +11,9 @@
.DESCRIPTION .DESCRIPTION
Supported Windows 10 versions: 2004 (20H1)/2009 (20H2), 19041/19042, Home/Pro/Enterprise, x64 Supported Windows 10 versions: 2004 (20H1)/2009 (20H2), 19041/19042, Home/Pro/Enterprise, x64
Due to the fact that the script includes more than 270 functions, you must read the entire preset file carefully Due to the fact that the script includes more than 150 functions with different arguments, you must read the entire Sophia.ps1 carefully and
and comment out/uncomment those functions that you do/do not want to be executed comment out/uncomment those functions that you do/do not want to be executed
Every tweak in a preset file has its' corresponding function to restore the default settings Every tweak in the preset file has its' corresponding function to restore the default settings
Running the script is best done on a fresh install because running it on wrong tweaked system may result in errors occurring Running the script is best done on a fresh install because running it on wrong tweaked system may result in errors occurring
@ -39,16 +39,25 @@
Clear-Host Clear-Host
$Host.UI.RawUI.WindowTitle = "Windows 10 Sophia Script v5.3 | $([char]0x00A9) farag & oz-zo, 2015–2020" $Host.UI.RawUI.WindowTitle = "Windows 10 Sophia Script v5.3.1 | ©️ farag & oz-zo, 2015–2020 | $((Invoke-WebRequest -Uri https://wttr.in/?format=3 -UseBasicParsing).Content) | Happy New Year!"
Remove-Module -Name Sophia -Force -ErrorAction Ignore Remove-Module -Name Sophia -Force -ErrorAction Ignore
Import-Module -Name $PSScriptRoot\Sophia.psd1 -PassThru -Force Import-Module -Name $PSScriptRoot\Sophia.psd1 -PassThru -Force
Import-LocalizedData -BindingVariable Global:Localization -FileName Sophia Import-LocalizedData -BindingVariable Global:Localization -FileName Sophia
# Checking # Checkings
# Проверка # Проверки
Check Checkings
<#
Enable script logging. The log will be being recorded into the script folder
To stop logging just close the console or type "Stop-Transcript"
Включить логирование работы скрипта. Лог будет записываться в папку скрипта
Чтобы остановить логгирование, закройте консоль или наберите "Stop-Transcript"
#>
# Logging
# Create a restore point # Create a restore point
# Создать точку восстановления # Создать точку восстановления
@ -440,6 +449,14 @@ PrtScnSnippingTool -Enable
# Do not use the PrtScn button to open screen snipping (current user only) (default value) # Do not use the PrtScn button to open screen snipping (current user only) (default value)
# Не использовать кнопку PRINT SCREEN, чтобы запустить функцию создания фрагмента экрана (только для текущего пользователя) (значение по умолчанию) # Не использовать кнопку PRINT SCREEN, чтобы запустить функцию создания фрагмента экрана (только для текущего пользователя) (значение по умолчанию)
# PrtScnSnippingTool -Disable # PrtScnSnippingTool -Disable
# Let let use a different input method for each app window (current user only)
# Позволить выбирать метод ввода для каждого окна (только для текущего пользователя)
AppsLanguageSwitch -Disable
# Do not let use a different input method for each app window (current user only) (default value)
# Не позволять выбирать метод ввода для каждого окна (только для текущего пользователя) (значение по умолчанию)
# AppsLanguageSwitch -Enable
#endregion UI & Personalization #endregion UI & Personalization
#region OneDrive #region OneDrive
@ -497,7 +514,7 @@ Hibernate -Disable
# Change the %TEMP% environment variable path to "%SystemDrive%\Temp" (both machine-wide, and for the current user) # Change the %TEMP% environment variable path to "%SystemDrive%\Temp" (both machine-wide, and for the current user)
# Изменить путь переменной среды для %TEMP% на "%SystemDrive%\Temp" (для всех пользователей) # Изменить путь переменной среды для %TEMP% на "%SystemDrive%\Temp" (для всех пользователей)
TempFolder -SystemDrive # TempFolder -SystemDrive
# Change %TEMP% environment variable path to "%LOCALAPPDATA%\Temp" (both machine-wide, and for the current user) (default value) # Change %TEMP% environment variable path to "%LOCALAPPDATA%\Temp" (both machine-wide, and for the current user) (default value)
# Изменить путь переменной среды для %TEMP% на "LOCALAPPDATA%\Temp" (для всех пользователей) (значение по умолчанию) # Изменить путь переменной среды для %TEMP% на "LOCALAPPDATA%\Temp" (для всех пользователей) (значение по умолчанию)
@ -847,7 +864,7 @@ UnpinAllStartTiles
Проверить, находится ли файл syspin.exe в папке. Иначе скачать его Проверить, находится ли файл syspin.exe в папке. Иначе скачать его
http://www.technosys.net/products/utils/pintotaskbar http://www.technosys.net/products/utils/pintotaskbar
SHA256: 6967E7A3C2251812DD6B3FA0265FB7B61AADC568F562A98C50C345908C6E827 SHA256: 07D6C3A19A8E3E243E9545A41DD30A9EE1E9AD79CDD6D446C229D689E5AB574A
#> #>
syspin syspin
@ -1177,7 +1194,7 @@ ShareContext -Hide
# Hide the "Edit with Paint 3D" item from the context menu # Hide the "Edit with Paint 3D" item from the context menu
# Скрыть пункт "Изменить с помощью Paint 3D" из контекстного меню # Скрыть пункт "Изменить с помощью Paint 3D" из контекстного меню
EditWithPaint3DContext -Hide ### EditWithPaint3DContext -Hide
# Show the "Edit with Paint 3D" item in the context menu (default value) # Show the "Edit with Paint 3D" item in the context menu (default value)
# Показывать пункт "Изменить с помощью Paint 3D" в контекстном меню (значение по умолчанию) # Показывать пункт "Изменить с помощью Paint 3D" в контекстном меню (значение по умолчанию)

BIN
Sophia/Sophia.psd1

Binary file not shown.

213
Sophia/Sophia.psm1

@ -2,8 +2,8 @@
.SYNOPSIS .SYNOPSIS
"Windows 10 Sophia Script" is a PowerShell module for Windows 10 fine-tuning and automating the routine tasks "Windows 10 Sophia Script" is a PowerShell module for Windows 10 fine-tuning and automating the routine tasks
Version: v5.3 Version: v5.3.1
Date: 12.12.2020 Date: 21.12.2020
Copyright (c) 2020 farag & oZ-Zo Copyright (c) 2020 farag & oZ-Zo
Thanks to all https://forum.ru-board.com members involved Thanks to all https://forum.ru-board.com members involved
@ -30,8 +30,8 @@
https://github.com/farag2/Windows-10-Sophia-Script https://github.com/farag2/Windows-10-Sophia-Script
#> #>
#region Check #region Checkings
function Check function Checkings
{ {
Set-StrictMode -Version Latest Set-StrictMode -Version Latest
@ -61,6 +61,10 @@ function Check
} }
} }
# Unblock all files in the folder by removing the Zone.Identifier alternate data stream with a value of "3"
# Разблокировать все файлы в папке, удалив альтернативный потоки данных Zone.Identifier со значением "3"
Get-ChildItem -Path $PSScriptRoot -Recurse -Force | Unblock-File -Confirm:$false
# Turn off Controlled folder access to let the script proceed # Turn off Controlled folder access to let the script proceed
# Выключить контролируемый доступ к папкам # Выключить контролируемый доступ к папкам
switch ((Get-MpPreference).EnableControlledFolderAccess -eq 1) switch ((Get-MpPreference).EnableControlledFolderAccess -eq 1)
@ -76,7 +80,20 @@ function Check
} }
} }
} }
#endregion Check #endregion Checkings
<#
Enable script logging. The log will be being recorded into the script folder
To stop logging just close the console or type "Stop-Transcript"
Включить логирование работы скрипта. Лог будет записываться в папку скрипта
Чтобы остановить логгирование, закройте консоль или наберите "Stop-Transcript"
#>
function Logging
{
$TrascriptFilename = "Log-$((Get-Date).ToString("dd.MM.yyyy-HH-mm"))"
Start-Transcript -Path $PSScriptRoot\$TrascriptFilename.txt -Force
}
# Create a restore point # Create a restore point
# Создать точку восстановления # Создать точку восстановления
@ -87,9 +104,9 @@ function CreateRestorePoint
Enable-ComputerRestore -Drive $env:SystemDrive Enable-ComputerRestore -Drive $env:SystemDrive
} }
# Set system restore point creation frequency to 5 minutes # Never skip creating a restore point
# Установить частоту создания точек восстановления на 5 минут # Никогда не пропускать создание точек восстановления
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" -Name SystemRestorePointCreationFrequency -PropertyType DWord -Value 5 -Force New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" -Name SystemRestorePointCreationFrequency -PropertyType DWord -Value 0 -Force
Checkpoint-Computer -Description "Windows 10 Sophia Script" -RestorePointType MODIFY_SETTINGS Checkpoint-Computer -Description "Windows 10 Sophia Script" -RestorePointType MODIFY_SETTINGS
@ -2570,8 +2587,8 @@ function UnpinTaskbarEdgeStore
# Extract the "Unpin from taskbar" string from shell32.dll # Extract the "Unpin from taskbar" string from shell32.dll
# Извлечь строку "Открепить от панели задач" из shell32.dll # Извлечь строку "Открепить от панели задач" из shell32.dll
$LocalizedString = [WinAPI.GetStr]::GetString(5387) $LocalizedString = [WinAPI.GetStr]::GetString(5387)
$Apps = (New-Object -ComObject Shell.Application).NameSpace("shell:::{4234d49b-0245-4df3-b780-3893943456e1}").Items() $Apps = (New-Object -ComObject Shell.Application).NameSpace("shell:::{4234d49b-0245-4df3-b780-3893943456e1}").Items()
$Apps | Where-Object -FilterScript {$_.Path -eq "MSEdge"} | ForEach-Object -Process {$_.Verbs() | Where-Object -FilterScript {$_.Name -eq $LocalizedString} | ForEach-Object -Process {$_.DoIt()}}
$Apps | Where-Object -FilterScript {$_.Name -eq "Microsoft Store"} | ForEach-Object -Process {$_.Verbs() | Where-Object -FilterScript {$_.Name -eq $LocalizedString} | ForEach-Object -Process {$_.DoIt()}} $Apps | Where-Object -FilterScript {$_.Name -eq "Microsoft Store"} | ForEach-Object -Process {$_.Verbs() | Where-Object -FilterScript {$_.Name -eq $LocalizedString} | ForEach-Object -Process {$_.DoIt()}}
} }
@ -3164,6 +3181,61 @@ function PrtScnSnippingTool
} }
} }
} }
<#
.SYNOPSIS
Let/do not let use a different input method for each app window
Позволить/не позволять выбирать метод ввода для каждого окна
.PARAMETER Disable
Let use a different input method for each app window
Позволить выбирать метод ввода для каждого окна
.PARAMETER Enable
Do not let use a different input method for each app window
Не позволять выбирать метод ввода для каждого окна
.EXAMPLE
AppsLanguageSwitch -Disable
.EXAMPLE
AppsLanguageSwitch -Enable
.NOTES
Current user only
Только для текущего пользователя
#>
function AppsLanguageSwitch
{
param
(
[Parameter(
Mandatory = $true,
ParameterSetName = "Disable"
)]
[switch]
$Disable,
[Parameter(
Mandatory = $true,
ParameterSetName = "Enable"
)]
[switch]
$Enable
)
switch ($PSCmdlet.ParameterSetName)
{
"Disable"
{
Set-WinLanguageBarOption -UseLegacySwitchMode
}
"Enable"
{
Set-WinLanguageBarOption
}
}
}
#endregion UI & Personalization #endregion UI & Personalization
#region OneDrive #region OneDrive
@ -3295,6 +3367,7 @@ function InstallOneDrive
{ {
Write-Warning -Message $Localization.NoInternetConnection Write-Warning -Message $Localization.NoInternetConnection
Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
return
} }
} }
Get-ScheduledTask -TaskName "Onedrive* Update*" | Start-ScheduledTask Get-ScheduledTask -TaskName "Onedrive* Update*" | Start-ScheduledTask
@ -3660,14 +3733,14 @@ function TempFolder
Stop-Process -Name OneDrive -Force -ErrorAction Ignore Stop-Process -Name OneDrive -Force -ErrorAction Ignore
Stop-Process -Name FileCoAuth -Force -ErrorAction Ignore Stop-Process -Name FileCoAuth -Force -ErrorAction Ignore
Remove-Item -Path $env:SystemRoot\Temp -Recurse -Force -ErrorAction Ignore
Get-Item -Path $env:LOCALAPPDATA\Temp -Force -ErrorAction Ignore | Where-Object -FilterScript {$_.LinkType -ne "SymbolicLink"} | Remove-Item -Recurse -Force -ErrorAction Ignore
if (-not (Test-Path -Path $env:SystemDrive\Temp)) if (-not (Test-Path -Path $env:SystemDrive\Temp))
{ {
New-Item -Path $env:SystemDrive\Temp -ItemType Directory -Force New-Item -Path $env:SystemDrive\Temp -ItemType Directory -Force
} }
Remove-Item -Path $env:SystemRoot\Temp -Recurse -Force -ErrorAction Ignore
Get-Item -Path $env:LOCALAPPDATA\Temp -Force -ErrorAction Ignore | Where-Object -FilterScript {$_.LinkType -ne "SymbolicLink"} | Remove-Item -Recurse -Force -ErrorAction Ignore
if (Test-Path -Path $env:LOCALAPPDATA\Temp -ErrorAction Ignore) if (Test-Path -Path $env:LOCALAPPDATA\Temp -ErrorAction Ignore)
{ {
if ((Get-ChildItem -Path $env:LOCALAPPDATA\Temp -Force -ErrorAction Ignore | Measure-Object).Count -ne 0) if ((Get-ChildItem -Path $env:LOCALAPPDATA\Temp -Force -ErrorAction Ignore | Measure-Object).Count -ne 0)
@ -6251,7 +6324,14 @@ function ReservedStorage
} }
"Disable" "Disable"
{ {
Set-WindowsReservedStorageState -State Disabled try
{
Set-WindowsReservedStorageState -State Disabled
}
catch [System.Runtime.InteropServices.COMException]
{
Write-Error -Message $Localization.ReservedStorageIsInUse -ErrorAction SilentlyContinue
}
} }
} }
} }
@ -6880,6 +6960,7 @@ function EnableWSL2
{ {
Write-Warning -Message $Localization.NoInternetConnection Write-Warning -Message $Localization.NoInternetConnection
Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
return
} }
} }
@ -7189,7 +7270,7 @@ function UnpinAllStartTiles
$StartMenuLayoutPath = "$env:TEMP\StartMenuLayout.xml" $StartMenuLayoutPath = "$env:TEMP\StartMenuLayout.xml"
# Saving StartMenuLayout.xml in UTF-8 encoding # Saving StartMenuLayout.xml in UTF-8 encoding
# Сохраняем StartMenuLayout.xml в кодировке UTF-8 # Сохраняем StartMenuLayout.xml в кодировке UTF-8
Set-Content -Path $StartMenuLayoutPath -Value (New-Object -TypeName System.Text.UTF8Encoding).GetBytes($StartMenuLayout) -Encoding Byte -Force Set-Content -Path $StartMenuLayoutPath -Value $StartMenuLayout -Force
# Temporarily disable changing the Start menu layout # Temporarily disable changing the Start menu layout
# Временно выключаем возможность редактировать начальный экран меню "Пуск" # Временно выключаем возможность редактировать начальный экран меню "Пуск"
@ -7217,7 +7298,7 @@ function UnpinAllStartTiles
Проверить, находится ли файл syspin.exe в папке. Иначе скачать его Проверить, находится ли файл syspin.exe в папке. Иначе скачать его
http://www.technosys.net/products/utils/pintotaskbar http://www.technosys.net/products/utils/pintotaskbar
SHA256: 6967E7A3C2251812DD6B3FA0265FB7B61AADC568F562A98C50C345908C6E827 SHA256: 07D6C3A19A8E3E243E9545A41DD30A9EE1E9AD79CDD6D446C229D689E5AB574A
#> #>
function syspin function syspin
{ {
@ -7250,27 +7331,55 @@ function syspin
{ {
Write-Warning -Message $Localization.NoInternetConnection Write-Warning -Message $Localization.NoInternetConnection
Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue Write-Error -Message $Localization.NoInternetConnection -ErrorAction SilentlyContinue
return
} }
} }
# Extract string from shell32.dll using its' number
# Извлечь строку из shell32.dll, зная ее номер
$Signature = @{
Namespace = "WinAPI"
Name = "GetStr"
Language = "CSharp"
MemberDefinition = @"
// https://github.com/Disassembler0/Win10-Initial-Setup-Script/issues/8#issue-227159084
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetModuleHandle(string lpModuleName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);
public static string GetString(uint strId)
{
IntPtr intPtr = GetModuleHandle("shell32.dll");
StringBuilder sb = new StringBuilder(255);
LoadString(intPtr, strId, sb, sb.Capacity);
return sb.ToString();
}
"@
}
if (-not ("WinAPI.GetStr" -as [type]))
{
Add-Type @Signature -Using System.Text
}
} }
# Pin the "Control Panel" shortcut to Start within syspin # Pin the "Control Panel" shortcut to Start within syspin
# Закрепить ярлык "Панели управления" на начальном экране с помощью syspin # Закрепить ярлык "Панели управления" на начальном экране с помощью syspin
function PinControlPanel function PinControlPanel
{ {
if ($Global:syspin -eq $true) if ($Global:syspin)
{ {
$Items = (New-Object -ComObject Shell.Application).NameSpace("shell:::{4234d49b-0245-4df3-b780-3893943456e1}").Items() # Extract the "Control Panel" string from shell32.dll
$ControlPanelLocalizedName = ($Items | Where-Object -FilterScript {$_.Path -eq "Microsoft.Windows.ControlPanel"}).Name # Извлечь строку "Панель управления" из shell32.dll
$ControlPanel = [WinAPI.GetStr]::GetString(12712)
Write-Verbose -Message ($Localization.ShortcutPinning -f $ControlPanelLocalizedName) -Verbose Write-Verbose -Message ($Localization.ShortcutPinning -f $ControlPanel) -Verbose
# Check whether the Control Panel shortcut was ever pinned # Check whether the Control Panel shortcut was ever pinned
# Проверка: закреплялся ли когда-нибудь ярлык панели управления # Проверка: закреплялся ли когда-нибудь ярлык панели управления
if (Test-Path -Path "$env:APPDATA\Microsoft\Windows\Start menu\Programs\$ControlPanelLocalizedName.lnk") if (Test-Path -Path "$env:APPDATA\Microsoft\Windows\Start menu\Programs\$ControlPanel.lnk")
{ {
$Arguments = @" $Arguments = @"
"$env:APPDATA\Microsoft\Windows\Start menu\Programs\$ControlPanelLocalizedName.lnk" "51201" "$env:APPDATA\Microsoft\Windows\Start menu\Programs\$ControlPanel.lnk" "51201"
"@ "@
Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
} }
@ -7279,20 +7388,17 @@ function PinControlPanel
# The "Pin" verb is not available on the control.exe file so the shortcut has to be created # The "Pin" verb is not available on the control.exe file so the shortcut has to be created
# Глагол "Закрепить на начальном экране" недоступен для control.exe, поэтому необходимо создать ярлык # Глагол "Закрепить на начальном экране" недоступен для control.exe, поэтому необходимо создать ярлык
$Shell = New-Object -ComObject Wscript.Shell $Shell = New-Object -ComObject Wscript.Shell
$Shortcut = $Shell.CreateShortcut("$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk") $Shortcut = $Shell.CreateShortcut("$env:SystemRoot\System32\$ControlPanel.lnk")
$Shortcut.TargetPath = "control" $Shortcut.TargetPath = "control"
$Shortcut.Save() $Shortcut.Save()
$Arguments = @" $Arguments = @"
"$env:SystemRoot\System32\$ControlPanelLocalizedName.lnk" "51201" "$env:SystemRoot\System32\$ControlPanel.lnk" "51201"
"@ "@
Start-Process -FilePath $PSScriptRoot\syspin.exe -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 -ErrorAction Ignore
}
# Restart the Start menu Remove-Item -Path "$env:SystemRoot\System32\$ControlPanel.lnk" -Force -ErrorAction Ignore
# Перезапустить меню "Пуск" }
Stop-Process -Name StartMenuExperienceHost -Force -ErrorAction Ignore
} }
} }
@ -7300,13 +7406,16 @@ function PinControlPanel
# Закрепить ярлык старого формата "Устройства и принтеры" на начальном экране с помощью syspin # Закрепить ярлык старого формата "Устройства и принтеры" на начальном экране с помощью syspin
function PinDevicesPrinters function PinDevicesPrinters
{ {
if ($Global:syspin -eq $true) if ($Global:syspin)
{ {
$DevicesAndPrintersLocalizedName = (Get-ControlPanelItem -CanonicalName "Microsoft.DevicesAndPrinters").Name # Extract the "Devices and Printers" string from shell32.dll
Write-Verbose -Message ($Localization.ShortcutPinning -f $DevicesAndPrintersLocalizedName) -Verbose # Извлечь строку "Устройства и принтеры" из shell32.dll
$DevicesPrinters = [WinAPI.GetStr]::GetString(30493)
Write-Verbose -Message ($Localization.ShortcutPinning -f $DevicesPrinters) -Verbose
$Shell = New-Object -ComObject Wscript.Shell $Shell = New-Object -ComObject Wscript.Shell
$Shortcut = $Shell.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesAndPrintersLocalizedName.lnk") $Shortcut = $Shell.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesPrinters.lnk")
$Shortcut.TargetPath = "control" $Shortcut.TargetPath = "control"
$Shortcut.Arguments = "printers" $Shortcut.Arguments = "printers"
$Shortcut.IconLocation = "$env:SystemRoot\system32\DeviceCenter.dll" $Shortcut.IconLocation = "$env:SystemRoot\system32\DeviceCenter.dll"
@ -7315,8 +7424,9 @@ function PinDevicesPrinters
# Pause for 3 sec, unless the "Devices and Printers" shortcut won't displayed in the Start menu # Pause for 3 sec, unless the "Devices and Printers" shortcut won't displayed in the Start menu
# Пауза на 3 с, иначе ярлык "Устройства и принтеры" не будет отображаться в меню "Пуск" # Пауза на 3 с, иначе ярлык "Устройства и принтеры" не будет отображаться в меню "Пуск"
Start-Sleep -Seconds 3 Start-Sleep -Seconds 3
$Arguments = @" $Arguments = @"
"$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesAndPrintersLocalizedName.lnk" "51201" "$env:APPDATA\Microsoft\Windows\Start menu\Programs\System Tools\$DevicesPrinters.lnk" "51201"
"@ "@
Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
} }
@ -7326,45 +7436,18 @@ function PinDevicesPrinters
# Закрепить ярлык "Командная строка" на начальном экране с помощью syspin # Закрепить ярлык "Командная строка" на начальном экране с помощью syspin
function PinCommandPrompt function PinCommandPrompt
{ {
if ($Global:syspin -eq $true) if ($Global:syspin)
{ {
$Signature = @{
Namespace = "WinAPI"
Name = "GetStr"
Language = "CSharp"
MemberDefinition = @"
// https://github.com/Disassembler0/Win10-Initial-Setup-Script/issues/8#issue-227159084
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetModuleHandle(string lpModuleName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);
public static string GetString(uint strId)
{
IntPtr intPtr = GetModuleHandle("shell32.dll");
StringBuilder sb = new StringBuilder(255);
LoadString(intPtr, strId, sb, sb.Capacity);
return sb.ToString();
}
"@
}
if (-not ("WinAPI.GetStr" -as [type]))
{
Add-Type @Signature -Using System.Text
}
# Extract the "Command Prompt" string from shell32.dll # Extract the "Command Prompt" string from shell32.dll
# Извлечь строку Командная строка" из shell32.dll # Извлечь строку "Командная строка" из shell32.dll
$CommandPrompt = [WinAPI.GetStr]::GetString(22022) $CommandPrompt = [WinAPI.GetStr]::GetString(22022)
Write-Verbose -Message ($Localization.ShortcutPinning -f $CommandPrompt) -Verbose Write-Verbose -Message ($Localization.ShortcutPinning -f $CommandPrompt) -Verbose
$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 $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait Start-Process -FilePath $PSScriptRoot\syspin.exe -WindowStyle Hidden -ArgumentList $Arguments -Wait
# Restart the Start menu
# Перезапустить меню "Пуск"
Stop-Process -Name StartMenuExperienceHost -Force -ErrorAction Ignore
} }
} }
#endregion Start menu #endregion Start menu
@ -8080,7 +8163,7 @@ function CleanUpTask
`$Template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText01) `$Template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText01)
`$ToastXML = [xml]`$Template.GetXml() `$ToastXML = [xml]`$Template.GetXml()
`$ToastXML.GetElementsByTagName("""text""").AppendChild(`$ToastXML.CreateTextNode("""$Localization.CleanUpTaskToast""")) `$ToastXML.GetElementsByTagName("""text""").AppendChild(`$ToastXML.CreateTextNode("""$($Localization.CleanUpTaskToast)"""))
`$XML = New-Object -TypeName Windows.Data.Xml.Dom.XmlDocument `$XML = New-Object -TypeName Windows.Data.Xml.Dom.XmlDocument
`$XML.LoadXml(`$ToastXML.OuterXml) `$XML.LoadXml(`$ToastXML.OuterXml)
@ -8905,7 +8988,7 @@ function EventViewerCustomView
# Saving ProcessCreation.xml in UTF-8 encoding # Saving ProcessCreation.xml in UTF-8 encoding
# Сохраняем ProcessCreation.xml в кодировке UTF-8 # Сохраняем ProcessCreation.xml в кодировке UTF-8
Set-Content -Path "$env:ProgramData\Microsoft\Event Viewer\Views\ProcessCreation.xml" -Value (New-Object -TypeName System.Text.UTF8Encoding).GetBytes($XML) -Encoding Byte -Force Set-Content -Path "$env:ProgramData\Microsoft\Event Viewer\Views\ProcessCreation.xml" -Value $XML -Force
} }
} }
} }

48
Sophia/it-IT/Sophia.psd1

@ -1,28 +1,28 @@
ConvertFrom-StringData -StringData @' ConvertFrom-StringData -StringData @'
UnsupportedOSBitness = Questo script supporta solo Windows 10 x64 UnsupportedOSBitness = Questo script supporta solo Windows 10 x64
UnsupportedOSBuild = Lo script supporta le versioni di Windows 10 2004 / 20H1 e successive. UnsupportedOSBuild = Lo script supporta le versioni di Windows 10 2004/20H1 e successive
ControlledFolderAccessDisabled = Accesso controllato alle cartelle disabilitato ControlledFolderAccessDisabled = Accesso controllato alle cartelle disabilitato
ScheduledTasks = Attività pianificate ScheduledTasks = Attività pianificate
OneDriveUninstalling = Disinstalla OneDrive... OneDriveUninstalling = Disinstalla OneDrive...
OneDriveNotEmptyFolder = La cartella "{0}" non è vuota. Eliminarla manualmente OneDriveNotEmptyFolder = La cartella "{0}" non è vuota. Eliminarla manualmente
OneDriveFileSyncShell64dllBlocked = "{0}" è bloccato. Eliminarla manualmente OneDriveFileSyncShell64dllBlocked = "{0}" è bloccata. Eliminarla manualmente
OneDriveInstalling = OneDrive sta installando ... OneDriveInstalling = OneDrive si sta installando ...
OneDriveDownloading = Download di OneDrive... ~33 MB OneDriveDownloading = Scaricamento di OneDrive... ~33 MB
ClearFolder = Elimina tutti i file nella cartella "OneDrive" ClearFolder = Elimina tutti i file nella cartella "{0}"
FilesBlocked = I seguenti file vengono bloccati da app di terze parti. Rimuovili manualmente e continua FilesBlocked = I seguenti file sono bloccati da app di terze parti. Rimuoverli manualmente e continua
TempNotEmpty = La cartella Sono rimasti alcuni file nella cartella "Value". Spostarli manualmente in una nuova posizione. non è vuota. Eliminarla manualmente e riprovare TempNotEmpty = La cartella "{0}" non è vuota. Pulirla manualmente
WindowsFeaturesWindowTitle = Funzionalità Windows WindowsFeaturesWindowTitle = Funzionalità Windows
Patient = Attendere prego... Patient = Attendere prego...
FODWindowTitle = Funzionalità facoltative (FODv2) da rimuovere FODWindowTitle = Funzionalità facoltative (FODv2)
EnableHardwareVT = Attiva Virtualizzazione in UEFI EnableHardwareVT = Attiva Virtualizzazione in UEFI
UserShellFolderNotEmpty = Sono rimasti alcuni file nella cartella "{0}". Spostarli manualmente in una nuova posizione. UserShellFolderNotEmpty = Sono rimasti alcuni file nella cartella "{0}". Spostarli manualmente in una nuova posizione.
RetrievingDrivesList = Recupero lista delle unità... RetrievingDrivesList = Recupero lista delle unità...
NewUserShellFolderLocation = Nuova posizione: "{0}" NewUserShellFolderLocation = Nuova posizione: "{0}"
DesktopDriveSelect = Seleziona l'unità all'interno della radice della quale verrà creata la cartella Dekstop DesktopDriveSelect = Seleziona l'unità all'interno della radice nella quale verrà creata la cartella Dekstop
DocumentsDriveSelect = Seleziona l'unità all'interno della radice della quale verrà creata la cartella Documenti DocumentsDriveSelect = Seleziona l'unità all'interno della radice nella quale verrà creata la cartella Documenti
DownloadsDriveSelect = Seleziona l'unità all'interno della radice della quale verrà creata la cartella Download DownloadsDriveSelect = Seleziona l'unità all'interno della radice nella quale verrà creata la cartella Download
MusicDriveSelect = Seleziona l'unità all'interno della radice della quale verrà creata la cartella Musica MusicDriveSelect = Seleziona l'unità all'interno della radice nella quale verrà creata la cartella Musica
PicturesDriveSelect = Seleziona l'unità all'interno della radice della quale verrà creata la cartella Immagini PicturesDriveSelect = Seleziona l'unità all'interno della radice nella quale verrà creata la cartella Immagini
VideosDriveSelect = Seleziona l'unità all'interno della radice della quale verrà creata la cartella Video VideosDriveSelect = Seleziona l'unità all'interno della radice della quale verrà creata la cartella Video
DesktopRequest = Desideri cambiare la posizione della cartella Desktop? DesktopRequest = Desideri cambiare la posizione della cartella Desktop?
DocumentsRequest = Desideri cambiare la posizione della cartella Documenti? DocumentsRequest = Desideri cambiare la posizione della cartella Documenti?
@ -30,19 +30,19 @@ DownloadsRequest = Desideri cambiare la posizione della ca
MusicRequest = Desideri cambiare la posizione della cartella Musica? MusicRequest = Desideri cambiare la posizione della cartella Musica?
PicturesRequest = Desideri cambiare la posizione della cartella Immagini? PicturesRequest = Desideri cambiare la posizione della cartella Immagini?
VideosRequest = Desideri cambiare la posizione della cartella Video? VideosRequest = Desideri cambiare la posizione della cartella Video?
DesktopFolderSelect = Seleziona una cartella per la cartella Desktop DesktopFolderSelect = Seleziona una cartella per Desktop
DocumentsFolderSelect = Seleziona una cartella per la cartella Documenti DocumentsFolderSelect = Seleziona una cartella per Documenti
DownloadsFolderSelect = Seleziona una cartella per la cartella Download DownloadsFolderSelect = Seleziona una cartella per Download
MusicFolderSelect = Seleziona una cartella per la cartella Musica MusicFolderSelect = Seleziona una cartella per Musica
PicturesFolderSelect = Seleziona una cartella per la cartella Immagini PicturesFolderSelect = Seleziona una cartella per Immagini
VideosFolderSelect = Seleziona una cartella per la cartella Video VideosFolderSelect = Seleziona una cartella per Video
DesktopDefaultFolder = Desideri modificare cambiare la posizione della cartella Desktop sul valore predefinito? DesktopDefaultFolder = Desideri modificare la posizione della cartella Desktop sul valore predefinito?
DocumentsDefaultFolder = Desideri modificare cambiare la posizione della cartella Documenti sul valore predefinito? DocumentsDefaultFolder = Desideri modificare la posizione della cartella Documenti sul valore predefinito?
DownloadsDefaultFolder = Desideri modificare cambiare la posizione della cartella Download sul valore predefinito? DownloadsDefaultFolder = Desideri modificare la posizione della cartella Download sul valore predefinito?
MusicDefaultFolder = Desideri modificare la posizione della cartella Musica sul valore predefinito? MusicDefaultFolder = Desideri modificare la posizione della cartella Musica sul valore predefinito?
PicturesDefaultFolder = Desideri modificare la posizione della cartella Immagini sul valore predefinito? PicturesDefaultFolder = Desideri modificare la posizione della cartella Immagini sul valore predefinito?
VideosDefaultFolder = Desideri modificare la posizione della cartella Video sul valore predefinito? VideosDefaultFolder = Desideri modificare la posizione della cartella Video sul valore predefinito?
ReservedStorageIsInUse = Questa oprazione non è supportata quando reserved storage è in uso\nAttendere il completamento delle operazioni di manutenzione e riprovare più tardi ReservedStorageIsInUse = Questa operazione non è supportata quando reserved storage è in uso\nAttendere il completamento delle operazioni di manutenzione e riprovare più tardi
syspinDownloading = Scaricamento di syspin... ~20 KB syspinDownloading = Scaricamento di syspin... ~20 KB
ShortcutPinning = Il collegamento "{0}" viene aggiunto a Start. ShortcutPinning = Il collegamento "{0}" viene aggiunto a Start.
UninstallUWPForAll = Rimuovi per Tutti gli utenti UninstallUWPForAll = Rimuovi per Tutti gli utenti
@ -76,7 +76,7 @@ Change = Cambia
Continue = Continua Continue = Continua
DialogBoxOpening = Visualizzazione della finestra di dialogo... DialogBoxOpening = Visualizzazione della finestra di dialogo...
Disable = Disinstalla Disable = Disinstalla
Enable = Abilitare Enable = Abilita
EXEFilesFilter = *.exe|*.exe|Tutti i file (*.*)|*.* EXEFilesFilter = *.exe|*.exe|Tutti i file (*.*)|*.*
FolderSelect = Seleziona una cartella FolderSelect = Seleziona una cartella
FilesWontBeMoved = I file non verranno spostati FilesWontBeMoved = I file non verranno spostati

2
Sophia/ru-RU/Sophia.psd1

@ -12,7 +12,6 @@ ClearFolder = Удалить все файлы в п
FilesBlocked = Следующие файлы блокируются сторонними приложениями. Удалите их вручную и продолжите FilesBlocked = Следующие файлы блокируются сторонними приложениями. Удалите их вручную и продолжите
TempNotEmpty = Папка "{0}" не пуста. Очистите ее вручную TempNotEmpty = Папка "{0}" не пуста. Очистите ее вручную
WindowsFeaturesWindowTitle = Компоненты Windows WindowsFeaturesWindowTitle = Компоненты Windows
Patient = Пожалуйста, подождите...
FODWindowTitle = Дополнительные компоненты (FODv2) FODWindowTitle = Дополнительные компоненты (FODv2)
EnableHardwareVT = Включите виртуализацию в UEFI EnableHardwareVT = Включите виртуализацию в UEFI
UserShellFolderNotEmpty = В папке "{0}" остались файлы. Переместите их вручную в новое расположение UserShellFolderNotEmpty = В папке "{0}" остались файлы. Переместите их вручную в новое расположение
@ -82,6 +81,7 @@ FolderSelect = Выберите папку
FilesWontBeMoved = Файлы не будут перенесены FilesWontBeMoved = Файлы не будут перенесены
NoData = Отсутствуют данные NoData = Отсутствуют данные
NoInternetConnection = Отсутствует интернет-соединение NoInternetConnection = Отсутствует интернет-соединение
Patient = Пожалуйста, подождите...
Select = Выбрать Select = Выбрать
Skip = Пропустить Skip = Пропустить
Skipped = Пропущено Skipped = Пропущено

Loading…
Cancel
Save