使用PowerShell快速获取Azure中的SQLServerVM教程

Windows Windows 2个月前 (08-15) 7次浏览 未收录 0个评论 扫描二维码

这次来分享一个自己写的脚本,任何脚本当然都是有原始需求推动的,这个脚本的功能其实很简单,他可以帮助我们快速筛选出Azure账号中SQL Server的VM,写这个脚本的原因也是因为有人问,现在环境中有哪些VM是SQL Server的,通过平台本身的Portal其实很难筛选出来这些信息,所以特地写了一个脚本,当然,这个脚本还是有一些限制,只能筛选出Azure VM+SQL License模式的虚拟机,对于直接在VM内部安装SQL Server的虚拟机,因为平台本身不会记录这类的信息,所以从平台层面是没办法筛选出来的

以下是脚本的内容,分享一下

functionWrite-DateTimeMessage
{
param(
[parameter(Mandatory=$false)]
[switch]$Warning,
[parameter(Mandatory=$true)]
[string]$Message,
[parameter(Mandatory=$false)]
[string]$ForegroundColor
)
if($Warning)
{
Write-Warning($(Get-Date-UFormat'%Y/%m/%d%H:%M:%S')+"*"+$Message)
}
else
{
if($ForegroundColor)
{
Write-Host($(Get-Date-UFormat'%Y/%m/%d%H:%M:%S')+"*"+$Message)-ForegroundColor$ForegroundColor
}
else
{
Write-Host($(Get-Date-UFormat'%Y/%m/%d%H:%M:%S')+"*"+$Message)
}
}
}
[pscustomobject[]]$SQLVMObjects=$null

$Subscriptions=Get-AzureRmSubscription

foreach($subscriptionin$Subscriptions)
{
"Queryingsubscription:"

$SubscriptionID=$Subscription.Id
$SubscriptionName=$Subscription.Name
Select-AzureRmSubscription-SubscriptionId$SubscriptionID-InformationActionSilentlyContinue
Get-AzureRmResourceGroup|%{
$RG=$_
Write-DateTimeMessage-Message"CheckingResourceGroup$($RG.ResourceGroupName)"
$AzureVMs=Get-AzureRmVM-ResourceGroupName$RG.ResourceGroupName

if($null-ne$AzureVMs)
{
$AzureVMs|%{
$AzureVM=$_
if($AzureVM.StorageProfile.ImageReference.Publisher-like"*SQLServer*")
{
Write-DateTimeMessage-Message"FindSQLServerVM$($AzureVM.Name)inresourcegroup$($RG.ResourceGroupName)"-Warning
$SQLVMObject=New-Object-TypeNamepsobject
$SQLVMObject|Add-Member-MemberTypeNoteProperty-NameSubscriptionName-Value$SubscriptionName
$SQLVMObject|Add-Member-MemberTypeNoteProperty-NameSubscriptionID-Value$SubscriptionID
$SQLVMObject|Add-Member-MemberTypeNoteProperty-NameAzureVMName-Value$AzureVM.Name
$SQLVMObject|Add-Member-MemberTypeNoteProperty-NameResourceGroupName-Value$AzureVM.ResourceGroupName
$SQLVMObject|Add-Member-MemberTypeNoteProperty-NameLocation-Value$AzureVM.Location
$SQLVMObjects+=$SQLVMObject
}
}
}
}
}
$OutputPath=Join-Path-Path([Environment]::GetFolderPath("Desktop"))-ChildPath("SQLVM-"+$(Get-Date-Format"yyyyMMdd-HHmmss")+".csv")

if($null-ne$SQLVMObjects)
{
$SQLVMObjects|Export-Csv-NoTypeInformation-LiteralPath$OutputPath
Write-DateTimeMessage-Message"Pleasecheck$OutputPath"-Warning
}
else
{
Write-DateTimeMessage"MaybenoSQLVMintheenvironmentordidn'tgetinformation,pleasecheck"-warning
}

运行的方法非常简单,直接运行命令即可,以下是一些截图

使用PowerShell快速获取Azure中的SQLServerVM教程

运行结束后,会将信息导出到CSV文件中,便于整理

使用PowerShell快速获取Azure中的SQLServerVM教程

因为隐私原因,细节的信息就不展示了哈,各位可以根据需要使用

喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址