我在许多 PS 脚本中使用过这种类型的编码:
$SQlScriptParameters = (
"FtpServer='$FtpServer'",
"RotkatalogFörFTP='$RootFolderOnFtpServer'",
"HostUrlForWebAuthorization='$HostUrlForWebAuthorization'",
"UrlForSsekListener='$UrlForSsekListener'",
"RotkatalogFörAvstämningar='$RootFolderForReconciliations'",
"UrlFörWebbtjänsten='$UrlForWebSite'"
)
$result = Invoke-Sqlcmd -ServerInstance '(local)' -Database "$DatabaseName" -InputFile "$SqlAdaptSystemParameters" -QueryTimeout $maxQueryTime -AbortOnError -Variable $SQlScriptParameters
它工作正常,直到其中一个变量的值中包含一个冒号(如$HostUrlForWebAuthorization
)。现在我收到以下解析错误:
Invoke-Sqlcmd :
At line:1 char:1
+ Invoke-Sqlcmd -ServerInstance '(local)' -Database "$DatabaseName" -In ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Sqlcmd], ParserException
+ FullyQualifiedErrorId : ExecutionFailureException,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
在 Windows PowerShell ISE 调试器中显示时,字符串数组中的字符串值$SQlScriptParameters
如下:
HostUrlForWebAuthorization='http://ensymappacc1.cypointmo.local:80/'
这是它在 SQL 输入文件中的样子
SET NOCOUNT ON
DECLARE @FtpServer nvarchar(500)
DECLARE @RotkatalogFörFTP nvarchar(500)
DECLARE @HostUrlForWebAuthorization nvarchar(500)
DECLARE @UrlFörSsekLyssnaren nvarchar(500)
DECLARE @RotkatalogFörAvstämningar nvarchar(500)
DECLARE @UrlFörWebbtjänsten nvarchar(500)
-- Format: uname:pwd@hostname:port
SET @FtpServer = $(FtpServer)
SET @RotkatalogFörFTP = $(RootFolderForFTP)
-- Format: http://hostname:port/
SET @HostUrlForWebAuthorization = $(HostUrlForWebAuthorization)
SET @UrlFörSsekLyssnaren = $(UrlFörSsekLyssnaren)
SET @RotkatalogFörAvstämningar = $(RotkatalogFörAvstämningar)
-- Format: https://hostname:port/
SET @UrlFörWebbtjänsten = $(UrlFörWebbtjänsten)
如何设置$SQlScriptParameters
这样我就不会在冒号上收到解析错误?