Поднять текущий скрипт с аргументом "-noprofile" - PullRequest
2 голосов
/ 23 января 2020

В настоящее время я использую приведенный ниже код, чтобы поднять свой текущий скрипт, поместив код в начало моего скрипта. Я хотел бы также включить аргумент "-noprofile" при повышении уровня скрипта. Как включить -noprofile в строку $ newProcess.Arguments ?

$myWindowsID = [System.Security.Principal.WindowsIdentity]::GetCurrent();
$myWindowsPrincipal = New-Object System.Security.Principal.WindowsPrincipal($myWindowsID);
$adminRole = [System.Security.Principal.WindowsBuiltInRole]::Administrator;

if ($myWindowsPrincipal.IsInRole($adminRole))
{

    $Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)";
    #$Host.UI.RawUI.BackgroundColor = "DarkBlue";
    Clear-Host;

} else {

    $newProcess = New-Object System.Diagnostics.ProcessStartInfo "PowerShell";
    $newProcess.Arguments = "& '" + $script:MyInvocation.MyCommand.Path + "'"
    $newProcess.WindowStyle = 'Hidden'
    $newProcess.CreateNoWindow = $True
    $newProcess.Verb = "runas";
    [System.Diagnostics.Process]::Start($newProcess);
    Exit;
}

Ответы [ 2 ]

2 голосов
/ 23 января 2020

Следующая настройка свойства Arguments должна работать, даже если путь к сценарию содержит пробел:

$newProcess.Arguments = "-NoProfile -Command `"& '$($script:MyInvocation.MyCommand.Path)' `""

Другая альтернатива:

$newProcess.Arguments = "-NoProfile -File `"$($script:MyInvocation.MyCommand.Path)`""
0 голосов
/ 23 января 2020

Включить -NoProfile Аргумент, подобный этому:

$newProcess.Arguments = "-NoProfile -Command {$($script:MyInvocation.MyCommand.Path)}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...