近期为项目组在Azure上的VM启用了一个FTP服务,启用FTP后通过正常的配置后,FTP Client无法连接到FTP以致上传数据,经过查找资料后,因为Azure上的VM是在防火墙之后,所以需要选择为动态协议才可以,以致需要开发一段动态地址才可以访问,因为我按照网上文档的操作方法进行配置的,暂时开放了50个端口,如果在Azure的Portal上添加50个端口的话至少需要5-10分钟,所以相对效率比较地下,最终使用powershell 进行批量添加终结点,成功添加后,还不错,所以在此分享给有需要的朋友,所以今天主要介绍的是如果使用Azure Powershell来批量添加VM的终结点。在此我们需要注意一个问题,在Azure上目前最大只支持添加150个终结点,具体见下:

我们前面也介绍过,如果使用Azure powershell来管理Azure的功能我们是需要下载Azure订阅文件(证书文件),然后导入到本地的Azure powershell中才可以对Azure平台的服务进行管理。所以我们需要首先下载Azure powershell并且连接到China Azure,具体操作步骤见下:

1.从官网下载页面,下载并安装Windows Azure PowerShell: http://www.windowsazure.cn/zh-cn/downloads/#cmd-line-tools

2. 安装完毕后以管理员身份运行,右键点击PowerShell图标然后选择以管理员身份运行;

3. 执行命令Get-AzurePublishSettingsFile -Environment "AzureChinaCloud",通过打开的页面下载您的Windows Azure Subscription的发布配置文件;或者访问https://manage.windowsazure.cn/publishsettings进行提示下载

开始下载订阅文件

开始下载安装Azure Powershell程序

下载后开始使用命令将订阅文件导入Azure powershell中

1
Import-AzurePublishSettingsFile ‘.\MSDN Ultimate-3-24-…….path’

导入后,我们可以查看当前已导入到本地的所有订阅文件;

1
Get-azureSubscription

查看当前环境中所有运行的vm信息

1
Get-azurevm

现在开始,我们首先通过portal页面进行查看该vm的终结点信息

我们此次使用的一台linux机器,计算机名FTPS

接着我们使用powershell脚本查看当前环境的终结点信息

1
2
$vm = get-azurevm -ServiceName "Iternal" -Name "FTPS"   
$vm | Get-AzureEndpoint | select name,localport,port,protocal

接下来就是批量添加终结点了,但是我们需要注意的是批量添加终结点的方式有两种;

1. 添加连续终结点(比如1000-2000)

2. 添加不连续终结点(比如1000,1002,1005,1007……)

我们首先是添加连续终结点,我们先添加50个连续终结点

我们是在Azure powershell中执行的是脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$serviceName = "Iternal"   
$name = "FTPS"    
$protocol = "tcp"    
$portFrom = 6100    
$portTo = 6200    
   
$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

添加后,我们通过portal查看添加后的效果

我们在通过powershell查看添加后的效果

接下来我们添加不连续端口5001,5003,5006

1
2
3
4
5
6
7
8
9
10
11
12
13
$serviceName = "Iternal"   
$name = "FTPS"    
   
$newVmEndpoints = ("CustomPort1","tcp",5001,5001) ,("CustomPort2","tcp",5003,5003) ,("CustomPort3","udp",5006,5006)    
   
$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

我们继续使用portal查看自定义端口信息

同样我们使用powershell进行查看

添加完成后,我们就是测试添加端口的最大数量,官网信息提到,目前Azure添加终结点的最大数为150个,我们已经添加了56个了,所以我们在添加100个看是否会有什么提示信息;当然是报错了,在此其实不是报错,虽然有报错信息,但是微软会将报错的跳过,所以对此我们不用担心

我们还使用批量脚本添加

上面我们提到了添加,那怎么删除呢,其实是一样的,首先是批量删除连续

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$vm = Get-AzureVM -ServiceName "Iternal" -Name "FTPS"   
$endpoints = $vm | Get-AzureEndpoint;    
#$toBeRemovedPorts = 6001,6003;    # 用于不连续的多个端口    
$toBeRemovedPorts = 6000..6050;                         # 用于连续的多个端口    
foreach($endpoint in $endpoints)    
{    
    $needRemove = $false;    
    foreach($toBeRemovedPort in $toBeRemovedPorts)    
    {    
        if($endpoint.Port -eq $toBeRemovedPort)    
        {    
            $needRemove = $true;    
            break;    
        }    
    }    
    if($needRemove)    
    {    
        $vm | Remove-AzureEndpoint -Name $endpoint.Name;    
    }    
}    
$vm | Update-AzureVM;

删除后,我们通过portal查看

再次使用powershell查看

接下来是删除不连续终结点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$vm = Get-AzureVM -ServiceName "Iternal" -Name "FTPS"   
$endpoints = $vm | Get-AzureEndpoint;    
$toBeRemovedPorts = 5001,5003,5006;    # 用于不连续的多个端口    
#$toBeRemovedPorts = 10000..10010;                         # 用于连续的多个端口    
foreach($endpoint in $endpoints)    
{    
    $needRemove = $false;    
    foreach($toBeRemovedPort in $toBeRemovedPorts)    
    {    
        if($endpoint.Port -eq $toBeRemovedPort)    
        {    
            $needRemove = $true;    
            break;    
        }    
    }    
    if($needRemove)    
    {    
        $vm | Remove-AzureEndpoint -Name $endpoint.Name;    
    }    
}    
$vm | Update-AzureVM;

