在脚本Powershell中运行命令dos

时间:2018-07-17 13:23:39

标签: powershell

我刚开始使用Powershell进行编程,因此需要帮助。我在变量中声明了此命令:

$Command_line="sqlcmd -S $SName -U $UName -P $Password -d $DbName -I -i $File"

我要执行此命令。我尝试使用下面的代码,但是没有用:

        Invoke-Expression $Command_line
        # utilisation de son alias
        iex $Command_line
        # utilisation de l'opérateur CALL 
        &$Command_line
        # utilsation de l'opérateur dot-sourced
        .$Command_line
        # On executant la variable par $ExecutionContext
        $ExecutionContext.InvokeCommand.InvokeScript($Command_line)

我也尝试过:

#Start-Process "$Command_line"

并且:

$Command_line= "cmd.exe /C ""sqlcmd -S $SName -U $UName -P $Password -d $DbName -I -i $File"
            writeLog $logFile "Execution de la commande $Command_line" #Affichage de la commande


            #$NomExe = "cmd.exe"
            #$WorkingDir = "C:\"

            #Lancement de l'exe
            #start-process -FilePath $NomExe -ArgumentList $Command_line -workingdirectory $WorkingDir

但是,我收到了this link所示的错误消息。

2 个答案:

答案 0 :(得分:1)

这就是您需要做的:

sqlcmd -S $SName -U $UName -P $Password -d $DbName -I -i $File

您不需要带引号的字符串或任何花哨的命令。只需使用命令行即​​可。

由于您使用的是PowerShell,因此我也建议您可以使用SQLPS模块。

答案 1 :(得分:0)

给出您的示例:

$Command_line="sqlcmd -S $SName -U $UName -P $Password -d $DbName -I -i $File"

您可以这样执行它:

& ([scriptblock]::Create($Command_line))

I'd suggest never using Invoke-Expression