工做組環境下管理windows.

此處指的是windows7html

1.防火牆設置

  開啓wmi,remote admin,防火牆遠程管理shell

可使用命令行windows

netsh advfirewall export "C:\temp\WFconfiguration.wfw"
     netsh advfirewall import "C:\temp\WFconfiguration.wfw"  網絡

2.修改Powershell執行策略

Set-ExecutionPolicy RemoteSigned
能夠用腳本從批處理調用,參考http://stackoverflow.com/questions/932291/calling-powershell-cmdlets-from-windows-batch-file
http://www.computerperformance.co.uk/powershell/powershell_cmdlet.htm

Starting with Powershell version 2, you can run a Powershell script like so...session

powershell -ExecutionPolicy RemoteSigned -File "C:\Path\Script.ps1" "Parameter with spaces" Parameter

3.安裝powershell3.0

查看版本辦法
PS下$host
或則

$psvertiontable測試

檢查winrm版本ui

winrm idspa

4.在提權的命令行下創建管理員帳號,加入管理員組

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的簡寫

client(發起訪問的一方)配置(不在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參數傳遞本地變量到遠程線程。

相關文章
相關標籤/搜索