我正在通过SQL运行powershell命令,请找到以下代码
declare @sql varchar(200)
set @sql = 'powershell.exe Get-WmiObject -Class MSFT_PhysicalDisk -Namespace root\Microsoft\Windows\Storage| select FriendlyName'
EXEC xp_cmdshell @sql
它给了我输出
output
'select' is not recognized as an internal or external command,
operable program or batch file.
NULL
如果我删除select而不是powershell命令正在工作,为什么会这样
答案 0 :(得分:1)
您需要将引号放在这样的引号中:
declare @sql varchar(200)
set @sql = 'powershell.exe "Get-WmiObject -Class MSFT_PhysicalDisk -Namespace root\Microsoft\Windows\Storage| select FriendlyName"'
EXEC xp_cmdshell @sql
现在,它基本上正在运行两个单独的命令:
powershell.exe Get-WmiObject -Class MSFT_PhysicalDisk -Namespace root\Microsoft\Windows\Storage|
然后
select| FriendlyName
因此第二个命令无效并导致错误,引号将它们组合在一起以使其处理为一个。