[Azure]使用Powershell导出所有订阅下的ARM虚拟机的信息

针对脚本中涉及到的知识点说明:

1. 脚本输出结果调用office的excel模块输出到一个excel的sheet中

2. 脚本中包含了通过powershell控制excel的cell格式,例如对齐方式,边框样式等等,行列宽度高度自适应(autofit),以及锁定(freeze)首行首列的方法

3. 由于ARM模式下虚拟机,IP,网卡这些资源都是独立的,互相之间引用,如果拿到每一台虚拟机信息后,再去根据其NIC的Id和PublicIP的ID获取对应的对象,那么整个程序执行效率会大打折扣。所以脚本里面采用在执行前用3次请求把虚拟机,网卡,IP的所有对象获取到本地内存,然后再后面引用的时候使用where条件筛选出需要的来提高执行效率

4. 脚本中其他的代码就不赘述了,根据资源属性得到每一列的值就好了

脚本如下:

Function GetResourceNameFromResourceId($resourceId)
{
    if ($resourceId -ne $null)
    {
        return $resourceId.Substring($resourceId.LastIndexOf('/') + 1);
    }
    return "";
}

Function GetResourcePropertyFromResourceId($resourceId, $propertyName)
{
    if ($resourceId -ne $null)
    {
        $propertyName = $propertyName + "/";
        $rgName = $resourceId.Substring($resourceId.IndexOf($propertyName) + $propertyName.Length);
        return $rgName.Substring(0, $rgName.IndexOf("/"));
    }
    return "";
}

$excel = New-Object -ComObject Excel.Application;
$workbook = $excel.Workbooks.add();
$sheet = $workbook.worksheets.Item(1);
$excel.Visible = $true;
# freeze the first column
$sheet.Application.ActiveWindow.SplitColumn = 1;
$sheet.Application.ActiveWindow.SplitRow = 1;
$sheet.Application.ActiveWindow.FreezePanes = $true;
$currentRow 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值