Запустіть віддалений powerhell як адміністратор


14

Перш ніж зайнятися питанням, я знайшов кілька інших питань, схожих на моє, але вони не змогли вирішити мою проблему. Ось посилання на них:

Віддалене запустіть скрипт із викликом "Запустити як адміністратор"

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

Тепер на питання: мені потрібно запустити скрипт оновлення Windows на віддаленій машині через Powershell. Якщо я віддаляюсь в машину через mstsc, запускаю Powershell як адміністратор і запускаю скрипт оновлення Windows, це працює добре. Якщо я віддаляюся в машину через mstsc, запускаю Powershell БЕЗ вибору запуску в якості адміністратора, і запускаю скрипт, я отримаю купу помилок у цьому рядку: "Виняток викликає" Завантажити "з аргументом" 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. У мене є Googled і Googled, але нічого не знайшов. Якщо хтось міг би допомогти пролити щось на це, це було б дуже вдячно.


Я не в консолі для тестування, але якщо ви отримаєте віддалений сеанс etsn (Enter-PSSession), можете ввести "Start-Process PowerShell –Verb RunAs" і натиснути Enter. Це дає вам запит адміністратора? Якщо так, я зміню це на відповідь, яку ви можете прийняти. Якщо ні, я перевіряю, коли повернусь до свого столу.
TheCleaner

Можливий відповідь тут serverfault.com/a/474031/23300
Nic

Відповіді:


3

При віддаленому виконанні команд вони запускаються з адміністративними привілеями, оскільки тільки адміністраторам дозволено віддалено виконувати команди в командній оболонці. Помилка "Виняток викликає" CreateUpdateDownloader "з аргументами" 0 ":" Доступ заборонено. (Виняток з HRESULT: 0x80070005 (E_ACCESSDENIED)) "" не є власною помилкою в оболонці, це вказує, що ця лінія не працює: $ UpdatesDownloader = $ UpdateSession.CreateUpdateDownloader (), цей рядок намагається створити об'єкт оновленого завантажувача за допомогою $ UpdateSesession = New-Object -ComObject Microsoft.Update.Session.

Не знаючи, куди завантажувач намагається достукатися, я можу лише припустити материнську плату, це може означати, що облікові дані, які ви мали під час віддаленого підключення до сервера, могли бути предметом проксі. Це звичайна практика безпеки: користувачі, віддалено підключені до машин, не можуть завантажувати елементи безпосередньо з Інтернету (як би не довіряли джерелу).

Сподіваюся, це допоможе, Кріс



2

Для запуску віддалених команд shellhell ви повинні запускатись як адміністратор на машині, з якої ви запускаєте команди, принаймні в конфігурації коробки. Це задокументоване обмеження на видалення PowerShell, хоча за умовчанням можна зменшити типові настройки, але це призведе до внесення змін у конфігурацію PowerShell.

Для віддаленого виконання ви передаєте облікові дані за допомогою параметра -credentials? напр

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

У Windows 2012 Server і без налаштування AD спробуйте використовувати "MicrosoftAccount \ Administrator" в якості облікових даних та скористайтеся паролем віддаленого адміністратора. Використання повністю кваліфікованого імені користувача без реклами завжди здавалося мені непотрібним клопотом.
fuero

1

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

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

Локальний віртуальний рахунок

Якщо ролі, що підтримуються цією кінцевою точкою JEA, використовуються для управління локальною машиною, а локального облікового запису адміністратора достатньо для успішного запуску команд, слід налаштувати JEA для використання локального віртуального облікового запису. Віртуальні акаунти - це тимчасові облікові записи, які є унікальними для конкретного користувача та тривають лише протягом їх сеансу PowerShell. На сервері або робочій станції-учасниці віртуальні облікові записи належать до групи адміністраторів місцевого комп’ютера і мають доступ до більшості системних ресурсів. У контролері домену Active Directory віртуальні облікові записи належать до групи домену адміністраторів домену.

Виправлення¹:

(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.) Від ComputerA (локальний клієнт) підключіться до нашої необмеженої конфігурації сеансу на ComputerB:

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.