*** 路径中存在非法字符 - 通过 SqlPackage.exe 进行 dacpac 部署

问题描述 投票:0回答:1

我想使用

splatting
打电话给 SqlPackage.exe,但我做错了:

*** 路径中存在非法字符。

$FilePath = 'C:\some path\SqlPackage.exe'
$ArgumentList = @(
    '/Action:Publish'
    '/SourceFile:"C:\some path\blah.dacpac"'
    '/TargetConnectionString:"Server=localhost; Database=Blah; Trusted_Connection=True;"'
)
& $FilePath $ArgumentList

按照这个答案,我似乎需要使用数组展开,对吗?问题似乎是处理 SqlPackage 的参数约定,

/[name]:"[value]"
,特别是双引号。

我该如何处理动态值?即:

$Blah = 'blah.dacpac'
$ArgumentList = @(
    '/Action:Publish'
    '/SourceFile:"C:\some path\$Blah"'
    '/TargetConnectionString:"Server=localhost; Database=Blah; Trusted_Connection=True;"'
)

参考:SqlPackage发布示例

powershell sql-server-data-tools
1个回答
0
投票

你的命令应该工作:

参见:

因此:

& {
  $PSNativeCommandArgumentPassing = 'Legacy' # Need in v7.3+
  $FilePath = 'C:\some path\SqlPackage.exe'
  $ArgumentList = @(
    '/Action:Publish'
    '/SourceFile:"C:\some path\blah.dacpac"'
    '/TargetConnectionString:"Server=localhost; Database=Blah; Trusted_Connection=True;"'
  )
  & $FilePath $ArgumentList
}
© www.soinside.com 2019 - 2024. All rights reserved.