เรียกใช้ PowerShell ระยะไกลในฐานะผู้ดูแลระบบ


14

ก่อนที่ฉันจะดำดิ่งสู่คำถามฉันได้พบคำถามอื่น ๆ อีกหลายคำถามที่ดูเหมือนกับฉัน แต่พวกเขาไม่สามารถแก้ปัญหาของฉันได้ นี่คือลิงค์ไปยังพวกเขา:

เรียกใช้สคริปต์จากระยะไกล "Run As Administrator"

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

ตอนนี้มาถึงคำถาม: ฉันต้องเรียกใช้สคริปต์ Windows Update บนเครื่องระยะไกลผ่าน Powershell ถ้าฉันรีโมตเข้าสู่เครื่องผ่าน mstsc ให้เรียกใช้ Powershell ในฐานะผู้ดูแลระบบและรันสคริปต์ Windows Update จะทำงานได้ดี ถ้าฉันรีโมตเข้าสู่เครื่องผ่าน mstsc ให้เรียกใช้ Powershell โดยไม่ต้องเลือกการทำงานในฐานะผู้ดูแลระบบและรันสคริปต์ฉันจะได้รับข้อผิดพลาดจำนวนมากตามบรรทัดนี้: "Exception call" Download "with อาร์กิวเมนต์" 0 ":" ข้อยกเว้นจาก HRESULT: 0x80240044 ""

สิ่งนี้จะเกิดขึ้นหากฉันเรียกใช้โดยไม่มีสิทธิ์ของผู้ดูแลระบบ

สคริปต์ที่ฉันใช้คือ: http://www.ehow.com/how_8724332_use-powershell-run-windows-updates.html

ตอนนี้เมื่อฉันรีโมตเข้าสู่เครื่องโดยใช้ Enter-PSSession และพยายามเรียกใช้สคริปต์ฉันได้รับข้อผิดพลาด พวกเขาอยู่ในบรรทัดนี้: "การเรียกข้อยกเว้น" CreateUpdateDownloader "พร้อมอาร์กิวเมนต์" 0 ":" การเข้าถึงถูกปฏิเสธ (ข้อยกเว้นจาก HRESULT: 0x80070005 (E_ACCESSDENIED)) ""

ฉันเปิดรับข้อเสนอแนะเกี่ยวกับสิ่งที่อาจทำให้เกิดปัญหานี้ แต่ฉันคิดว่าฉันเข้าใจแล้ว ฉันเชื่อว่าเซสชั่น Powershell จำเป็นต้องทำงานด้วยสิทธิ์ยกระดับ ฉันรู้วิธีการทำสิ่งนี้ในขณะที่ remoting ผ่าน mstsc แต่ฉันไม่สามารถหาวิธีที่จะทำได้ผ่าน Enter-PSSession ฉันมี Googled และ Googled แต่ไม่พบอะไรเลย หากใครสามารถช่วยส่องแสงในเรื่องนี้ก็จะได้รับการชื่นชมอย่างมาก


ฉันไม่ได้อยู่ที่คอนโซลเพื่อทดสอบ แต่ถ้าคุณได้รับเซสชัน etsn ระยะไกล (Enter-PSSession) คุณสามารถพิมพ์ "PowerShell –Verb RunAs กระบวนการเริ่มต้น" แล้วกด Enter นั่นให้พรอมต์ผู้ดูแลระบบแก่คุณหรือไม่ ถ้าเป็นเช่นนั้นฉันจะเปลี่ยนเป็นคำตอบที่คุณยอมรับได้ ถ้าไม่ฉันจะทดสอบเมื่อฉันกลับมาที่โต๊ะทำงานของฉัน
TheCleaner

คำตอบที่เป็นไปได้ที่นี่serverfault.com/a/474031/23300
Nic

คำตอบ:


3

