Запустить вложенную команду с повышенными правами
команда!
Потратьте некоторое время на создание функции для запуска скриптов с повышенными правами. Я использую рекомендацию с 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
Почему я не могу получить истинную высоту?