[英]Executing dynamic command in PowerShell
我的腳本如下
New-Alias -Name sqlpackage -Value "C:\Program Files (x86)\Microsoft SQL
Server\130\DAC\bin\sqlpackage.exe"
$command = "sqlpackage /Action:Publish /SourceFile:$sourceFile /tcs:$TargetConnectionString /p:ScriptRefreshModule="+"$ScriptRefreshModule"+" /p:ScriptNewConstraintValidation="+"$ScriptNewConstraintValidation"+ `
" /p:GenerateSmartDefaults="+"$GenerateSmartDefaults"+" /p:BlockOnPossibleDataLoss="+"$BlockOnPossibleDataLoss"+" /p:BackupDatabaseBeforeChanges="+"$BackupDatabaseBeforeChanges"+ `
" /v:ErrorEmailRecipients="+"$ErrorEmailRecipients"+" /v:DeploymentEnvironment="+"$environment"+ $additionalVariables
& $command
如果找不到sqlpackage cmdlet,則會失敗。 我嘗試將整個exe路徑放到命令而不是使用也沒有改變結果的別名。
我也嘗試過Invoke-Command
, Invoke-Item
和Invoke-Expression
,所有這些都無法運行。 我在想bash腳本可能是我的垮台。 我該怎么做才能使這個命令工作?
它需要是動態的,因為變量根據源文件而變化。
New-Alias
不會工作,因為它定義了現有cmdlet的別名。 這個功能對我有用(按此處和此處 ):
function sqlpackage(
$sourceFile `
,$TargetConnectionString `
,$ScriptRefreshModule `
,$ScriptNewConstraintValidation `
,$GenerateSmartDefaults `
,$BlockOnPossibleDataLoss `
,$BackupDatabaseBeforeChanges `
,$ErrorEmailRecipients `
,$environment `
,$additionalVariable1 `
,$additionalVariable2 `
,$additionalVariable3 `
)
{
$command = "C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe"
&$command `
/Action:Publish `
/SourceFile:$sourceFile `
/tcs:$TargetConnectionString `
/p:ScriptRefreshModule=$ScriptRefreshModule `
/p:ScriptNewConstraintValidation=$ScriptNewConstraintValidation `
/p:GenerateSmartDefaults=$GenerateSmartDefaults `
/p:BlockOnPossibleDataLoss=$BlockOnPossibleDataLoss `
/p:BackupDatabaseBeforeChanges=$BackupDatabaseBeforeChanges `
/v:ErrorEmailRecipients=$ErrorEmailRecipients `
/v:DeploymentEnvironment=$environment `
$additionalVariable1 `
$additionalVariable2 `
$additionalVariable3 `
}
sqlpackage `
$sourceFile `
$TargetConnectionString `
$ScriptRefreshModule `
$ScriptNewConstraintValidation `
$GenerateSmartDefaults `
$BlockOnPossibleDataLoss `
$BackupDatabaseBeforeChanges `
$ErrorEmailRecipients `
$environment `
$additionalVariable1 `
$additionalVariable2 `
$additionalVariable3
我使用了你的一部分答案,離開了Invoke和&,它起作用了。 此外,New-Alias部分也在運作。
New-Alias -Name sqlpackage -Value "C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin\sqlpackage.exe"
sqlpackage `
/Action:Publish `
/SourceFile:$sourceFile `
/tcs:$TargetConnectionString `
/p:ScriptRefreshModule=$ScriptRefreshModule `
/p:ScriptNewConstraintValidation=$ScriptNewConstraintValidation `
/p:GenerateSmartDefaults=$GenerateSmartDefaults `
/p:BlockOnPossibleDataLoss=$BlockOnPossibleDataLoss `
/p:BackupDatabaseBeforeChanges=$BackupDatabaseBeforeChanges `
/v:ErrorEmailRecipients=$ErrorEmailRecipients `
/v:DeploymentEnvironment=$environment.LifeCycle `
$additionalVariables
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.