Я пытаюсь использовать следующий код из этого вопроса "PowerShell: Running a command as Administrator", чтобы не только самостоятельно поднять мой сценарий для автоматического запуска на PowerShell на уровне администратора, но также для сеанса PowerShell на уровне администратора запускается с уровнем ExecutionPolicy RemoteSigned. Я предполагаю, что мне нужно использовать что-то вроде -ExecutionPolicy RemoteSigned
в $newProcess.Arguments
, но я полностью потерял, если это так, и если это то, что я использую для создания нескольких аргументов в синтаксисе?Self Elevating Script + Политика исполнения
# Get the ID and security principal of the current user account
$myWindowsID = [System.Security.Principal.WindowsIdentity]::GetCurrent();
$myWindowsPrincipal = New-Object System.Security.Principal.WindowsPrincipal($myWindowsID);
# Get the security principal for the administrator role
$adminRole = [System.Security.Principal.WindowsBuiltInRole]::Administrator;
# Check to see if we are currently running as an administrator
if ($myWindowsPrincipal.IsInRole($adminRole)) {
# We are running as an administrator, so change the title and background colour to indicate this
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)";
$Host.UI.RawUI.BackgroundColor = "DarkBlue";
Clear-Host;
} else {
# We are not running as an administrator, so relaunch as administrator
# Create a new process object that starts PowerShell
$newProcess = New-Object System.Diagnostics.ProcessStartInfo "PowerShell";
# Specify the current script path and name as a parameter with added scope and support for scripts with spaces in it's path
$newProcess.Arguments = "& '" + $script:MyInvocation.MyCommand.Path + "'"
# Indicate that the process should be elevated
$newProcess.Verb = "runas";
# Start the new process
[System.Diagnostics.Process]::Start($newProcess);
# Exit from the current, unelevated, process
Exit;
}
# Run your code that needs to be elevated here...
Write-Host -NoNewLine "Press any key to continue...";
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown");
[само подъемное скрипт без лазейки безопасности] (https://blogs.msdn.microsoft.com/virtual_pc_guy/2010/09/23/a-self-elevating-powershell-script/) – lloyd
Ну это не мой. Возможно, я должен объяснить свою общую цель. То, что я в конечном счете пытаюсь сделать, - запустить скрипт из сеанса без полномочий администратора Powershell, который будет дросселировать пропускную способность интернета для одного исполняемого файла. Я понимаю, что это может быть достигнуто только с помощью сценария Powershell на уровне администратора. Мне также нужно, чтобы это можно было запускать с компьютера с Windows 10 с установленным по умолчанию пакетом ExecutionPolicy для ограничения. Следовательно, мое желание уменьшить уровень ExecutionPolicy в течение всего скрипта. – Ikrananka