以Windows 8.1遙控另一台服務器執行Powershell指令的步驟

以Windows 8.1遙控另一台服務器執行Powershell指令的步驟

自從有了PowerShell, 很多工作都可以經由一組指令去完成以往很繁複(或根本沒可能)的動作

Powershell是近來微軟大力發展的方向, 新的Windows Server 2012 R2就已包含1609個基本的指令 (今天的數據)

而且在網絡保安上, 以Powershell來控制其他電腦, 也讓我們可以把遠端桌面的連接埠關閉, 網絡攻擊面也就可以受窄了

 

無論在不在網域裡, 要被連線的遠端電腦先要進行winrm –quickconfig的設定令它能夠接受遠端指令.

而Windows Server 2012 R2是預設已經進行設定的.

 

在Client端電腦上, 先要確定winrm服務有啟用, Windows 8.1預設沒有啟用這個服務.

 

以系統館理員身份執行PowerShell, 我也推薦大家使用Powershell ISE, 比純粹的Powershell介面多了很多協助

現在先確認Winrm服務有沒有執行

Get-Service Winrm

如果沒有執行, 請執行Start-Service Winrm

image

 

如果客戶端電腦已經加入到網域中, 是比較簡單的, 但總會有些時候你不在目標網域.

要令非網域電腦能夠控制另一台網域電腦並執行它的Powershell指令是有點分別的

我們先要把目標電腦的電腦名稱加入到客戶端的信任清單當中

要檢查信任清單, 可以使用以下指令

winrm get winrm/config/client

預設的信任電腦是空白的(TrustedHosts)

image

要把某台電腦放入信任清單, 例如我最愛的一台sofs01, 可以鍵入如下指令

winrm s winrm/config/client '@{TrustedHosts="sofs01"}'

image

如果你說反正我要做的東西我自己是很清楚的, 也可以把所有東西信任…

 winrm s winrm/config/client '@{TrustedHosts="*"}'

image

現在我們就要向sofs01先建立好一條Powershell Session的連線,

要建立連線, 可以用New-PSSession –ComputerName sofs01

如果你是網域電腦, 這樣可能就可以了, Powershell會嘗試連線過去, 你也可以以 –Aithentication 指定驗證的方式

image

如果你是非網域電腦, 就需要以-Credential 指定一個可以登入的使用者帳號, 鍵入指令後需要輸入密碼

image

要檢視現已建立的所有連線和它們的ID, 可以鍵入

Get-PSSession

image

現在我們可以看到我們已經向sofs01建立了一個Powershell連線, 而連線編號為35

要進入這個連線, 可以使用以下指令

Enter-PSSession –id 35

現在已經可以以Powershell控制sofs01這台電腦了

image

例如這是一台檔案服務器, 我們可以試試Windows Server 2012 R2的新指令get-smbshare以檢查上面的檔案分享

image

如果你已經完成遠端控制, 要回到自己的電腦, 可以鍵入

Exit-PSSession

要證明我們已經退出到自己的電腦, 我們又來看看get-smbshare有甚麼回應

image

要把現有的連線關閉, 我們可以使用Remove-PSSession

image

希望這個教學可以幫助大家更簡易地以Powershell館理你們的網絡環境