2014-10-22 28 views
0

我想知道我怎麼會用任務列表CMD將輸出imagename加上主機名Tasklist命令使用xp_cmdshell的

我有這樣的語法,但無法將結果合併成一個。

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

,加上主機名

+0

'plus hostname'是什麼?它試圖成爲你正在運行的語法的一部分或者你想要的解釋嗎?主機名將始終是SQL Server,因此它是「SELECT @@ SERVERNAME」。如果您希望主機名顯示爲另一列,請告訴我們您正在運行的SQL版本,因爲它與方法有關 – 2014-10-22 04:28:55

+0

Hello Nick,是的,plus是我對結果中期望的解釋,我的版本是mssql 2012年和2008年R2,我需要將結果插入表中。我有兩列,輸出和服務器名。 thnaks爲您的答覆 – 2014-10-23 01:06:40

+0

您首先需要_connect_到單個SQL Server來運行此。你用什麼機制來運行它?你需要在很多服務器上運行它。順便說一下,我正在使用Orchestrator的 – 2014-10-23 03:57:46

回答

0

這會給你想要的東西:

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運行它,所以你就已經需要知道連接到的主機名稱。

+0

謝謝尼克,這對我來說是一個很大的幫助! – 2014-10-23 05:20:37

+0

您好尼克,對不起,我走了兩天,這裏是我的腳本,並具有一定的誤差 INSERT INTO ControlDB。[DBO]。[N4FO_OpenGUIOutput](輸出,系統) EXEC xp_cmdshell的「任務列表/網絡連接「imagename EQ NOTEPAD.EXE「」; SELECT @@ SERVERNAME ,這裏是我的錯誤 消息213,級別16,狀態7,過程xp_cmdshell的,1號線 列名或提供值的數目不匹配表定義。 – 2014-10-29 04:13:55

+0

是的。這不是我發佈的腳本,也不是有效的。我會用這個關於表'[N4FO_OpenGUIOutput]'的新信息更新我的腳本,你剛剛提到 – 2014-10-29 05:16:36