Powershell Run as Administrator выдает ошибки - PullRequest
1 голос
/ 06 марта 2020

Попытка запустить этот скрипт на свободном компьютере, но, похоже, каждый раз требует sh. Хорошо работает на моем компьютере, что заставляет меня думать, может быть, его разрешение на основе? Не связанный компьютер - это учетная запись локального администратора, на которой выполняется сценарий, он открывает второй модуль Powershell и завершает работу без сообщения об ошибке. Я могу запустить powershell как администратор, а затем запустить скрипт, но это не цель, которую я пытаюсь достичь.

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");

Обновление: мне удалось записать видео и зафиксировать отображаемую ошибку:

The expression after '&' in a pipeline element product an object that was not valid. It must result in a command name, a script block, or a commandInfo object.
At line:1 char:3 
+& ''
+  ~~~
+ CategoryInfo : InvalidOperation (:String)[], RuntimeException
+ FullyQulifiedErrorId : BadExpression
...