I’m running SSISDeploy
command (documentation is here ) in my CMD
:
SSISDeploy.exe -s:"download\Integration Services.ispac" -d:catalog;/SSISDB/TEST/DEVOPS;"TEST03,1234" -at:win
all working good, and now I need to run it thought powershell
script (against windows server 2019
slave), so I tried this syntax:
$SSISDeploy = Start-Process -FilePath SSISDeploy.exe -ArgumentList '/source:"download\Integration Services.ispac"',"/destination:catalog;${Target};"${Env}"" -at:win -wait -PassThru -Credential $cred -RedirectStandardOutput ssisstdout.txt -RedirectStandardError ssisstderr.txt
but it fails with exception:
Start-Process : A positional parameter cannot be found that accepts argument 'TEST03,1234'.
+ ... SISDeploy = Start-Process -FilePath SSISDeploy.exe -ArgumentList '/so ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand
Can you suggest what’s wrong with the syntax?
Olaf
June 16, 2021, 8:49pm
2
Why do you use in PowerShell another syntax than in CMD? The error message you posted does not fit to the code you posted!?
If the command line works in CMD I’d go with the same in PowerShell. And to have it a little easier to read I’d be using splatting:
$StartProcessProps = @{
FilePath = 'SSISDeploy.exe'
ArgumentList = '-s:"download\Integration Services.ispac" -d:catalog;/SSISDB/TEST/DEVOPS;"TEST03.restest.bank,1234" -at:win'
Wait = $true
PassThru = $true
Credential = $cred
RedirectStandardOutput = 'ssisstdout.txt'
RedirectStandardError = 'ssisstderr.txt'
}
$SSISDeploy = Start-Process @StartProcessProps
1 Like
Ok tnx. got it. So I have another question on top of it. assuming now the ArgumentList look like that:
ArgumentList = '-s:"download\Integration Services.ispac" -d:catalog;${Target};${Env} -at:win'
How do I fix to make it work? as currently it throws me:
The format of the destination path to the SSIS catalog is invalid. Correct format should be "/SSISDB/<folderName>/[<projectName>]".
Olaf
June 16, 2021, 10:49pm
4
When you want to post code you click on the “preformatted text ” button first and then you paste the code where it’s shown to you. That prevents unwanted line breaks.
You can use the format operator like this:
ArgumentList = '-s:"download\Integration Services.ispac" -d:catalog;{0};{1} -at:win' -f $Target, $Env
Is there a special reason why you write your variables in that unusual way?
Hi, I tried it but got this exception:
A null key is not allowed in a hash literal.
Olaf
June 17, 2021, 6:42am
6
Ooops … typo … sorry. I corrected my code suggestion above . I accidently added a $ sign in front of ArgumentList. You have to remove that.
Awsome! it works. tnx a lot for your help