A. 如何在遠程伺服器上運行PowerShell命令
PowerShell在用戶管理和維護Windows方面是一個強大的命令行環境。雖然PowerShell是一個本地管理工具,但是它也用於管理遠程伺服器。事實上,管理員可以針對大量的伺服器創建PowerShell腳本來執行管理任務。Invoke-Command和New-PSSession都是在遠程伺服器中PowerShell的執行命令。
Invoke-Command
如果你只需要針對單台或者多台遠程伺服器執行一個命令(或者一系列的管道命令),那麼最便利的方法就是使用Invoke-Command命令。Microsoft的文檔列出了絕大多數的參數和語法,導致人人皆知Invoke-Command命令的復雜性。即使如此,使用Invoke-Command在遠程系統上執行命令仍然出奇地容易。
對於基本的遠程命令執行,你只需要提供遠程計算機的名稱和想要執行的代碼塊。假設你想要在名稱為Proction1的遠程伺服器上執行Get-VM命令,你可以使用下面的命令:
Invoke-Command –ComputerName Proction1 {Get-VM}
雖然這看起來很簡單,但是你也要對使用這個方法了解以下幾點。
首先,Invoke-Command命令不限制你在一個遠程系統上執行命令,你可以在多個計算機上指定命令,你需要做的就是使用命令區分開這些計算機的名稱。例如,在Proction1,Proction2和Proction3計算機上執行命令如下:
Invoke-Command –ComputerName Proction1, Proction2, Proction3 {Get-VM}
第二點,你必須要知道雖然這個方式的設計目的只是簡單地在單個遠程系統上運行的單一命令,但是你也可以運行多個命令。如果查看之前的幾行代碼,你會注意到允許在遠程計算機上運行的Get-VM命令是包含在花括弧裡面的。任何在花括弧裡面的命令都會在指定的遠程計算機行運行。同樣的,只要所有的命令都包含在花括弧裡面,你可以使用管道符號把命令把它們鏈接在一起。
第三點你必須知道上面的語法只有在所有計算機中使用了Kerberos認證才會運行,同時包括有命令輸入和已經加入了域。否則,你必須使用HTTPS傳輸,並且必須指定遠程系統是受信任的主機。