Mengelola Windows Powershell dari terminal Linux

31

Saya mengelola server Windows Server 2012. Saya belajar PowerShell untuk mengelola server ini melalui baris perintah. Workstation saya menjalankan Ubuntu dan saya biasanya mengelola server Linux dengan menghubungkan melalui SSH.

Apakah ada cara saya dapat menggunakan Windows PowerShell di Windows Server dari workstation Linux saya melalui baris perintah seperti akses SSH di Linux?

Ederson
sumber
Ada produk pihak ke-3 yang menyediakan server SSH untuk Windows dengan PowerShell sebagai shell default. misalnya powershellserver.com
Zoredache
6
Secara pribadi saya lebih suka mengelola Windows dari mesin Windows (virtual), dan Linux dari mesin Linux. Ini sepertinya membantu menjaga apa yang tersisa dari kewarasan saya.
Michael Hampton
Saya mendapatkan apa yang Anda coba capai, tetapi selama Anda dapat menjalankan perintah PowerShell pada satu host windows tidak bisakah Anda mengelola yang lain dari sesi PS?
Andy
@Andy - maksud saya tepatnya.
mfinni
Saya mulai tertarik dengan proyek Pash ( github.com/Pash-Project/Pash ). Mereka ingin mengimplementasikan kembali PowerShell di Linux. Saya sekarang sedang mencoba untuk mengkompilasi pada mesin Raspberry Pi untuk melihat apakah saya dapat mengeluarkan perintah shutdown dari jarak jauh
usr-local-ΕΨΗΕΛΩΝ

Jawaban:

15

Beberapa opsi:

  1. Instal server SSH pada mesin Windows, masuk SSH, jalankan Powershell pada kotak Windows
  2. Jalankan klien RDP di Linux, RDP masuk, jalankan Powershell di kotak Windows
  3. Gunakan Powershell Web Access, tekan server gateway POSH WA dengan browser, jalankan Powershell melalui browser

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

Saya tidak mengetahui adanya executable POSH untuk Linux, jadi Anda tidak dapat menjalankan perintah POSH langsung dari shell di Linux - Anda harus terlebih dahulu masuk ke mesin Windows, seperti RDP, konsol jarak jauh (DRAC, iLO), SSH, atau Akses Web POSH.

/ Edit- sepertinya ada beberapa opsi. http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html

Anda bisa mencoba dan membuat OpenWSMan melakukan apa yang Anda inginkan, tetapi saya pikir Anda harus membuat setiap perintah seperti permintaan URL daripada hanya mengeluarkan perintah Powershell yang benar - seperti yang saya katakan, tidak ada Powershell sebenarnya untuk Linux. Anda dapat menginstal permata ruby ​​WinRB pada setiap mesin Windows dan kemudian menjalankan kode Ruby pada kotak Linux Anda untuk memanggil perintah Powershell.

Dalam kedua kasus itu, tampaknya Anda tidak akan mendapatkan pengalaman Powershell interaktif, seperti penyelesaian-tab, bantuan, dll. Ini sepertinya untuk menjalankan skrip atau perintah tunggal, dan Anda mungkin harus menangkap kesalahan atau umpan balik lainnya. Anda sendiri. Anda tidak akan mendapatkan solusi kelas satu di Linux.

/ Edit lagi - ya, MSDN mengatakan bahwa ini akan cenderung jelek / kikuk. Bahkan solusi sederhana / efektif yang ia berikan tampak tidak menyenangkan.

Meskipun remoting Powershell dibangun di atas WS-Management, itu benar-benar sebuah protokol dalam protokol dan mencoba untuk melakukan interop dengan PSRP (Powershell Remoting Protocol) secara langsung pada dasarnya akan membutuhkan replikasi Powershell pada klien.

