Stop-AnalysisService.ps1

Function Stop-AnalysisService {
    param(
        [string] $AzureRunAsConnection,
        [string] $resourceGroupName,
        [string] $Name
        # [parameter(Mandatory=$false)]
        # [string] $scalingScheduleTimeZone = "W. Europe Standard Time"
    )

    filter timestamp { "[$(Get-Date -Format G)]: $_" }

    Write-Output 'Script started.' | timestamp

    $VerbosePreference = 'Continue'
    $ErrorActionPreference = 'Stop'

    # Connect using a Managed Service Identity
    try {
        $AzureContext = (Connect-AzAccount -Identity).context
        Write-Output 'Authenticated with MI.' | timestamp
    }
    catch {
        Write-Output 'There is no system-assigned user identity. Aborting. Setup the same or try using RunAs account automation method.';
    }
    Write-Output ('AzureRunAsConnection: {0} ResourceGroupName: {1} Name: {2}' -F $AzureRunAsConnection, $ResourceGroupName, $Name)

    # Get the server object
    $asSrv = Get-AzAnalysisServicesServer -ResourceGroupName $resourceGroupName -Name $Name
    Write-Output "AAS server name: $($asSrv.Name)" | timestamp
    Write-Output "Current server status: [$($asSrv.State)], sku: $($asSrv.Sku.Name)" | timestamp

    # Analysis Service Server Pause & Resume logic
    if (($asSrv.State -ne 'Paused')) {
        Write-Output 'Service is running. Pausing Now !' | timestamp
        $asSrv | Suspend-AzAnalysisServicesServer
        Write-Output 'Service is Paused !' | timestamp
    }
    else {
        Write-Output 'Service already Paused !' | timestamp
    }
    Write-Output 'Script finished.' | timestamp
}