functions/Add-AccountToSQLRole.ps1

function Add-AccountToSQLRole {
    <#
    .SYNOPSIS
        Add APIScanner to SQL Role
 
    .DESCRIPTION
        This method will add the AIP Scanner account to the SQL dbcreator role
 
    .PARAMETER UserDefinedSqlInstance
        User specified SQL Instance
 
    .PARAMETER EnableException
        Depending on whether $EnableException is true or false it will do the following:
            1. ($True) - Throw a bloody terminating error. Game over.
            2. ($False) - Write a nice warning about how Foo failed bar, then terminate the function. The return on the next line will then end the calling function.
 
    .EXAMPLE
        PS C:\> Add-AccountToSQLRole -UserDefinedSqlInstance "Server01\DatabaseName"
 
    .EXAMPLE
        PS C:\> Add-AccountToSQLRole -EnableException
 
    .NOTES
        None
    #>


    [CmdletBinding(SupportsShouldProcess)]
    param (
        [string]
        $UserDefinedSqlInstance,

        [switch]
        $EnableException
    )

    begin {
        Write-PSFMessage -Level Host -String 'Add-AccountToSQLRole.Message1'
    }

    process {
        try {
            Write-PSFMessage -Level Verbose -String 'Add-AccountToSQLRole.Message2'
            $null = [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')
            if ($UserDefinedSqlInstance) {
                $sqlServer = New-Object 'Microsoft.SqlServer.Management.Smo.Server' $UserDefinedSqlInstance -ErrorAction Stop
            }
            else {
                $sqlServer = New-Object 'Microsoft.SqlServer.Management.Smo.Server' "$env:COMPUTERNAME\SQLEXPRESS" -ErrorAction Stop
            }
            Write-PSFMessage -Level Host -String 'Add-AccountToSQLRole.Message3'
            $login = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Login -ArgumentList $sqlServer, "$env:COMPUTERNAME\AIPScanner" -ErrorAction Stop
            $login.LoginType = "WindowsUser"
            $login.Create()
            $login.AddToRole("dbcreator")
            $login.Alter()
            Write-PSFMessage -Level Host -String 'Add-AccountToSQLRole.Message4'
        }
        catch {
            Stop-PSFFunction -String 'Add-AccountToSQLRole.Message5' -EnableException $EnableException -Cmdlet $PSCmdlet -ErrorRecord $_
        }
    }

    end {
        Write-PSFMessage -Level Host -String 'Add-AccountToSQLRole.Message6'
    }
}