mfinni
sumber
Ini dapat melakukan pekerjaan ... tapi saya harus menginstal server SSH pada setiap Windows Server. Sejauh yang saya tahu, PowerShel menggunakan WS-Management, sebuah Open Standard ... ada klien Linux yang membuat koneksi seperti ini?
Ederson
2
Tidak pak. Setelah Anda memiliki shell di kotak Windows (dengan asumsi itu dalam domain yang sama dengan kotak Windows lainnya), Anda dapat menggunakan Powershell Remoting. Atau Anda bisa menggunakan DSC, Desired State Config. Atau Anda mungkin sedang mengerjakan hal-hal seperti AD atau MS Exchange yang tidak beroperasi pada satu server, tetapi terhubung ke direktori menggunakan server DC atau CAS apa pun yang tersedia.
mfinni
2
Once you have a shell on a Windows box you can use Powershell Remoting.- Perlu diketahui bahwa Anda hampir pasti akan mengalami masalah otentikasi 2-hop dengan ini. Anda hampir pasti perlu menggunakan otentikasi CredSSP.
Zoredache
Apakah dia akan mengalami masalah ini jika mengejar salah satu dari dua metode pertama? Saya (rasa saya) tahu bahwa Anda tidak memiliki masalah menggunakan RDP.
mfinni
1
Sebagai catatan, Pash ( github.com/Pash-Project/Pash ) mungkin berpotensi memiliki kemampuan ini di beberapa titik, tetapi itu kemungkinan akan cukup jauh di masa depan. Mereka masih berusaha untuk hanya menerapkan dasar-dasar PowerShell untuk saat ini.
supercheetah
4

Ya, Anda memiliki 2 opsi:

  1. Anda dapat menginstal server SSHd di windows dan dalam konfigurasi mengatur jalur ke PowerShell.

    Untuk ini, Anda dapat menggunakan tutorial untuk pemasangan SSHd dan konfigurasi lintasan PowerShell.

    Pendeknya:

    1. Instal freeSSHd
    2. Tambahkan akun pengguna baru dan izinkan akses SSH
    3. Aktifkan port SSH di Windows Firewall
    4. Konfigurasikan jalur ke PowerShell.exe
  2. Akses Web PowerShell (Hanya Win Server 2012 R2)

    Di sana Anda memiliki satu tutorial tentang Technet - blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx

zorbon.cz
sumber
Ini dapat melakukan pekerjaan ... tapi saya harus menginstal dan mengkonfigurasi server SSH pada setiap Windows Server. Sejauh yang saya tahu, PowerShell menggunakan WS-Management, sebuah Open Standard ... ada klien Linux yang membuat koneksi seperti ini?
Ederson
Saya menambahkan satu opsi dengan tautan, jika Anda dapat 2012 R2 maka ini dapat membantu Anda. Tapi tetap tidak "built-in" dan dengan klien. Anda mengaksesnya melalui browser.
zorbon.cz
3

Diuji di Ubuntu 14,04 LTS

Unduh dan pasang winexe:

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

dpkg -i winexePTH1.1.0-1.deb

Penggunaan dasar

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

Sebagai contoh:

echo -ne '\n' | winexe -U DOMAIN/USERNAME%PASSWORD //IP 'powershell.exe -command "Get-Process | Select-Object Name, ProcessName"' | sort -u
eishv
sumber
2
Harap tambahkan beberapa detail lagi untuk menjelaskan jawaban ini ...
Pierre.Vriens
2

Anda juga dapat menginstal win32-openSSH dengan tangan dari https://github.com/PowerShell/Win32-OpenSSH atau melalui Chocolatey https://chocolatey.org atau bahkan lebih cepat melalui Boxstarter (yang menggunakan Chocolatey di bawah tenda) https: // boxstarter.org (instal cepat https://boxstarter.org/packages/nr/win32-openssh ).

Dibutuhkan sedikit pengaturan, tetapi ini adalah port win32 asli (yeah, for real!) Yang dikelola oleh Microsoft melakukan PowerShell.

Kalau tidak seperti yang disebutkan seseorang Anda bisa menginstal permata WinRM di Linux dan mendapatkan sedikit konektivitas melalui protokol WinRM, tapi itu tidak sebaik hanya memulai PSSession.

Selain itu, orang-orang di balik permata WinRM (WinRb) juga ingin menerapkan interaksi PowerShell yang lebih asli yang menjadikan PowerShell lebih unggul dari WinRM yang akan lebih fungsional untuk unggahan dan lebih cepat untuk operasi lain. Lihat posting blog ini, http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-ruby-cross-plaform-len

dragon788
sumber