Запустить вложенную команду с повышенными правами

команда!
Потратьте некоторое время на создание функции для запуска скриптов с повышенными правами. Я использую рекомендацию с https://github.com/MicrosoftDocs/PowerShell-Docs/issues/6239 Учетные данные пользователя в группе локальных администраторов. Когда я запускаю свой код, у меня появляется приглашение без повышенных прав (AT > NUL && эхо с повышенными правами || эхо без повышенных прав), но заголовок cmd белый, как в консоли с повышенными правами. Кроме того, у меня нет перенаправления на файл, но файл создается. Я использую Windows 11.

      $ProcessStartInfo = New-Object System.Diagnostics.ProcessStartInfo
$FilePath     = 'cmd.exe'
$Verb         = 'RunAs'
$ArgumentList = '/k whoami && AT > NUL && echo elevated|| echo not elevated& timeout /t 1 && exit 0'
$Wait = $True
$Cred = get-credential
$DomainAndUserName = $Credential.UserName.Split("\")
if ( $DomainAndUserName.count -eq 2 ){
     $Domain   = $DomainAndUserName | Select-Object -first 1
     $UserName = $DomainAndUserName | Select-Object -last 1            
}
Else {
     $UserName = $DomainAndUserName | Select-Object -first 1
}

if ( ( $Verb -eq 'RunAs' ) -and $Credential ) {
        $NestedProcess = "Start-Process -FilePath '$FilePath' -Verb 'RunAs' -ArgumentList $ArgumentList > 'C:\Users\Public\TMP\log.txt'"
        
        $NestedArgumentList  = '-noprofile', '-command', `"$NestedProcess`"
        
        $ProcessStartInfo.Arguments = $NestedArgumentList

    
        $ProcessStartInfo.CreateNoWindow = $false
        $ProcessStartInfo.RedirectStandardOutput = $false
        $ProcessStartInfo.RedirectStandardError = $false
        $ProcessStartInfo.Filename = $FilePath
        $ProcessStartInfo.Verb = $null
        $ProcessStartInfo.UserName = $UserName
        $ProcessStartInfo.Domain= $Domain
        $ProcessStartInfo.Password= $Password
        $ProcessStartInfo.UseShellExecute = $false
    }    

    try{        
        $Process = New-Object System.Diagnostics.Process
        $Process.StartInfo = $ProcessStartInfo
        $StartResult = $Process.Start()
       
        if ( $Wait ){
            $Process.WaitForExit()
        }     
   }
   Catch { 
        write-host $_
   }

Информация о группе пользователей

Все NT AUTHORITY\Локальная учетная запись и член группы администраторов ВСТРОЕННЫЕ\Администраторы ВСТРОЕННЫЕ\Пользователи NT AUTHORITY\INTERACTIVECONSOLE LOGONNT AUTHORITY\Authenticated UsersNT AUTHORITY\This OrganizationNT AUTHORITY\Local accountLOCALNT AUTHORITY\NTLM AuthenticationMandatory Label\Medium Mandatory Level

Почему я не могу получить истинную высоту?

0 ответов

Другие вопросы по тегам