批量添加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
下面是運行該腳本之後的部分結果截圖: