Completers/Microsoft.Az.Automation.AutomationAccountName.ArgumentCompleters.ps1

$ScriptBlock = {
        <#
        .SYNOPSIS
        Auto-complete the -AutomationAccountName parameter value for Azure Resource Manager (ARM) PowerShell cmdlets.

        .NOTES
        Created by Trevor Sullivan <trevor@trevorsullivan.net>
        http://trevorsullivan.net
        #>

        param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)

        try {
            $ObjectList = Get-AzAutomationAccount -ErrorAction Stop -WarningAction Ignore;
        } catch {
            Write-Host -Object ('Error occurred retrieving Automation Accounts: {0}' -f $PSItem.Exception.Message);
        }
        $ItemList = $ObjectList | Where-Object { $PSItem.AutomationAccountName -match $wordToComplete } | ForEach-Object {
            $CompletionText = '{0} -ResourceGroupName {1}' -f $PSItem.AutomationAccountName, $PSItem.ResourceGroupName;
            $ToolTip = 'Automation Account {0} in {1} region, in {2} Resource Group.' -f $PSItem.AutomationAccountName, $PSItem.Location, $PSItem.ResourceGroupName;
            $ListItemText = '{0} ({1})' -f $PSItem.AutomationAccountName, $PSItem.Location;
            $CompletionResultType = [System.Management.Automation.CompletionResultType]::ParameterValue;

            [System.Management.Automation.CompletionResult]::new($CompletionText, $ListItemText, $CompletionResultType, $ToolTip);
        }

        return $ItemList
    }

$ArgumentCompleter = @{
        CommandName = @(
            'Export-AzAutomationDscConfiguration',
            'Export-AzAutomationDscNodeReportContent',
            'Export-AzAutomationRunbook',
            'Get-AzAutomationAccount',
            'Get-AzAutomationCertificate',
            'Get-AzAutomationConnection',
            'Get-AzAutomationCredential',
            'Get-AzAutomationDscCompilationJob',
            'Get-AzAutomationDscCompilationJobOutput',
            'Get-AzAutomationDscConfiguration',
            'Get-AzAutomationDscNode',
            'Get-AzAutomationDscNodeConfiguration',
            'Get-AzAutomationDscNodeReport',
            'Get-AzAutomationDscOnboardingMetaconfig',
            'Get-AzAutomationJob',
            'Get-AzAutomationJobOutput',
            'Get-AzAutomationJobOutputRecord',
            'Get-AzAutomationModule',
            'Get-AzAutomationRegistrationInfo',
            'Get-AzAutomationRunbook',
            'Get-AzAutomationSchedule',
            'Get-AzAutomationScheduledRunbook',
            'Get-AzAutomationVariable',
            'Get-AzAutomationWebhook',
            'Import-AzAutomationDscConfiguration',
            'Import-AzAutomationDscNodeConfiguration',
            'Import-AzAutomationRunbook',
            'New-AzAutomationAccount',
            'New-AzAutomationCertificate',
            'New-AzAutomationConnection',
            'New-AzAutomationCredential',
            'New-AzAutomationKey',
            'New-AzAutomationModule',
            'New-AzAutomationRunbook',
            'New-AzAutomationSchedule',
            'New-AzAutomationVariable',
            'New-AzAutomationWebhook',
            'Publish-AzAutomationRunbook',
            'Register-AzAutomationDscNode',
            'Register-AzAutomationScheduledRunbook',
            'Remove-AzAutomationAccount',
            'Remove-AzAutomationCertificate',
            'Remove-AzAutomationConnection',
            'Remove-AzAutomationConnectionType',
            'Remove-AzAutomationCredential',
            'Remove-AzAutomationDscConfiguration',
            'Remove-AzAutomationDscNodeConfiguration',
            'Remove-AzAutomationModule',
            'Remove-AzAutomationRunbook',
            'Remove-AzAutomationSchedule',
            'Remove-AzAutomationVariable',
            'Remove-AzAutomationWebhook',
            'Resume-AzAutomationJob',
            'Set-AzAutomationAccount',
            'Set-AzAutomationCertificate',
            'Set-AzAutomationConnectionFieldValue',
            'Set-AzAutomationCredential',
            'Set-AzAutomationDscNode',
            'Set-AzAutomationModule',
            'Set-AzAutomationRunbook',
            'Set-AzAutomationSchedule',
            'Set-AzAutomationVariable',
            'Set-AzAutomationWebhook',
            'Start-AzAutomationDscCompilationJob',
            'Start-AzAutomationRunbook',
            'Stop-AzAutomationJob',
            'Suspend-AzAutomationJob',
            'Unregister-AzAutomationDscNode',
            'Unregister-AzAutomationScheduledRunbook'
        );
        ParameterName = 'AutomationAccountName';
        ScriptBlock = $ScriptBlock;
}

Microsoft.PowerShell.Core\Register-ArgumentCompleter @ArgumentCompleter;

$ArgumentCompleter = @{
        CommandName = @(
            'Get-AzAutomationAccount',
            'New-AzAutomationAccount',
            'Remove-AzAutomationAccount',
            'Set-AzAutomationAccount'
        );
        ParameterName = 'Name';
        ScriptBlock = $ScriptBlock;
}

Microsoft.PowerShell.Core\Register-ArgumentCompleter @ArgumentCompleter;