我尝试使用PStool为进一步的服务器管理编写一些代码,但是如何在很多服务器中自动完成?这是我的代码只处理一个服务器:
' list reg key value
psexec \\<<sever name>> -u <<userName>> -p <<password>> reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl > <<server Name>>_regedit.txt
' list network information
psexec \\<<sever name>> -u <<userName>> -p <<password>> ipconfig /all
' list services.msc
psservice \\<<server name>> -u <<username>> -p <<password>> query > <<serverName>>_service.txt
' list the hotfix
psinfo -h \\<<servername>> -u <<adminUsername>> -p <<adminPassword>> > <<serverName>>_hotfix.txt
' list the installed software
psinfo -s \\<<servername>> -u <<adminUsername>> -p <<adminPassword>> > <<serverName>>_Software.txt
如何将这些添加到.vbs并自动执行服务器列表文件(csv或txt)?
请帮忙!
答案 0 :(得分:2)
您可以在VBScript中使用WMI而不是PsTools。基本示例:
server = "hostname"
Set wmi = GetObject("winmgmts://" & server & "/root/cimv2")
For Each obj In wmi.ExecQuery("SELECT * FROM wmi_class")
WScript.Echo obj.property
Next
将hostname
替换为实际主机名,将wmi_class
替换为WMI类,将property
替换为该类的实际属性的名称。您的相关课程是:
在某些情况下,您可能需要使用WHERE
子句限制查询返回的结果:
SELECT * FROM wmi_class WHERE property = 'value'
您还可以将WMI用于work on the registry。在您的特定方案中,您将需要EnumValues
方法来枚举注册表项的值,然后使用相应的getter方法查询值:
Const HKLM = &H80000002
server = "hostname"
keyPath = "SYSTEM\CurrentControlSet\Control\CrashControl"
Set reg = GetObject("winmgmts:{impersonationLevel=impersonate}!//" _
& server & "/root/default:StdRegProv")
reg.EnumValues HKLM, keyPath, valueNames, valueTypes
For i = 0 To UBound(valueNames)
Select Case valueTypes(i)
Case REG_DWORD
reg.GetDWORDValue HKLM, keyPath, valueNames(i), value
WScript.Echo value
Case ...
...
End Select
Next
请注意,与此处使用命名空间/root/default:StdRegProv
之前不同。
可以使用FileSystemObject
方法从CSV读取服务器名称。对于具有以下结构的CSV:
hostname,address,...
host_A,10.23.42.1,...
host_B,10.23.42.2,...
...
你会做这样的事情:
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\path\to\your.csv")
f.SkipLine 'skip header line
Do Until f.AtEndOfStream
server = Split(f.ReadLine)(0)
...
Loop
f.Close
请注意,如果CSV是Unicode格式,则必须更改行
Set f = fso.OpenTextFile("C:\path\to\your.csv")
进入这个:
Set f = fso.OpenTextFile("C:\path\to\your.csv", 1, False, True)