Public/Invoke-ShardDeploymentTool.ps1

function Invoke-ShardDeploymentTool {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true, ValueFromPipeline=$true)]
        [string]$Path,
        [Parameter(Mandatory=$true)]
        [string]$DatabaseServer,
        [Parameter(Mandatory=$true)]
        [string]$DatabaseUserName,
        [Parameter(Mandatory=$true)]
        [string]$DatabasePassword,
        [Parameter(Mandatory=$true)]
        [string]$DatabasePrefix,
        [Parameter(Mandatory=$true)]
        [int]$ShardCount,
        [string]$Dacpac = "Sitecore.Xdb.Collection.Database.Sql.dacpac"
    )

    $arguments = @()
    $arguments += "/operation create"
    $arguments += "/connectionstring ""Data Source=$DatabaseServer;User Id=$DatabaseUserName;Password=$DatabasePassword;Integrated Security=false"""
    $arguments += "/dbedition ""Standard"""
    $arguments += "/shardMapManagerDatabaseName ""$($DatabasePrefix)Xdb.Collection.ShardMapManager"""
    $arguments += "/shardMapNames ""ContactIdShardMap,DeviceProfileIdShardMap,ContactIdentifiersIndexShardMap"""
    $arguments += "/shardnumber $ShardCount"
    $arguments += "/shardnameprefix ""$($DatabasePrefix)Xdb.Collection.Shard"""
    $arguments += "/shardnamesuffix """""
    $arguments += "/dacpac ""$Dacpac"""

    Push-Location $Path
    Write-Host $arguments
    Start-Process .\Sitecore.Xdb.Collection.Database.SqlShardingDeploymentTool.exe -ArgumentList $arguments -NoNewWindow -Wait
    Pop-Location
}