我有一些简单的PowerShell代码可以在表中插入一个值:
Invoke-SqlCmd -ServerInstance myserver -Query 'insert into Database.dbo.tbl values (1)'
如果我将其保存为文件,我可以在CmdExec作业步骤中调用它。但是,任何人都可以告诉我为什么我不能运行命令,特别是因为它只有一行:
powershell.exe -ExecutionPolicy Bypass -Command 'Invoke-Sqlcmd -ServerInstance myserver -Query ''insert into DBADatabase.dbo.tbl values (1)'''
任何人都可以告诉我为什么运行命令不起作用,但与文件相同的代码可以工作。任何帮助表示赞赏。
由于
答案 0 :(得分:0)
我已经在我的服务器上使用以下PowerShell代码创建了测试作业,并且它可以工作。下面的图片有我的工作细节。
我的测试代码
Invoke-Sqlcmd -ServerInstance 'MYSERVER' -Query 'insert into DBA_TOOLS.dbo.tbl values (1)'
您的代码 - 您缺少单引号' myserver'围绕sql server。
Invoke-Sqlcmd -ServerInstance 'myserver' -Query ''insert into DBADatabase.dbo.tbl values (1)'
希望这个帮助
答案 1 :(得分:0)
您的powershell.exe ...
命令是从外部 PowerShell执行的,可能是cmd.exe
。
在这种情况下, '...'
- 附带的字符串没有语法功能并直接传递给PowerShell,导致 it 将它们解释为包含< em> string literal ,它只是输出as-is (换句话说:你的命令是打印而不是执行)
相反,您必须使用"..."
将命令括起来传递给PowerShell;在该字符串中,您可以自由使用'...'
:
powershell.exe -ExecutionPolicy Bypass -Command "Invoke-Sqlcmd -ServerInstance myserver -Query 'insert into DBADatabase.dbo.tbl values (1)'"