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