เมื่อคุณดำเนินการคำสั่งจากระยะไกลพวกเขาจะทำงานด้วยสิทธิ์ของผู้ดูแลระบบเพราะมีเพียงผู้ดูแลระบบที่ได้รับอนุญาตให้เรียกใช้คำสั่งจากระยะไกลใน PowerShell ข้อผิดพลาด "การเรียกข้อยกเว้น" CreateUpdateDownloader "พร้อมอาร์กิวเมนต์" 0 ":" การเข้าถึงถูกปฏิเสธ (ข้อยกเว้นจาก HRESULT: 0x80070005 (E_ACCESSDENIED)) "" ไม่ใช่ข้อผิดพลาด PowerShell ดั้งเดิมแสดงว่าบรรทัดนี้ล้มเหลว: $ UpdatesDownloader = $ UpdateSession.CreateUpdateDownloader () บรรทัดนี้พยายามสร้างวัตถุที่มีการปรับปรุง $ UpdateSession = New-Object -ComObject Microsoft.Update.Session วัตถุ

โดยไม่ทราบว่าตัวดาวน์โหลดพยายามติดต่อกับที่ไหนฉันสามารถสันนิษฐานได้ว่าการเป็นมารดามันอาจบ่งบอกว่าข้อมูลประจำตัวที่คุณมีในขณะที่เชื่อมต่อกับเซิร์ฟเวอร์จากระยะไกลอาจเป็นเรื่องของพร็อกซี นี่เป็นแนวทางปฏิบัติด้านความปลอดภัยทั่วไปผู้ใช้ที่เชื่อมต่อกับเครื่องจากระยะไกลไม่สามารถดาวน์โหลดรายการได้โดยตรงจากอินเทอร์เน็ต (ไม่ว่าจะเชื่อถือได้แค่ไหนก็ตาม)

หวังว่านี่จะช่วยได้ Chris



2

ในการเรียกใช้คำสั่ง PowerShell แบบรีโมทคุณจะต้องเรียกใช้ในฐานะผู้ดูแลระบบของเครื่องที่คุณเปิดใช้งานคำสั่งอย่างน้อยก็ในกรอบการกำหนดค่า นี่เป็นข้อ จำกัด ที่เป็นเอกสารของการเรียบเรียง PowerShell แม้ว่าจะเป็นไปได้ที่จะผ่อนคลายค่าเริ่มต้นหากคุณได้รับการพิจารณา แต่จะเกี่ยวข้องกับการเปลี่ยนแปลงการกำหนดค่า PowerShell

สำหรับการดำเนินการรีโมตคุณกำลังส่งผ่านหนังสือรับรองโดยใช้พารามิเตอร์ -credentials หรือไม่? เช่น

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

ด้วย Windows 2012 Server และไม่มีการตั้งค่าโฆษณาลองใช้ 'MicrosoftAccount \ Administrator' เป็นข้อมูลประจำตัวและใช้รหัสผ่านของผู้ดูแลระบบระยะไกล การใช้ชื่อผู้ใช้ที่ผ่านการรับรองโดยไม่มีโฆษณาดูเหมือนจะเป็นเรื่องยุ่งยากสำหรับฉันเสมอ
fuero

1

เกี่ยวกับการอัปเดต Windows บนเซิร์ฟเวอร์ระยะไกลฉันสามารถทำงานได้โดยการตั้งค่าจุดสิ้นสุด JEA บนเซิร์ฟเวอร์ระยะไกลให้ทำงานเป็นบัญชีเสมือนในเครื่อง

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

บัญชีเสมือนท้องถิ่น

หากบทบาทที่สนับสนุนโดยจุดปลาย JEA นี้ถูกใช้เพื่อจัดการเครื่องโลคัลและบัญชีผู้ดูแลระบบภายในนั้นเพียงพอที่จะเรียกใช้คำสั่งได้สำเร็จคุณควรกำหนดค่า JEA ให้ใช้บัญชีเสมือนในเครื่อง บัญชีเสมือนเป็นบัญชีชั่วคราวที่ไม่เหมือนใครสำหรับผู้ใช้เฉพาะและมีอายุการใช้งานยาวนานในช่วง PowerShell บนเซิร์ฟเวอร์สมาชิกหรือเวิร์กสเตชันบัญชีเสมือนเป็นของกลุ่มผู้ดูแลระบบคอมพิวเตอร์ในพื้นที่และมีการเข้าถึงทรัพยากรระบบส่วนใหญ่ ใน Active Directory Domain Controller บัญชีเสมือนจะอยู่ในกลุ่ม Domain Admins ของโดเมน

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. ) จาก 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.