Запустите удаленный powershell от имени администратора


14

Прежде чем углубиться в этот вопрос, я нашел несколько других вопросов, которые кажутся похожими на мои, но они не смогли решить мою проблему. Вот ссылки на них:

Удаленно запустить скрипт, который вызывает «Запуск от имени администратора»

/programming/10724591/how-to-remote-execute-an-elevated-remote-script-in-powershell

Теперь на вопрос: мне нужно запустить скрипт Windows Update на удаленной машине через Powershell. Если я удаленно подключаюсь к машине через mstsc, запускаю Powershell от имени администратора и запускаю скрипт Windows Update, он работает нормально. Если я удаленно подключусь к машине через mstsc, запустлю Powershell БЕЗ выбора запуска от имени администратора и запустите сценарий, я получу кучу ошибок в этой строке: «Исключение вызывает« Download »с аргументом (ами)« 0 »:» Исключение из HRESULT: 0x80240044 ""

Это происходит только в том случае, если я запускаю его без прав администратора.

Сценарий, который я запускаю, таков: http://www.ehow.com/how_8724332_use-powershell-run-windows-updates.html

Теперь, когда я удаленно вхожу в компьютер с помощью Enter-PSSession и пытаюсь запустить скрипт, я получаю ошибки, но они немного отличаются. Они соответствуют этой линии: «Исключение вызывает« CreateUpdateDownloader »с аргументом (ами)« 0 »:« Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)) ""

Я открыт для предложений относительно того, что может быть причиной этой проблемы, но я думаю, что я понял это. Я считаю, что сеанс Powershell должен выполняться с повышенными привилегиями. Я знаю, как сделать это во время удаленного взаимодействия через mstsc, но я не смог найти способ сделать это через Enter-PSSession. Я гуглил и гуглил, но ничего не нашел. Если бы кто-нибудь мог помочь пролить некоторый свет на это, это было бы очень ценно.


Я не за консолью для тестирования, но если вы получаете удаленный сеанс etsn (Enter-PSSession), можете ли вы затем набрать «Start-Process PowerShell –Verb RunAs» и нажать Enter. Это дает вам приглашение администратора? Если так, я заменю это на ответ, который вы можете принять. Если нет, я проверю, когда вернусь за свой стол.
TheCleaner

Возможный ответ здесь serverfault.com/a/474031/23300
Ник

Ответы:


3

Когда вы выполняете команды удаленно, они запускаются с правами администратора, потому что только администраторы могут удаленно выполнять команды в powershell. Ошибка «Исключение вызывает« CreateUpdateDownloader »с аргументом (ами)« 0 »:« Доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)) "" не является собственной ошибкой powershell, это указывает на сбой этой строки: $ UpdatesDownloader = $ UpdateSession.CreateUpdateDownloader (), эта строка пытается создать объект updatedownloader, используя $ UpdateSession = New-Object -ComObject Объект Microsoft.Update.Session.

Не зная, ГДЕ пытается загрузить загрузчик, я могу только предположить, что это главный корабль, это может указывать на то, что учетные данные, которые вы имеете при удаленном подключении к серверу, могут быть объектом прокси. Это обычная практика обеспечения безопасности: пользователи, удаленно подключенные к компьютерам, не могут загружать элементы напрямую из Интернета (независимо от того, насколько доверен источник).

Надеюсь, это поможет, Крис



2

Для запуска удаленных команд PowerShell вы ДОЛЖНЫ запускаться от имени администратора на компьютере, с которого вы запускаете команды, по крайней мере, в стандартной конфигурации. Это задокументированное ограничение удаленного взаимодействия PowerShell, хотя можно уменьшить значения по умолчанию, если вы определитесь, но это потребует внесения изменений в конфигурацию PowerShell.

Для удаленного выполнения вы передаете учетные данные с помощью параметра -credentials? например

Enter-PSSession -Credential(Get-Credential) -ComputerName <remotehost>

В Windows 2012 Server и без настройки AD попробуйте использовать «MicrosoftAccount \ Administrator» в качестве учетных данных и использовать пароль удаленного администратора. Использование полного имени пользователя без AD всегда казалось мне ненужным хлопотом.
Fuero

1

Что касается обновлений Windows на удаленных серверах, я смог заставить их работать, настроив конечную точку JEA на удаленном сервере для работы в качестве локальной виртуальной учетной записи.

Из https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/jea/session-configurations :

Локальная виртуальная учетная запись

Если все роли, поддерживаемые этой конечной точкой JEA, используются для управления локальным компьютером, и для успешного выполнения команд достаточно учетной записи локального администратора, следует настроить JEA для использования локальной виртуальной учетной записи. Виртуальные учетные записи - это временные учетные записи, которые являются уникальными для конкретного пользователя и действуют только в течение их сеанса PowerShell. На рядовом сервере или рабочей станции виртуальные учетные записи принадлежат группе администраторов локального компьютера и имеют доступ к большинству системных ресурсов. На контроллере домена Active Directory виртуальные учетные записи принадлежат группе администраторов домена.

Quickfix¹:

(1.) Создайте новую неограниченную (и постоянную!) Конфигурацию сеанса на ComputerB (удаленный сервер):

New-PSSessionConfigurationFile -RunAsVirtualAccount -Path .\VirtualAccount.pssc
# Note this will restart the WinRM service:
Register-PSSessionConfiguration -Name 'VirtualAccount' [-ShowSecurityDescriptorUI] -Path .\VirtualAccount.pssc -Force
# Check the Permission property:
Get-PSSessionConfiguration -Name 'VirtualAccount'
# Those users will have full unrestricted access to the system!

(2.) С компьютера A (локальный клиент) подключитесь к нашей неограниченной конфигурации сеанса на компьютере B:

New-PSSession -ComputerName 'ComputerB' -ConfigurationName 'VirtualAccount' | Enter-PSSession
[ComputerB]: new-object -com "Microsoft.Update.Downloader" # Yay!

¹ скопировано с /programming//a/60046097/1322112


Это помогло мне! Спасибо, что напомнили мне, что JEA великолепен!
B_Dubb42
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.