PowerShell: Установить скрипт

Я написал скрипт, который на 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
}


Подписаться
Уведомление о
guest
0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments