Powershell 自动化SQL数据仓库(暂停和恢复)
使用powershell自动执行SQL DWH暂停和恢复。 注意:我将发布对此的答案。Powershell 自动化SQL数据仓库(暂停和恢复),powershell,Powershell,使用powershell自动执行SQL DWH暂停和恢复。 注意:我将发布对此的答案。[CmdletBinding(DefaultParametersetName='None')] [CmdletBinding(DefaultParametersetName='None')] Param ( [Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] [String] $AzureSubscriptionId
[CmdletBinding(DefaultParametersetName='None')]
[CmdletBinding(DefaultParametersetName='None')]
Param
(
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()]
[String]
$AzureSubscriptionId,
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()]
[String]
$AzureDataWareHouseList="All",
[Parameter(Mandatory=$true)][ValidateSet("Suspend","Resume")]
[String]
$Action
)
function PauseAzureDWH
{
Param
(
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()]
[String]
$AzureSubscriptionId,
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()]
[String]
$AzureDataWareHouseList="All",
[Parameter(Mandatory=$true)][ValidateSet("Suspend","Resume")]
[String]
$Action
)
try
{
Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId $AzureSubscriptionId
if($AzureDataWareHouseList -ne "All")
{
$AzureDWHList = @()
$AzureDWHTotalList = $AzureDataWareHouseList.Split(",")
foreach($DWHitem in $AzureDWHTotalList)
{
$DWH = "*$DWHitem*"
$DWH = Get-AzureRmResource | Where-Object ResourceName -like $DWH
if($DWH -ne $Null)
{
$dwc = $DWH.ResourceName.split("/")
# splat reused parameter lists
$ThisDW = @{
'ResourceGroupName' = $DWH.ResourceGroupName
'ServerName' = $dwc[0]
'DatabaseName' = $dwc[1]
}
$AzureDWHList += $ThisDW
}
else
{
Write-Warning "Given DataWarehouse '$DWHitem' is not found in given subscription"
}
}
}
else
{
[array]$TotalDataWareHouseList = Get-AzureRmResource | Where-Object ResourceType -EQ "Microsoft.Sql/servers/databases" | Where-Object Kind -Like "*datawarehouse*"
$AzureDWHList = @()
foreach($DWH in $TotalDataWareHouseList)
{
$dwc = $DWH.ResourceName.split("/")
$ThisDW = @{
'ResourceGroupName' = $DWH.ResourceGroupName
'ServerName' = $dwc[0]
'DatabaseName' = $dwc[1]
}
$AzureDWHList += $ThisDW
}
}
<# foreach($AzureDWHItem in $AzureDWHList)
{
if(!(Get-AzureRmResource | ? {$_.Name -eq $AzureDWHItem.ServerName}) )
{
throw " AzureDWH : [$AzureDWHItem] - Does not exist! - please Check your inputs "
}
} #>
if($Action -eq "Suspend")
{
Write-Output "Suspending Azure DataWareHouses";
foreach ($AzureDWH in $AzureDWHList)
{
$status = Get-AzureRmSqlDatabase @AzureDWH | Select Status
if($status.Status -eq "Online")
{
Suspend-AzureRmSqlDatabase @AzureDWH
}
}
}
else
{
Write-Output "Resuming Azure DataWareHouses";
foreach ($AzureDWH in $AzureDWHList)
{
$status = Get-AzureRmSqlDatabase @AzureDWH | Select Status
if($status.Status -eq "Paused")
{
Resume-AzureRmSqlDatabase @AzureDWH
}
}
}
}
catch
{
Write-Error " Exception while getting resource details and writing back to CSV"
Write-Error $_.Exception.message
Write-Error " ErrorStack: $Error[0] "
exit 1
}
}
PauseAzureDWH -AzureSubscriptionId $AzureSubscriptionId -AzureDataWareHouseList $AzureDataWareHouseList -Action $Action
Param
(
[参数(必需=$true)][ValidateNotNullOrEmpty()]
[字符串]
$AzureSubscriptionId,
[参数(必需=$true)][ValidateNotNullOrEmpty()]
[字符串]
$AzureDataWareHouseList=“全部”,
[参数(必需=$true)][ValidateSet(“暂停”、“恢复”)]
[字符串]
$Action
)
函数PauseAzureDWH
{
Param
(
[参数(必需=$true)][ValidateNotNullOrEmpty()]
[字符串]
$AzureSubscriptionId,
[参数(必需=$true)][ValidateNotNullOrEmpty()]
[字符串]
$AzureDataWareHouseList=“全部”,
[参数(必需=$true)][ValidateSet(“暂停”、“恢复”)]
[字符串]
$Action
)
尝试
{
登录AzureRmAccount
选择AzureRmSubscription-SubscriptionId$AzureSubscriptionId
if($AzureDataWareHouseList-ne“全部”)
{
$AzureDWHList=@()
$AzureDWHTotalList=$AzureDataWareHouseList.Split(“,”)
foreach($AzureDwhotallist中的DWHitem)
{
$DWH=“*$DWHitem*”
$DWH=获取AzureRmResource |其中对象ResourceName-类似于$DWH
如果($DWH-ne$Null)
{
$dwc=$DWH.ResourceName.split(“/”)
#splat重用的参数列表
$ThisDW=@{
“ResourceGroupName”=$DWH.ResourceGroupName
“服务器名”=$dwc[0]
“DatabaseName”=$dwc[1]
}
$AzureDWHList+=$ThisDW
}
其他的
{
写入警告“在给定订阅中找不到给定数据仓库“$DWHitem”
}
}
}
其他的
{
[array]$TotalDataWareHouseList=Get-AzureRmResource | Where-Object-ResourceType-EQ“Microsoft.Sql/servers/databases”| Where-Object-Kind-Like“*数据仓库*”
$AzureDWHList=@()
foreach($TotalDataWareHouseList中的DWH)
{
$dwc=$DWH.ResourceName.split(“/”)
$ThisDW=@{
“ResourceGroupName”=$DWH.ResourceGroupName
“服务器名”=$dwc[0]
“DatabaseName”=$dwc[1]
}
$AzureDWHList+=$ThisDW
}
}
如果($Action-eq“Suspend”)
{
写入输出“暂停Azure数据仓库”;
foreach($AzureDWH中的AzureDWH)
{
$status=获取AzureRmSqlDatabase@AzureDWH |选择状态
如果($status.status-eq“在线”)
{
挂起AzureRmSqlDatabase@AzureDWH
}
}
}
其他的
{
写入输出“恢复Azure数据仓库”;
foreach($AzureDWH中的AzureDWH)
{
$status=获取AzureRmSqlDatabase@AzureDWH |选择状态
如果($status.status-eq“暂停”)
{
恢复AzureRmSqlDatabase@AzureDWH
}
}
}
}
抓住
{
写入错误“获取资源详细信息并写回CSV时出现异常”
写入错误$\异常.message
写入错误“ErrorStack:$Error[0]”
出口1
}
}
PauseAzureDWH-AzureSubscriptionId$AzureSubscriptionId-AzureDataWareHouseList$AzureDataWareHouseList-Action$Action
你到底想做什么,到目前为止你尝试了什么,你的问题在哪里?如果你计划自己回答问题,那么问题应该更加具体化-否则你可能会在问题上失去更多的代表性,而不是在答案上获得更多。