PowerShell提供的最好的特性之一是能夠遠端管理伺服器。它甚至可以讓你同時管理一堆。
請務必閱讀本系列之前的文章:
整個星期請繼續關注本系列的其餘部分。
伺服器的批次管理可能會很乏味,如果您以前必須在50個Web伺服器上更改IIS配置,您就會明白我的意思。在這種情況下,PowerShell遠端處理和該語言的指令碼能力可以起到解救作用。使用HTTP或更安全的HTTPS,PowerShell遠端處理允許您向網路上的遠端計算機發送命令。然後,機器執行命令並將輸出傳送回您,這些輸出依次顯示在您的螢幕上。
PowerShell遠端處理的核心是一個Windows服務,即眾所周知的Windows遠端管理或WinRM服務。使用WinRM,您可以設定一個或多個會話配置(也稱為端點),這些配置基本上是包含有關您要向連線到遠端PowerShell例項的人員提供的體驗的資訊的檔案。更具體地說,您可以使用會話配置檔案來定義誰可以連線到例項,誰不能連線到例項,它們可以執行什麼cmdlet和指令碼,以及會話必須在什麼安全上下文下執行。使用WinRM服務,還可以設定“偵聽器”,偵聽傳入的PowerShell請求。這些“偵聽器”可以是HTTP或HTTPS,並且可以繫結到您計算機上的單個IP地址。當您開啟到另一臺計算機的PowerShell連線時(技術上這是使用基於HTTP的WS-MAN協議完成的),連線將繫結到這些“偵聽器”之一。然後,“監聽器”負責將通訊量傳送到與相應會話配置檔案關聯的應用程式;應用程式(通常是PowerShell,但如果需要,可以有其他宿主應用程式)然後執行命令,並透過“監聽器”將結果反饋到整個網路,然後反饋到您的伺服器上機器。
您需要做的第一件事是在要連線的計算機上啟用遠端處理。這可以透過執行以下命令來完成:
Enable-PSRemoting
然後您需要對所有提示回答yes。執行Enable PSRemoting時,會對您的電腦進行一些更改:
如果您執行的是Windows 7,並且網絡卡的位置設定為Public,則啟用PowerShell遠端處理將失敗。要解決這個問題,只需切換到家庭或工作網路位置。或者,您可以使用以下方法跳過網路檢查:
Enable-PSRemoting –SkipNetworkProfileCheck
但是,我們建議您更改您的網路位置。
使用PowerShell連線到另一臺機器有兩種方法。有一對一的方法,這與使用SSH非常相似,還有一對多的方法。
使用PowerShell連線到遠端計算機的第一種方法是使用稱為PowerShell會話的東西。簡單地說,會話允許您以互動方式在遠端機器上執行命令,這與您在自己的機器上執行命令的方式非常相似。要開啟會話,只需鍵入以下內容:
Enter-PSSession –ComputerName “Darlah”
提示符將獲得一個字首,該字首表示執行cmdlet的計算機。
從這裡,您可以真正地對待提示符,就像您坐在遠端機器上一樣。例如,如果要檢視C:\驅動器上的所有檔案,可以執行以下操作:
Get-ChildItem –Path C:\
如果您來自Linux背景,可以考慮使用這種一對一的遠端處理方法作為SSH的PowerShell替代方法。
在遠端計算機上使用PowerShell的第二種方法是使用Invoke命令。使用Invoke命令的優勢在於,您可以在多臺計算機上同時執行同一個命令。可以想象,當您想從伺服器收集事件日誌時,這一點特別有用。Invoke命令遵循以下語法:
Invoke-Command -ComputerName Darlah,localhost -ScriptBlock {Get-EventLog Application -Newest 2}
由於該命令是在所有機器上並行執行的,因此您需要一些方法來檢視給定結果來自哪臺PC。您可以透過檢視PSComputerName屬性來實現這一點。
當您使用Invoke命令時,您不再擁有管道中可能需要的物件。您知道,為了讓PowerShell從遠端機器獲取資訊並返回到您的機器,它們需要某種方式來表示您在遠端機器上執行的命令輸出的物件。如今,表示分層資料結構的最佳方法似乎是使用XML,這意味著當您使用Invoke命令發出命令時,結果首先序列化為XML,然後再發送回您的計算機。一旦它們返回到您的機器,它們就會反序列化為一個物件;這裡的問題是,當它們被反序列化時,物件擁有的所有方法(ToString()方法除外)都會從中剝離。
注意:此規則有一些例外,例如,大多數基本型別(如integers)都可以在包含其方法的情況下反序列化。還有一個稱為重水化的過程,其中可以將一些方法添加回反序列化物件。所以要小心,記住會員是你的朋友。
使用Windows10的PowerShellcmdlet,您可以輕鬆地新增應用程式,以便在啟動時自動觸發VPN連線。自動化這個任務意味著當你使用某些應用程式時,你甚至不必考慮連線到VPN。 要利用PowerShell中的此功能,如果您還沒有VPN服務,則必須...
PowerShell遠端處理允許您在遠端Windows系統上執行PowerShell命令或訪問完整的PowerShell會話。它類似於SSH,用於訪問其他作業系統上的遠端終端。 PowerShell在預設情況下是鎖定的,因此在使用它之前必須啟用PowerShell遠端處理。如果您...
Windows PowerShell具有內建的命令歷史記錄功能,可提供有關已執行命令的詳細資訊。與命令提示符一樣,PowerShell只記住當前會話的命令歷史記錄。 如何使用命令列緩衝區 相關:極客學校:學習如何用PowerShell自動化Windows PowerShel...
...論您是在Linux上使用bashshell,在Windows上使用命令提示符或PowerShell,還是在macosx上使用終端視窗。 此功能可以極大地幫助您加快鍵入命令的速度。只需在鍵入命令、選項或檔名時單擊Tab,shell環境就會自動完成您鍵入的內容或向...
Windows7增加了PowerShell,一種比命令提示符更強大的命令列shell和指令碼語言。自Windows7以來,PowerShell變得更加突出,它甚至成為Windows10的預設選擇。 PowerShell比傳統的命令提示符更復雜,但它也更強大。命令提示符明顯不如Linux...
我們的極客學校文章可能會變得相當複雜,沒有理由在你自己的臺式電腦上做大量瘋狂的事情。相反,你可以像我們一樣建立虛擬機器來進行所有測試。下面是如何做到這一點。 您甚至可以將多個虛擬機器連線在一起,因此只...
...的計算機上一次啟動的時間。在上一次安裝Geek School for PowerShell時,我們將編寫一個可重用的PowerShell命令來完成同樣的任務。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動化Windows 學習在PowerShell中使用cmdlet 學習如...
PowerShell為您提供了兩種擴充套件shell的方法。您可以使用管理單元,它是二進位制的,並且是用成熟的程式語言(如C#)開發的,也可以使用模組,它可以是二進位制的,也可以是基於指令碼的。 請務必閱讀本系列之前的文章...
PowerShell有四種類型的作業—後臺作業、遠端作業、WMI作業和計劃作業。加入我們,瞭解它們是什麼以及如何使用它們。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動化Windows 學習在PowerShell中使用cmdlet 學習如何在Po...
由於PowerShell基於.Net框架,並結合了各種其他技術,如WMI和CIM,因此實現同一目標的方法總是不止一種。快來加入我們,學習如何選擇最佳的方法來完成我們的任務。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動...