2012-12-01 34 views
9

這是如果從用戶催生了命令提示符下運行工作正常命令:PSEXEC - 「句柄無效」當運行命令,系統用戶

PSEXEC \\xxx.xxx.xxx.xxx -u xxxx -p xxxx -accepteula cmd /c "TYPE C:\Pyxislog\PYXIS01.log|Find/i "%ID%"" >nul 

但是,如果我嘗試運行此從一個系統調用命令提示符我得到這個:

Couldn't access 10.219.149.65: 
The handle is invalid. 
Connecting to 10.219.149.65... 

它作爲一個系統用戶的身份運行,因爲它會通過它被視爲一個系統用戶的遠程軟件工具進行部署。這是psexec的限制嗎?是的,用戶名和密碼具有管理權限。

回答

8

後許多研究表明,這是一項Windows安全功能,可阻止對系統用戶的所有網絡訪問,其中包括以另一用戶身份運行任務。我發現避免這種情況的最好方法是創建一個計劃任務,以從管理員帳戶運行psexec。

1

Psexec強制使用系統用戶帳戶,通過添加-s參數。

我們使用psexec在遠程計算機上啓動一些任務,並登錄數據庫表。 當我們不使用-s參數用戶顯示爲域\管理員,但如果你使用 -s參數它對於無效的句柄消息選中此顯示爲「系統」

https://superuser.com/questions/200938/psexec-the-handle-is-invalid

+0

感謝您的意見,但您可能會誤解我的意思。該行工作正常,如果我運行我的完整批處理文件,因爲我正在運行批處理文件作爲用戶帳戶。但是,如果我嘗試將程序包部署到手動運行的同一臺機器上,則它將失敗,因爲部署以SYSTEM用戶身份運行該批處理文件。我不需要PSEXEC來訪問遠程計算機上的系統帳戶,我需要它來訪問管理員帳戶。 – bill

+0

您是否在psexec登錄中使用相同的用戶帳戶?我想你是 –

+0

是的,例如我複製粘貼我上面顯示的PSEXEC(填充了xxxx)的命令到打開的CMD窗口中,然後打開>運行> CMD。然後我通過執行'psexec -i -s cmd.exe'作爲SYSTEM用戶調用另一個CMD窗口,然後粘貼與我在第一個CMD窗口中完全相同的命令,並重新創建此錯誤。 – bill

1

您是否嘗試過使用-h標誌?

from technet:-h如果目標系統是Vista或更高版本,則使用帳戶的提升令牌運行進程(如果可用)。

全頁:https://technet.microsoft.com/en-us/sysinternals/psexec.aspx

+0

此過程正在NT Authority \ SYSTEM帳戶下運行,而不是以用戶身份運行。所以它沒有使用提升令牌。 – bill

0

這可能是無關的,但我居然發現,如果連接下樓到機器,我得到這個「句柄無效」的錯誤 - 即機器睡着了。