標籤:des style blog http color 使用
此處指的是windows7
1.防火牆設定
開啟wmi,remoteadmin
2.修改Powershell執行策略
Set-ExecutionPolicy RemoteSigned
3.安裝powershell3.0
查看版本辦法
PS下$host
或則
$psvertiontable
檢查winrm版本
winrm id
4.在提權的命令列下建立管理員帳號,加入Administrator 群組
net user test * /add /comment:"test user" /expires:never /fullname:"xx”
net localgroup administrators test /add
查看使用者和組,net user test
net localgroup administrators
5.命名網卡串連LAN0,LAN1,LAN-free,設定網路環境為專用網路6.配置winRM
前提:提權的command下運行
被管理端:
winrm quickconfig
遠程執行指令的兩種方式
winrm –r:computername command
icm hostname {powershell-command}
icm是Invoke-Command的簡寫
管理用戶端(不在powershell下):
6.1 WinRM quickconfig //配置winrm服務,防火牆例外設定,啟動winrm listener
6.2 winrm set winrm/config/client @{TrustedHosts=”remote-computer-name”} //設定信任的用戶端
(另一種方式
# Enabled Trusted Hosts for Universial Access
cd wsman:
cd localhost\client
Set-Item TrustedHosts * -force
restart-Service winrm
)
6.3 確定winrm在運行:get-service winrm
6.4 enable-psremoting –force (不確定是否要執行,應該是在被管理端執行)
參見:http://tech.ccidnet.com/art/302/20100701/2102911_1.html
http://technet.microsoft.com/en-us/library/hh849694.aspx
當執行該cmdlet時執行了以下操作,其中包括:
1. 啟動或重新啟動(如果已啟動) WinRM 服務。
2. 將 WinRM 服務類型設定為自動啟動。
3. 在本機電腦上建立一個接聽程式以接受任意 IP 位址上的請求。
4. 對 WS-Management 流量啟用防火牆例外(僅適用於 http),如果要啟用PS遠端管理,此時網路位置不能被設定為public,因為Windows 防火牆例外不能在網路位置是public時被啟用。
5.啟用所有註冊的PS線程配置資訊。
The Enable-PSRemoting cmdlet performs the following operations:
-- Runs the Set-WSManQuickConfig cmdlet, which performs the following tasks:
----- Starts the WinRM service.
----- Sets the startup type on the WinRM service to Automatic.
----- Creates a listener to accept requests on any IP address.
----- Enables a firewall exception for WS-Management communications.
----- Registers the Microsoft.PowerShell and Microsoft.PowerShell.Workflow session configurations, if it they are not already registered.
----- Registers the Microsoft.PowerShell32 session configuration on 64-bit computers, if it is not already registered.
----- Enables all session configurations.
----- Changes the security descriptor of all session configurations to allow remote access.
----- Restarts the WinRM service to make the preceding changes effective.
預設情況下,PowerShell遠端管理使用5985(http)和5986(https)連接埠
當給Enable-PSRemoting cmdlet增加-force參數後執行將會在靜默狀態下啟用遠端管理,PowerShell遠端管理是不能通過遠程啟用的。
如果遠端管理被啟用了,可以使用下面的cmdlet查看:
PS C:\ > Enter-PSSession –ComputerName localhost
使用者將會看到如2所示的提示符:
6.5 winrs -r:Remote-computer-name whoami //測試winrm串連,此處用whoami直接用本機使用者名稱
winrs -r:Remote-computer-name ipconfig //在遠程被管理端測試ipconfig
進入Powershell,
6.6 Get-Process | Sort-Object -Property CPU -Descending | Select -First 10 //原生前10個進程
icm Remote-computer-name {Get-Process | Sort-Object -Property CPU -Descending | Select -First 10} //被管理的遠端主機的前10個進程
一對多管理:
Invoke-Command -ComputerName WinServ-wfe, SQL-Server2008 -ScriptBlock {Get-Process}
或
Invoke-Command -ComputerName (get-content c:\scripts\servers.txt) -ScriptBlock {Get-Process}
這種方式也被稱之為散開式或一對多遠端管理。使用者能用一條命令在多台主機上執行相同的命令。
指令碼塊中所有的命令和變數均會在遠端電腦上運行。如果使用者採用類似於-ScriptBlock {Get-Process –Name $procName},PowerShell認為遠端電腦線程中$procName變數已經定義過了。使用者能通過使用Invoke-Command命令,將本機電腦上的變數傳遞到遠程線程。
2.2 傳遞變數到遠程線程
前面的例子中,使用者可以傳遞要尋找的進程名作為變數。ArgumentList參數能協助使用者傳遞到遠程線程中:
$procName = "powershell"
Invoke-Command -ComputerName (get-content c:\scripts\servers.txt) ` -ScriptBlock {param ($Name) Get-Process -Name $Name} –ArgumentList $procName
上面的例子中可以顯示如何使用-ArgumentList參數傳遞本地變數到遠程線程。