【问题标题】:Tasklist using xp_cmdshell使用 xp_cmdshell 的任务列表
【发布时间】:2014-10-22 03:18:57
【问题描述】:

我想知道我将如何使用将输出图像名和主机名的任务列表 cmd

我有这样的语法,但无法将结果合二为一。

EXEC xp_cmdshell 'tasklist /fi "imagename eq notepad.exe"';  

加上主机名

【问题讨论】:

  • 什么是plus hostname?它是试图成为您正在运行的语法的一部分还是您想要的解释?主机名将始终是 SQL Server,即SELECT @@SERVERNAME。如果您希望主机名显示为另一列,请准确告诉我们您正在运行的 SQL 版本,因为这与方法有关
  • 你好 Nick,是的,我对结果的预期进行了解释,我的版本是 mssql 2012 和 2008 r2,我需要将结果插入表中。我有两列,输出和服务器名。感谢您的回复
  • 您首先需要连接到单个 SQL Server 来运行它。您使用什么机制来运行它?您需要在许多服务器上运行它。
  • 顺便说一句,我正在使用协调器。所以我很难合并 2 sql server 和 microsoft orchestrator
  • 我从未使用过 Orchestrator,但我猜它是某种作业管理系统。你为什么不发布一个具体的问题,我们可以尝试解决它

标签: sql-server xp-cmdshell tasklist


【解决方案1】:

这会给你你想要的:

DECLARE @T TABLE (capture VARCHAR(5000))

INSERT @T
EXEC xp_cmdshell 'tasklist /fi "imagename eq notepad.exe"'; 

INSERT INTO dbo.[N4FO_OpenGUIOutput] (Output,system) 
SELECT capture, @@SERVERNAME as host FROM @T WHERE capture IS NOT NULL

但您必须实际连接到 SQL Server 才能运行它,因此您已经需要知道要连接的主机名。

【讨论】:

  • 嗨,尼克,对不起,我离开了几天,这是我的脚本,在 ControlDB 中插入了一些错误。[dbo].[N4FO_OpenGUIOutput](输出,系统)EXEC xp_cmdshell 'tasklist / fi "图像名 eq notepad.exe"';选择 @@SERVERNAME,这是我的错误消息 213,级别 16,状态 7,过程 xp_cmdshell,第 1 行列名或提供的值的数量与表定义不匹配。
  • 是的。那不是我发布的脚本,它是无效的。我将使用您刚才提到的有关表 [N4FO_OpenGUIOutput] 的新信息更新我的脚本
  • 感谢 nick,将等待您的更新。非常感谢
  • 如果这个问题有帮助,请标记为正确。
  • 嗨,尼克,是的,答案是正确的。如何将其标记为正确?
猜你喜欢
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 2012-06-17
相关资源
最近更新 更多