Я написал скрипт, который на 5 минут разрешает исходящие соединения для Firewall и меняет уровень Software Restriction Policies с Disallowed на Unrestricted. Сделано это было для запуска и работы программ установки приложений. Например Unity Editor после запуска UnitySetup64.exe начинает скачивать компоненты для установки, а потом их запускает. Вручную только для этого перенастраивать Firewall и SRP — долго и можно что-то забыть потом вернуть обратно или подчистить, поэтому я написал скрипт SetupMode-TempAllow.ps1, который мне все это делал в автоматическом режиме. Для того, чтобы его было удобнее запускать из консоли PowerShell, я написал для него «режим установки» — простое создание символьной ссылки в папке System32 (я приведу лишь часть скрипта):
#Requires -RunAsAdministrator
param (
[switch]$DeleteTask,
[switch]$Stop,
[switch]$Install,
[switch]$Uninstall
)
if ($Install) # if script has a switch
{
$symlinkPath = $env:SystemRoot + "\System32\$taskName.ps1"
$scriptFullPath = "$PSScriptRoot\$taskName.ps1"
try
{
New-Item -ItemType SymbolicLink -Path "$symlinkPath" -Value $scriptFullPath -ErrorAction Stop | Out-Null
}
catch [System.IO.IOException]
{
#Symlink exists
Write-Verbose "Symlink exists"
Remove-Item -Path "$symlinkPath"
New-Item -ItemType SymbolicLink -Path "$symlinkPath" -Value $scriptFullPath -ErrorAction Stop | Out-Null
}
Write-Warning "Script was installed to $symlinkPath"
Exit
}
elseif ($Uninstall) # Remove symlink to the script
{
$symlinkPath = $env:SystemRoot + "\System32\$taskName.ps1"
try
{
Remove-Item -Path "$symlinkPath" -ErrorAction Stop
}
catch [System.IO.IOException]
{
Write-Verbose "$($_.TargetObject)"
Exit
}
catch [System.Management.Automation.RuntimeException]
{
Write-Output $_.Exception.Message
Exit
}
Write-Warning "Script was uninstalled (Deleted symlink: $symlinkPath)"
Exit
}
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024