使用PowerShell 获取azure image publisher offer sku 信息

使用azure powershell 获取指定区域的可用镜像 publisher offer sku信息

param (
    [parameter(Mandatory = $false)]
    $LocationName = "ChinaNorth",
    [parameter(Mandatory = $false)]
    $ExportTo = [Environment]::GetFolderPath("Desktop") + "\" + $LocationName + "-VMImage-" + $(Get-Date -Format "yyyyMMdd-HHmmss") + ".csv"

)

function Check-AzureRmLocation()
{
    param
    (
        [string]$LocationName = $(throw "Parameter missing: -LocationName LocationName")
    )
    Write-Host "$(Get-Date) * Checking location $LocationName" -ForegroundColor Cyan
    $Location = Get-AzureRmLocation | Where-Object { $_.Location -eq $LocationName }
    If (-not ($Location))
    {

        Write-Host "$(Get-Date) * The location" $LocationName "does not exist." -ForegroundColor Red
        return $false
    }
    Else
    {
        Write-Host "$(Get-Date) * Location $LocationName exists" -ForegroundColor Cyan
        return $true
    }
}

$LocationExist = Check-AzureRmLocation -LocationName $LocationName
if ($LocationExist -eq $true)
{
    write-host "$(Get-Date) * Begin to collect VM Image information..Please wait" -ForegroundColor ‘Cyan‘
    [pscustomobject[]]$VMImageObjects = $null
    if (Test-Path $ExportTo)
    {
        Clear-Content $ExportTo -Force
    }

    $Error.clear()

    try
    {

        $Publishers = (Get-AzureRmVMImagePublisher -Location $LocationName -ErrorAction Stop).PublisherName
        $TotalPublisherCounts = $Publishers.count
        $PublisherCount = 1
        foreach ($Publisher in $Publishers)
        {
            Write-Progress -Activity ("Current Publisher: $Publisher") -Status "Searching $PublisherCount Publisher, Total Publisher: $TotalPublisherCounts" -PercentComplete ($PublisherCount/ $TotalPublisherCounts * 100) -Id 1
            $Offers = (Get-AzureRmVMImageOffer -Location $LocationName -PublisherName $Publisher -ErrorAction Stop).offer
            $TotalOfferCounts = $Offers.count
            if ($TotalOfferCounts -eq 0)
            {
                $PublisherCount++
            }
            else
            {
                $OfferCount = 1
                foreach ($Offer in $Offers)
                {
                    Write-Progress -Activity ("Current Offer: $Offer") -Status "Searching $OfferCount Offer, Total Offer: $TotalOfferCounts" -PercentComplete ($OfferCount/ $TotalOfferCounts * 100) -Id 2 -ParentId 1
                    $Skus = Get-AzureRmVMImageSku -Location $LocationName -PublisherName $Publisher -Offer $Offer -ErrorAction Stop
                    $TotalSkuCounts = $Skus.count
                    if ($TotalSkuCounts -eq 0)
                    {
                        $OfferCount++
                    }
                    else
                    {
                        $SkuCount = 1
                        foreach ($Sku in $Skus)
                        {
                            $VMImageObject = New-Object -TypeName psobject
                            $VMImageObject | Add-Member -MemberType NoteProperty -Name LocationName -Value $Sku.Location
                            $VMImageObject | Add-Member -MemberType NoteProperty -Name PublisherName -Value $Sku.PublisherName
                            $VMImageObject | Add-Member -MemberType NoteProperty -Name OfferName -Value $Sku.Offer
                            $VMImageObject | Add-Member -MemberType NoteProperty -Name SkuName -Value $Sku.skus
                            $VMImageObjects += $VMImageObject
                            Write-Progress -Activity ("Current Sku: $($Sku.skus)") -Status "Searching $SkuCount Sku, Total Sku: $TotalSkuCounts" -PercentComplete ($SkuCount/ $TotalSkuCounts * 100) -id 3 -ParentId 2
                            Start-Sleep -Milliseconds 500
                            $SkuCount++

                        }
                        $OfferCount++
                    }
                }
                $PublisherCount++
            }
        }

        if ($VMImageObjects -ne $null)
        {
            $VMImageObjects | Export-Csv -LiteralPath $ExportTo -NoTypeInformation -Force -ErrorAction Stop
            Write-Host "$(Get-Date) * Export successfully, Please check $ExportTo" -ForegroundColor Cyan
        }
        else
        {
            Write-Host "$(Get-Date) * Something wrong" -ForegroundColor Red

        }

    }
    catch
    {
        Write-Warning $Error[0].Exception.Message

    }

}

原文地址:https://www.cnblogs.com/wanghaixing/p/10205536.html

时间: 2024-11-08 19:44:39

使用PowerShell 获取azure image publisher offer sku 信息的相关文章

利用Powershell获取公司内部机器的资源信息,作为企业兴许资产管理的基本途径!

