• I use a combination of PowerShell and SQL PSX

    $Instance = 'ServerName'

    $scriptargs = [Microsoft.SqlServer.Replication.scriptoptions]::Creation `

    -bor [Microsoft.SqlServer.Replication.scriptoptions]::IncludeArticles `

    -bor [Microsoft.SqlServer.Replication.scriptoptions]::IncludeGO`

    -bor [Microsoft.SqlServer.Replication.scriptoptions]::IncludeCreateSnapshotAgent`

    Get-ReplPublication $Instance | ForEach-Object {

    $script = Get-ReplScript $_ -scriptOpts $scriptargs

    $script | out-file -filepath $FilePath -force; }