การจัดการ Windows Powershell จากเทอร์มินัล Linux


31

ฉันจัดการเซิร์ฟเวอร์ Windows Server 2012 ฉันเรียนรู้ PowerShell เพื่อจัดการเซิร์ฟเวอร์เหล่านี้ผ่านทางบรรทัดคำสั่ง เวิร์กสเตชันของฉันใช้งาน Ubuntu และฉันมักจะจัดการเซิร์ฟเวอร์ Linux ด้วยการเชื่อมต่อผ่าน SSH

มีวิธีที่ฉันสามารถใช้ Windows PowerShell บน Windows Servers จากเวิร์กสเตชัน Linux ของฉันผ่านบรรทัดคำสั่งเช่นการเข้าถึง SSH บน Linux หรือไม่


มีผลิตภัณฑ์ของบุคคลที่สามที่ให้บริการเซิร์ฟเวอร์ SSH สำหรับ Windows ที่มี powershell เป็นเชลล์เริ่มต้น เช่นpowershellserver.com
Zoredache

6
ส่วนตัวฉันชอบจัดการ Windows จากเครื่อง Windows (เสมือน) และ Linux จากเครื่อง Linux ดูเหมือนว่าจะช่วยรักษาสิ่งที่เหลือจากสติของฉัน
Michael Hampton

ฉันได้รับสิ่งที่คุณพยายามที่จะบรรลุ แต่ตราบใดที่คุณสามารถเรียกใช้คำสั่ง powershell บนโฮสต์ windows หนึ่งคุณไม่สามารถจัดการอื่น ๆ จากเซสชัน PS นั้นได้หรือไม่
แอนดี้

@Andy - จุดของฉันอย่างแน่นอน
mfinni

ฉันสนใจโครงการ Pash ( github.com/Pash-Project/Pash ) พวกเขาต้องการใช้ PowerShell บน Linux อีกครั้ง ตอนนี้ฉันกำลังพยายามรวบรวมเครื่อง Raspberry Pi เพื่อดูว่าฉันสามารถออกคำสั่งปิดระบบจากระยะไกลได้หรือไม่
usr-local-ΕΨΗΕΛΩΝ

คำตอบ:


15

ตัวเลือกบางอย่าง:

  1. ติดตั้งเซิร์ฟเวอร์ SSH บนเครื่อง Windows, SSH ใน, เรียกใช้ Powershell บนกล่อง Windows
  2. เรียกใช้ไคลเอนต์ RDP บน Linux, RDP ใน, เรียกใช้ Powershell บนกล่อง Windows
  3. ใช้ Powershell Web Access กดบราวเซอร์เซิร์ฟเวอร์ POSH WA ที่มีเบราว์เซอร์เรียกใช้ Powershell ผ่านเบราว์เซอร์

http://technet.microsoft.com/en-us/library/hh831611.aspx

ฉันไม่ทราบถึง POSH executables ใด ๆ สำหรับ Linux ดังนั้นคุณจึงไม่สามารถเรียกใช้คำสั่ง POSH โดยตรงจากเชลล์ใน Linux - คุณต้องเข้าสู่เครื่อง Windows ก่อนเช่น RDP, คอนโซลระยะไกล (DRAC, iLO), SSH, หรือ POSH Web Access

/ แก้ไข - ดูเหมือนว่ามีตัวเลือกบางอย่าง http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html

คุณสามารถลองและให้ OpenWSMan ทำสิ่งที่คุณต้องการ แต่ฉันคิดว่าคุณต้องสร้างทุกคำสั่งเหมือนคำขอ URL แทนที่จะออกคำสั่ง Powershell ที่ถูกต้อง - อย่างที่ฉันบอกว่าไม่มี Powershell จริงสำหรับ Linux คุณสามารถติดตั้ง WinRB ruby ​​gem ในเครื่อง Windows ทุกเครื่องแล้วเรียกใช้รหัส Ruby บนกล่อง Linux ของคุณเพื่อเรียกคำสั่ง Powershell

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

/ แก้ไขอีกครั้ง - ใช่MSDN บอกว่าสิ่งนี้มีแนวโน้มที่จะน่าเกลียด / ไม่น่าดู แม้แต่โซลูชันที่เรียบง่าย / มีประสิทธิภาพที่เขาให้ดูเหมือนไม่สนุก

แม้ว่าการเรียบเรียง Powershell ถูกสร้างขึ้นบน WS-Management เป็นโปรโตคอลจริงๆภายในโปรโตคอลและพยายามที่จะทำงานร่วมกับ PSRP (Powershell Remoting Protocol) โดยตรงจะต้องจำลองแบบ Powershell บนไคลเอนต์โดยตรง


สิ่งนี้สามารถทำงานได้ ... แต่ฉันต้องติดตั้งเซิร์ฟเวอร์ SSH ใน Windows Server ทุกเครื่อง เท่าที่ฉันรู้ PowerShel ใช้ WS-Management, Open Standard ... มีไคลเอนต์ Linux ที่ทำให้การเชื่อมต่อชนิดนี้คืออะไร?
Ederson

2
ไม่ครับท่าน. เมื่อคุณมีเชลล์บนกล่อง Windows (สมมติว่ามันอยู่ในโดเมนเดียวกับกล่อง Windows อื่น ๆ ) คุณสามารถใช้ Powershell Remoting หรือคุณสามารถใช้ DSC, การกำหนดค่าสถานะที่ต้องการ หรือคุณอาจกำลังทำงานกับสิ่งต่าง ๆ เช่น AD หรือ MS Exchange ที่ไม่ทำงานบนเซิร์ฟเวอร์เดียวอย่างไรก็ตามเชื่อมต่อไปยังไดเรกทอรีโดยใช้เซิร์ฟเวอร์ DC หรือ CAS อะไรก็ได้
mfinni