今天一个哥们问我是否用Powershell 实现.我好久没有写脚本,脚本的协作和调试还是费了一些时间,兴许调试了下.运作没有问题,大家能够參考以下的脚本来丰富您企业须要做的一些事情,脚本代码例如以下: #requires -version 2#脚本撰写人:徐鹏 假设须要脚本的话,请发邮件到[email protected],为我写脚本创建一些机会.提升更快. param($templogpath="c:\" #定义生成的文件的默认路径) Import-Module ac* #导入当中的

如何使用PowerShell 收集Azure VM Image列表

这次来分享一下关于Azure的脚本,目前来讲在使用Azure的时候,新创建的一些资源基本上都已经在用ARM模式了,Azure classic portal现在也已经完全被new portal取代,在使用体验上来说ARM模式大部分情况下也被ASM更方便一些,但是也有一些细节的地方因为功能越来越强大,能支持的内容越来越多,有些时候平台本身提供的功能不一定能完全满足我们的需求,所以我们会自己写一些小脚本来尽量弥补 今天要分享的内容很简单,在使用ARM模式创建虚拟机时,决定我们要创建什么操作系统的其实是

使用PowerShell 连接Azure

除了使用门户登入外,还可以使用PowerShell的方式来连接Azure.首先要去下载组件 http://azure.microsoft.com/en-us/downloads/?rnd=1 http://www.windowsazure.cn/downloads/#cmd-line-tools 一个是国际版的,一个是国内版,工具版本相同. 通过Web Platform Installer 来集成安装其实会根据不同操作系统安装一些组件,以下是在Window 10下需要安装的部分 查看是否有这个m

通过PowerShell获取Windows系统密码Hash

当你拿到了系统控制权之后如何才能更长的时间内控制已经拿到这台机器呢?作为白帽子,已经在对手防线上撕开一个口子,如果你需要进一步扩大战果,你首先需要做的就是潜伏下来,收集更多的信息便于你判断,便于有更大的收获.用什么方法才能有尽可能高的权限,同时能更有效的隐藏自己,是留webshell,留后门,种木马还是Rootkit?webshell,哪怕是一句话木马都很容易被管理员清除,放了木马,也容易被有经验的管理员查出,不管是早期自己创建进程,进程被干掉就完了,还是注入进程的木马,或者是以服务自启动的木马

PowerShell 操作 Azure SQL Active Geo-Replication

前文中我们比较全面的介绍了 Azure SQL Database Active Geo-Replication 的主要特点和优势.接下来我们将从自动化的角度介绍如何通过 PowerShell 在项目中实现 Active Geo-Replication 的操作. 从 Azure PowerShell 开始 MS 专门为管理 Azure 写了一套 PowerShell 组件称为 Azure PowerShell.我们就是要使用这套组件中提供的接口来操作 Active Geo-Replication.

PowerShell 操作 Azure SQL Active Geo-Replication 实战

<Azure SQL Database Active Geo-Replication简介>一文中,我们比较全面的介绍了 Azure SQL Database Active Geo-Replication 的主要特点和优势.接下来我们将从自动化的角度,介绍如何通过 PowerShell 在项目中实现 Active Geo-Replication 操作. 一.从Azure PowerShell开始 MS 专门为管理 Azure 写了一套 PowerShell 组件称为 Azure PowerShe

Windows 上安装 Azure PowerShell及Azure PowerShell部署虚拟机

一.Azure PowerShell部署 1.使用 PowerShellGet 在 Windows 上安装 Azure PowerShell 从 Azure PowerShell 版本 6.0 开始,Azure PowerShell 需要 PowerShell 版本 5.0. 若要查看在计算机上运行的 PowerShell 的版本,运行以下命令: #$PSVersionTable.PSVersion 2.Windows PowerShell升级 https://docs.microsoft.co

Inxi:获取Linux的系统和硬件信息

我们已经展示了一些不同的应用程序和方法来获取Linux的系统和硬件信息.在这一系列里,我们将看到如何使用inxi来获取这些详情信息.在论坛技术支持中,它可以作为调试工具,迅速确定用户的系统配置和硬件信息. Inxi是一个可以获取完整的系统和硬件详情信息的命令行工具,内容包括: 硬件 CPU 磁盘驱动器 Xorg 桌面环境 内核 GCC版本 进程 内存占用 和其他有用的信息 安装方法 Inxi在多数现代GNU/Linux操作系统的默认软件仓库中.所以,我们可以简单地运行下列命令安装. 在基于Deb

winPcap_4_获取已安装设备的高级信息

由 pcap_findalldevs_ex() 返回的每一个 pcap_if 结构体,都包含一个 pcap_addr 结构体,这个结构体由如下元素组成: 一个地址列表 一个掩码列表 (each of which corresponds to an entry in the addresses list). 一个广播地址列表 (each of which corresponds to an entry in the addresses list). 一个目的地址列表 (each of which