通过powershell查看

本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1751722,如需转载请自行联系原作者

Azure下通过Powreshell批量添加、删除VM终结点相关推荐

  1. Windows 批量添加删除路由资源性能优化

    首先,本文只涉及如何优化Windows批量添加删除路由资源的速度优化. 基于虚拟网卡来实现虚拟网络的组建的架构图如下所示: 图片来自网络 起因: 一般来说,私有网络的一个资源对应本地的一条路由(比如: ...

  2. linux小脚本批量添加/删除用户

    批量添加/删除用户,当输入add时,判断用户是否存在,存在则显示存在,不存在则添加:当输入del时,判断用户是否存在,存在则删除用户,不存在则显示不存在. #!/bin/bash if [ $1 == ...

  3. KVM脚本批量添加删除虚拟机

    [背景]最近事情特别多,前段时间搞搞openstack,发现过与复杂,就想把KVM先好好学学,再过来搞它.因为工作关系,又用twisted开发了一个c/s的监控程序,但因还没有写完,所以暂时没有发出来 ...

  4. Android批量添加删除联系人

    项目中的一个小需求,需要批量导入电话号码进入手机里面,号段固定了,可以自己添加号段的选项 XML布局文件 <LinearLayout xmlns:android="http://sch ...

  5. Windows azure国际版下通过 windows auzre powershell为VM分配绑定virtual ip address

    说到windows azure,相信大家已经对此产品已经相当熟悉了,但使用的版本最多的应该是windows azure国内版本,也就是说,是微软委派世纪互联提供服务的平台,登陆地址为:https:// ...

  6. 彻底解决Fedora 6 中的添加删除与升级(转自网上)

    彻底解决Fedora 6 中的添加删除与升级 [作者:syd168] Fedora给广大Linux爱好者提供了很好的锻炼机会.但Fedora每次的发行版本都存在这样那样的问题.这不,刚安装完的系统,没 ...

  7. IIS环境下如何批量添加、修改、删除绑定的域名

    IIS环境下如何批量添加和修改所绑定域名 1.关闭IISADMIN服务和W3SVC服务,可以从服务里面关闭,也可以直接执行命令:net stop iisadmin /y: 2.打开"C:\W ...

  8. linux删除相同用户,Linux 批量添加和删除用户

    Linux批量添加和删除用户 一,工具作用Linux批量添加和删除用户 在Linux用户管理中,经常需要用到批量添加或删除用户:如果用 useradd或adduser来添加大量用户,对系统管理员的体力 ...

  9. linux shell 脚本 if和else代码块都被执行 | shell 批量添加、删除用户(for循环做if嵌套)

    前言: 略懂编程的都知道,if else只能进其一,满足if条件就不会进else, 然而在shell学习过程中,却遇到了,满足了if条件后,依然执行了else中的代码块. 本案例所有代码均在:/roo ...

最新文章

  1. ASP.NET自带机制不刷新页面
  2. 39.什么是操作系统(os)
  3. 【Python】编程笔记8
  4. IntelliJ IDEA中创建xml文件
  5. Generic Polygon Module in MAME 0.120u1
  6. python矩阵元素排序,使用Python基于列表值对矩阵列进行排序
  7. 【数据迁移】Oracle冷备方式迁移数据库
  8. [海隆软件][方正电机]IPO,打新股中
  9. Lua面向对象之二:类继承
  10. 在HBuilderX的git上导入github项目/把项目传到github
  11. Oracle身份证校验函数
  12. 如何解决VMware Workstation上ubuntu出现Host SMbus controller not enabled
  13. Perl-Can't locate Time/HiRes.pm 错误
  14. Android7 WIFI系统 PNO机制流程详解和隐藏BUG修改
  15. 海康威视监控摄像头大华摄像头webrtc监控低时延无插件直播页面播放毫无延迟
  16. 常用布局方式与常用css
  17. 第023封“情书”: 草书 Point Advection点的平流染色线
  18. VSTO C# 操作excel
  19. 下厨房用过那些 slogan
  20. app小程序手机端Python爬虫实战01-Uiautomator2自动化抓取工具介绍

热门文章

  1. python爬虫分布式怎么构造_如何构建一个分布式爬虫:实战篇
  2. IDEA+Java:Selenium+Maven+TestNG基本WebUI自动化测试环境搭建
  3. 2008版计算机基础,计算机应用基础2008版各章课后习题解析
  4. android梅花形布局,Android相对布局实现各种梅花效果
  5. 字符的用意_北辰的符号意义 阅读答案
  6. java 字符串排列_Java实现字符串的全排列
  7. 使用JAVASCRIPT实现弹出框,过一段时间自动消失
  8. Cassandra操作入门
  9. mysql批量导入已经格式好的文本数据
  10. 利用Markdown编写数学公式