批量添加VM端口的操做

批量添加VM端口的操做windows


準備工做  下載Azure PowerShell並鏈接China Azuretcp

從官網下載頁面,下載並安裝Windows Azure PowerShell: http://www.windowsazure.cn/zh-cn/downloads/#cmd-line-toolside


2.  安裝完畢後以管理員身份運行,右鍵點擊PowerShell圖標而後選擇以管理員身份運行;測試


3.  執行命令Get-AzurePublishSettingsFile -Environment "AzureChinaCloud",經過打開的頁面下載您的Windows Azure Subscription的發佈配置文件;ip



4.  在PowerShell中執行Import-AzurePublishSettingsFile "發佈配置文件本地存放路徑";cmd


方案一:批量添加自定義的端點虛擬機


備註:該例子針對一個虛擬機,添加了三個端口:it


端口名稱協議公用端口私有端口io

MyPort1tcp50015001class

MyPort2tcp50025002

MyPort3udp50035003


該例子中,雲服務名稱與虛擬機名稱均爲:JohnsonLinux。若是須要添加更多的端口,那麼能夠按照相應格式,將端口配置添加到$newVmEndpoints。格式爲:("端口名稱","協議","公用端口","私有端口")


$serviceName = "JohnsonLinux"

$name = "JohnsonLinux"


$newVmEndpoints = ("MyPort1","tcp",5001,5001) ,("MyPort2","tcp",5002,5002) ,("MyPort3","udp",5003,5003)


$myVm = Get-AzureVM -ServiceName $serviceName -Name $name


foreach ($endpointConfig in $newVmEndpoints)

{

$myVm | Add-AzureEndpoint -Name $endpointConfig[0] -Protocol $endpointConfig[1] -PublicPort $endpointConfig[2] -LocalPort $endpointConfig[3]

}


$myVm | Update-AzureVM



方案二:批量添加某一範圍的端點


下面是腳本中的一些參數說明,請您相應的替換。


$serviceName  VM所屬的雲服務名稱

$name  VM名稱

$portFrom  起始端口號

$portTo  終止端口號

$protocal  協議名稱



下面的例子中:


1.       咱們添加了1001-1100號TCP端點,共100個。

2.       公共端口和私有端口的值一致。

3.       端點的名稱的格式爲:協議名稱+端口號。

4.       若是已經添加了某一個端口,則該腳本會略過該端口。

5.       同時,咱們測試的過程當中發現,目前咱們最多隻能開放150個端口。


$serviceName = "JohnsonLinux"

$name = "JohnsonLinux"

$protocol = "tcp"

$portFrom = 1000

$portTo = 1100


$myVm = Get-AzureVM -ServiceName $serviceName -Name $name

$vmsInTheCloudService = Get-AzureVM -ServiceName $serviceName


$existingPublicPorts = New-Object System.Collections.ArrayList

$existingLocalPorts = New-Object System.Collections.ArrayList



foreach($vm in $vmsInTheCloudService)

{

foreach($endpoint in $vm | Get-AzureEndpoint)

{

if($protocol.Equals($endpoint.Protocol))

{

$existingPublicPorts.Add($endpoint.Port)

$existingLocalPorts.Add($endpoint.LocalPort)

}

}

}


for($index = $portFrom; $index -le $portTo; $index++)

{

if(!$existingPublicPorts.Contains($index) -and !$existingLocalPorts.Contains($index))

{

$portName = $protocol + $index

$myVm | Add-AzureEndpoint -Name $portName -Protocol $protocol -PublicPort $index -LocalPort $index

}


}


$myVm | Update-AzureVM


下面是運行該腳本之後的部分結果截圖:

相關文章
相關標籤/搜索