2
Once you have a shell on a Windows box you can use Powershell Remoting.- โปรดทราบว่าคุณเกือบจะพบปัญหาการรับรองความถูกต้องแบบ 2-hop ด้วยวิธีนี้ คุณเกือบจะต้องใช้การรับรองความถูกต้อง CredSSP
Zoredache

เขาจะพบปัญหานี้หรือไม่หากทำตามสองวิธีแรกอย่างใดอย่างหนึ่งต่อไปนี้ ฉัน (ฉันคิดว่า) รู้ว่าคุณไม่มีปัญหาในการใช้ RDP
mfinni

1
เพิ่งทราบว่า Pash ( github.com/Pash-Project/Pash ) อาจมีความสามารถนี้ในบางจุด แต่อาจเป็นไปได้ว่าในอนาคตอันใกล้ พวกเขายังคงพยายามนำพื้นฐานของ PowerShell มาใช้งานในตอนนี้
supercheetah

6

Microsoft เปิดตัว Powershell อย่างเป็นทางการบน Linux และ OSX ดูประกาศ 2559 สิงหาคม: PowerShell เปิดให้บริการและมีอยู่ใน Linux

ปัจจุบันอยู่ในอัลฟ่า รองรับ Ubuntu และ Centos อย่างเป็นทางการมากขึ้น หากคุณชอบผจญภัยสามารถดูคำแนะนำการติดตั้งได้ที่นี่: https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md


4

ใช่คุณมี 2 ตัวเลือก:

  1. คุณสามารถติดตั้งเซิร์ฟเวอร์ SSHd บน windows และในการตั้งค่าพา ธ ไปยัง PowerShell

    สำหรับสิ่งนี้คุณสามารถใช้บทช่วยสอนสำหรับการติดตั้ง SSHdและ กำหนดค่าพา ธ PowerShell

    ในระยะสั้น:

    1. ติดตั้ง freeSSHd
    2. เพิ่มบัญชีผู้ใช้ใหม่และอนุญาตการเข้าถึง SSH
    3. เปิดใช้งานพอร์ต SSH ในไฟร์วอลล์ Windows
    4. กำหนดค่าพา ธ ไปยัง PowerShell.exe
  2. การเข้าถึงเว็บ PowerShell (เฉพาะ Win Server 2012 R2)

    มีคุณมีหนึ่งการสอนเกี่ยวกับ Technet - blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx


สิ่งนี้สามารถทำงานได้ ... แต่ฉันต้องติดตั้งและกำหนดค่าเซิร์ฟเวอร์ SSH ใน Windows Server ทุกเครื่อง เท่าที่ฉันรู้ PowerShell ใช้ WS-Management, Open Standard ... มีไคลเอนต์ Linux ที่ทำให้การเชื่อมต่อชนิดนี้คืออะไร?
Ederson

ฉันได้เพิ่มตัวเลือกหนึ่งพร้อมลิงก์ถ้าคุณสามารถ 2012 R2 ได้นี่จะช่วยคุณได้ แต่ก็ยังไม่ใช่ "ในตัว" และกับลูกค้า คุณเข้าถึงผ่านเบราว์เซอร์
zorbon.cz

3

ทดสอบใน Ubuntu 14.04 LTS

ดาวน์โหลดและติดตั้ง winexe:

wget https://passing-the-hash.googlecode.com/files/winexePTH1.1.0-1.deb

dpkg -i winexePTH1.1.0-1.deb

การใช้งานขั้นพื้นฐาน

winexe -U DOMAIN/USERNAME%PASSWORD //MACHINEIP "cmd.exe"

ตัวอย่างเช่น:

echo -ne '\n' | winexe -U DOMAIN/USERNAME%PASSWORD //IP 'powershell.exe -command "Get-Process | Select-Object Name, ProcessName"' | sort -u

2
โปรดเพิ่มรายละเอียดเพิ่มเติมเพื่ออธิบายคำตอบนี้ ...
Pierre.Vriens

2

นอกจากนี้คุณยังสามารถติดตั้ง win32-openSSH ด้วยมือได้จากhttps://github.com/PowerShell/Win32-OpenSSHหรือผ่าน Chocolatey https://chocolatey.orgหรือเร็วกว่าผ่านทาง Boxstarter (ซึ่งใช้ Chocolatey ภายใต้ประทุน) https: // boxstarter.org (ติดตั้งอย่างรวดเร็วhttps://boxstarter.org/packages/nr/win32-openssh )

ใช้เวลาตั้งค่าเล็กน้อย แต่เป็นพอร์ตดั้งเดิม (ใช่จริง!) win32 ดูแลโดย Microsoft ที่ทำ PowerShell

อย่างที่ใครบางคนพูดถึงคุณสามารถติดตั้ง WinRM gem บน Linux และรับการเชื่อมต่อเล็กน้อยผ่านโพรโทคอล WinRM แต่นั่นก็ไม่ดีเท่าการเริ่มต้น PSSession

นอกจากนี้ผู้ใช้ที่อยู่เบื้องหลัง WinRM gem (WinRb) ก็กำลังมองหาการใช้การโต้ตอบแบบดั้งเดิมของ PowerShell ที่ใช้ PowerShell ผ่าน WinRM ซึ่งจะทำงานได้ดีกว่าสำหรับการอัปโหลดและเร็วขึ้นสำหรับการดำเนินการอื่น ๆ เช่นกัน ดูโพสต์บล็อกนี้http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-ruby-cross-plaform-len

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