1

我想编写一个程序以使用域管理员用户凭据登录远程机器并执行以下任务

  1. 获取一些系统信息,如操作系统、IIS 版本、.net 版本等
  2. 将一些文件从远程机器传输到本地机器,反之亦然。

是否有任何 Windows API 可以做到这一点?

我正在尝试执行的任务可以使用远程桌面应用程序手动完成,但我不想使用 GUI,因为我想自动执行此操作,以便定期从我们的环境中获取机器信息并显示在仪表板中。

4

1 回答 1

1

您可以使用 winrm 并使用 powershell 将其自动化 https://msdn.microsoft.com/en-us/library/aa384426%28v=vs.85%29.aspx

这是一个 vb示例(您可以在 c# 中使用相同的 COM 对象)

Const RemoteComputer = "ComputerName.domain.com"
Set objWsman = CreateObject("Wsman.Automation")
Set objConnectionOptions = objWsman.CreateConnectionOptions
objConnectionOptions.UserName = "Username"
objConnectionOptions.Password = "Password"
iFlags = objWsman.SessionFlagUseKerberos Or _
  objWsman.SessionFlagCredUserNamePassword
Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
  iFlags, objConnectionOptions)
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" & _
  "wmi/root/cimv2/Win32_OperatingSystem"
Set objResponse = objSession.Enumerate(strResource)

While Not objResponse.AtEndOfStream
    DisplayOutput(objResponse.ReadItem) 
Wend

'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
    Dim xmlFile, xslFile
    Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0") 
    Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile) 
End Sub
于 2015-02-06T17:09:31.783 回答