mirror of
https://github.com/Microsoft/sql-server-samples.git
synced 2025-12-08 14:58:54 +00:00
fixed queries and added cleanup
This commit is contained in:
+15
-6
@@ -118,7 +118,7 @@ $requiredModules | Foreach-Object {CheckModule $_}
|
|||||||
|
|
||||||
if ($SubId -like "*.csv") {
|
if ($SubId -like "*.csv") {
|
||||||
$subscriptions = Import-Csv $SubId
|
$subscriptions = Import-Csv $SubId
|
||||||
}elseif($SubId -ne $null){
|
}elseif($SubId -ne ""){
|
||||||
$subscriptions = [PSCustomObject]@{SubscriptionId = $SubId} | Get-AzSubscription
|
$subscriptions = [PSCustomObject]@{SubscriptionId = $SubId} | Get-AzSubscription
|
||||||
}else{
|
}else{
|
||||||
$subscriptions = Get-AzSubscription
|
$subscriptions = Get-AzSubscription
|
||||||
@@ -143,17 +143,26 @@ foreach ($sub in $subscriptions){
|
|||||||
$query = "
|
$query = "
|
||||||
resources
|
resources
|
||||||
| where type =~ 'microsoft.hybridcompute/machines/extensions'
|
| where type =~ 'microsoft.hybridcompute/machines/extensions'
|
||||||
|
| where subscriptionId =~ '$($sub.Id)'
|
||||||
| extend extensionPublisher = tostring(properties.publisher), extensionType = tostring(properties.type), provisioningState = tostring(properties.provisioningState)
|
| extend extensionPublisher = tostring(properties.publisher), extensionType = tostring(properties.type), provisioningState = tostring(properties.provisioningState)
|
||||||
|
| parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
|
||||||
| where extensionPublisher =~ 'Microsoft.AzureData'
|
| where extensionPublisher =~ 'Microsoft.AzureData'
|
||||||
| where provisioningState =~ 'Succeeded'
|
| where provisioningState =~ 'Succeeded'
|
||||||
| parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
|
|
||||||
| project machineName, extensionName = name, resourceGroup, location, subscriptionId, extensionPublisher, extensionType, properties
|
|
||||||
"
|
"
|
||||||
|
|
||||||
if ($MachineName) {$query += "| where machineName =~ '$($MachineName)'"}
|
if ($ResourceGroup) {
|
||||||
if ($ResourceGroup) {$query += "| where resourceGroup =~ '$($ResourceGroup)'"}
|
$query += "| where resourceGroup =~ '$($ResourceGroup)'"
|
||||||
|
}
|
||||||
|
|
||||||
$resources = Search-AzGraph -Query "$($query) | where subscriptionId =~ '$($sub.Id)'"
|
if ($MachineName) {
|
||||||
|
$query += "| where machineName =~ '$($MachineName)'"
|
||||||
|
}
|
||||||
|
|
||||||
|
$query += "
|
||||||
|
| project machineName, extensionName = name, resourceGroup, location, subscriptionId, extensionPublisher, extensionType, properties
|
||||||
|
"
|
||||||
|
|
||||||
|
$resources = Search-AzGraph -Query "$($query)"
|
||||||
foreach ($r in $resources) {
|
foreach ($r in $resources) {
|
||||||
|
|
||||||
$setID = @{
|
$setID = @{
|
||||||
|
|||||||
+53
-27
@@ -7,24 +7,21 @@
|
|||||||
#
|
#
|
||||||
# The script accepts the following command line parameters:
|
# The script accepts the following command line parameters:
|
||||||
#
|
#
|
||||||
# -SubId [subscription_id] | [csv_file_name] (Limit scope to specific subscriptions. Accepts a .csv file with the list of subscriptions.
|
# -SubId [subscription_id] | [csv_file_name] | ALL (Limit scope to specific subscriptions. Accepts a .csv file with the list of subscriptions.
|
||||||
# If not specified all subscriptions will be scanned)
|
# If ALL is specified, all subscriptions will be scanned)
|
||||||
# -ResourceGroup [resource_goup] (Limit scope to a specific resoure group)
|
# -ResourceGroup [resource_goup] (Limit scope to a specific resoure group)
|
||||||
# -MachineName [machine_name] (Limit scope to a specific machine)
|
# -MachineName [machine_name] (Limit scope to a specific machine)
|
||||||
# -All (Uninstall Azure extension on all Arc-enabled servers in all subscriptions you have contributor access to).
|
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
||||||
param (
|
param (
|
||||||
[Parameter (Mandatory=$false)]
|
[Parameter (Mandatory=$true)]
|
||||||
[string] $SubId,
|
[string] $SubId,
|
||||||
[Parameter (Mandatory= $false)]
|
[Parameter (Mandatory= $false)]
|
||||||
[string] $ResourceGroup,
|
[string] $ResourceGroup,
|
||||||
[Parameter (Mandatory= $false)]
|
[Parameter (Mandatory= $true)]
|
||||||
[string] $MachineName,
|
[string] $MachineName
|
||||||
[Parameter (Mandatory= $false)]
|
)
|
||||||
[boolean] $All=$false
|
|
||||||
)
|
|
||||||
|
|
||||||
function CheckModule ($m) {
|
function CheckModule ($m) {
|
||||||
|
|
||||||
@@ -60,6 +57,7 @@ Update-AzConfig -DisplayBreakingChangeWarning $false
|
|||||||
|
|
||||||
# Load required modules
|
# Load required modules
|
||||||
$requiredModules = @(
|
$requiredModules = @(
|
||||||
|
"AzureAD",
|
||||||
"Az.Accounts",
|
"Az.Accounts",
|
||||||
"Az.ConnectedMachine",
|
"Az.ConnectedMachine",
|
||||||
"Az.ResourceGraph"
|
"Az.ResourceGraph"
|
||||||
@@ -70,13 +68,13 @@ $requiredModules | Foreach-Object {CheckModule $_}
|
|||||||
|
|
||||||
if ($SubId -like "*.csv") {
|
if ($SubId -like "*.csv") {
|
||||||
$subscriptions = Import-Csv $SubId
|
$subscriptions = Import-Csv $SubId
|
||||||
}elseif($SubId -ne $null){
|
}elseif($SubId -like "ALL"){
|
||||||
$subscriptions = [PSCustomObject]@{SubscriptionId = $SubId} | Get-AzSubscription
|
$subscriptions = Get-AzSubscription -TenantID (Get-AzureADTenantDetail).ObjectId
|
||||||
}elseif($All){
|
}elseif($SubId -ne ""){
|
||||||
$subscriptions = Get-AzSubscription
|
$subscriptions = [PSCustomObject]@{SubscriptionId = $SubId} | Get-AzSubscription -TenantID (Get-AzureADTenantDetail).ObjectId
|
||||||
}else {
|
}else{
|
||||||
Write-Host ([Environment]::NewLine + "-- Parameter missing --")
|
Write-Host ([Environment]::NewLine + "-- Subscription parameter is missing --")
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host ([Environment]::NewLine + "-- Scanning subscriptions --")
|
Write-Host ([Environment]::NewLine + "-- Scanning subscriptions --")
|
||||||
@@ -94,33 +92,61 @@ foreach ($sub in $subscriptions){
|
|||||||
{continue}
|
{continue}
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = "
|
$query1 = "
|
||||||
resources
|
resources
|
||||||
|
| where subscriptionId =~ '$($sub.Id)'
|
||||||
| where type =~ 'microsoft.hybridcompute/machines/extensions'
|
| where type =~ 'microsoft.hybridcompute/machines/extensions'
|
||||||
| extend extensionPublisher = tostring(properties.publisher), extensionType = tostring(properties.type), provisioningState = tostring(properties.provisioningState)
|
| extend extensionPublisher = tostring(properties.publisher), extensionType = tostring(properties.type), provisioningState = tostring(properties.provisioningState)
|
||||||
|
| parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
|
||||||
| where extensionPublisher =~ 'Microsoft.AzureData'
|
| where extensionPublisher =~ 'Microsoft.AzureData'
|
||||||
| where provisioningState =~ 'Succeeded'
|
| where provisioningState =~ 'Succeeded'
|
||||||
| parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
|
"
|
||||||
|
$query2 = "
|
||||||
|
resources
|
||||||
|
| where subscriptionId =~ '$($sub.Id)'
|
||||||
|
| where type =~ 'Microsoft.AzureArcData/SqlServerInstances'
|
||||||
|
| where properties.status =~ 'Connected'
|
||||||
|
"
|
||||||
|
|
||||||
|
if ($ResourceGroup) {
|
||||||
|
$query1 += "| where resourceGroup =~ '$($ResourceGroup)'"
|
||||||
|
$query2 += "| where resourceGroup =~ '$($ResourceGroup)'"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($MachineName) {
|
||||||
|
$query1 += "| where machineName =~ '$($MachineName)'"
|
||||||
|
$query2 += "| where name =~ '$($MachineName)'"
|
||||||
|
}
|
||||||
|
|
||||||
|
$query1 += "
|
||||||
| project machineName, extensionName = name, resourceGroup, location, subscriptionId, extensionPublisher, extensionType, properties
|
| project machineName, extensionName = name, resourceGroup, location, subscriptionId, extensionPublisher, extensionType, properties
|
||||||
"
|
"
|
||||||
|
|
||||||
if ($MachineName) {$query += "| where machineName =~ '$($MachineName)'"}
|
#
|
||||||
if ($ResourceGroup) {$query += "| where resourceGroup =~ '$($ResourceGroup)'"}
|
# Delete Azure extension for SQL
|
||||||
|
$resources = Search-AzGraph -Query "$($query1)"
|
||||||
$resources = Search-AzGraph -Query "$($query) | where subscriptionId =~ '$($sub.Id)'"
|
|
||||||
foreach ($r in $resources) {
|
foreach ($r in $resources) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$setID = @{
|
$setID = @{
|
||||||
MachineName = $r.MachineName
|
MachineName = $r.MachineName
|
||||||
ResourceGroup = $r.resourceGroup
|
ResourceGroup = $r.resourceGroup
|
||||||
Name = $r.extensionName
|
Name = $r.extensionName
|
||||||
}
|
}
|
||||||
|
|
||||||
Remove-AzConnectedMachineExtension @SetId -NoWait # | Out-Null
|
Remove-AzConnectedMachineExtension @SetId -NoWait | Out-Null
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Remove Arc-enable SQL Server resources
|
||||||
|
$resources = Search-AzGraph -Query "$($query2)"
|
||||||
|
|
||||||
|
foreach ($r in $resources) {
|
||||||
|
|
||||||
|
Remove-AzResource -ResourceId $r.resourceId -Force | Out-Null
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user