functions/Storage/GetStorageAccountName.ps1

<#
  .SYNOPSIS
  GetStorageAccountName
   
  .DESCRIPTION
  GetStorageAccountName
   
  .INPUTS
  GetStorageAccountName - The name of GetStorageAccountName
 
  .OUTPUTS
  None
   
  .EXAMPLE
  GetStorageAccountName
 
  .EXAMPLE
  GetStorageAccountName
 
 
#>

function GetStorageAccountName() {
    [CmdletBinding()]
    [OutputType([hashtable])]
    param
    (
        [parameter (Mandatory = $true) ]
        [ValidateNotNullOrEmpty()]
        [string] 
        $resourceGroup
    )

    Write-Verbose 'GetStorageAccountName: Starting'

    [hashtable]$Return = @{} 

    [string] $storageAccountName = "${resourceGroup}storage"
    # remove non-alphanumeric characters and use lowercase since azure doesn't allow those in a storage account
    $storageAccountName = $storageAccountName -replace '[^a-zA-Z0-9]', ''
    $storageAccountName = $storageAccountName.ToLower()
    if ($storageAccountName.Length -gt 24) {
        $storageAccountName = $storageAccountName.Substring(0, 24) # azure does not allow names longer than 24
    }

    $Return.StorageAccountName = $storageAccountName

    Write-Verbose 'GetStorageAccountName: Done'

    return $Return
}

Export-ModuleMember -Function "GetStorageAccountName"