-1

我必须将 .cfg 文件复制到工作场所服务器上程序文件目录下的特定位置。

不幸的是,这不仅取决于操作系统(2003/2008/2012),而且还必须确定操作系统是 32 位还是 64 位,并在适用时复制到“程序文件(x86)”目录路径。

我的计划是在一台服务器上拥有文件的三个不同版本,并让脚本将相关版本复制到正确的位置(覆盖现有文件),但我对 vbscripting 的接触几乎为零,所以我挣扎大时代!

4

2 回答 2

2

WMI 可能是最好的方法。假设脚本将在每个目标主机上运行,​​您可以执行以下操作:

srcFolder = "..."

Set sh  = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set wmi = GetObject("winmgmts://./root/cimv2")

For Each os In wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem")
  ver  = Left(os.Version, 3)
Next

Select Case ver
  Case "5.2" : src = fso.BuildPath(srcFolder, "w3003_foo.cfg")
  Case "6.0" : src = fso.BuildPath(srcFolder, "w2008_foo.cfg")
  Case "6.1" : src = fso.BuildPath(srcFolder, "w2008r2_foo.cfg")
  Case "6.2" : src = fso.BuildPath(srcFolder, "w2012_foo.cfg")
  Case Else  : WScript.Echo "Unsupported OS version: " & ver
               WScript.Quit
End Select

If sh.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "AMD64" Then
  dst = sh.ExpandEnvironmentStrings("%ProgramFiles(x86)%\some\foo.cfg")
Else
  dst = sh.ExpandEnvironmentStrings("%ProgramFiles%\some\foo.cfg")
End If

fso.CopyFile src, dst
于 2013-02-13T13:29:56.507 回答
1

您可以通过 WMI(或从注册表)获得的操作系统版本。

For Each os In GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
    ver = os.Version
Next

但是对于操作系统架构,我会建议下一个 - WMIWin32_ProcessorShell.Environment(更多胖子)。

ver = GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
If ver = 64 Then ...

ver = CreateObject("WScript.Shell").Environment("SYSTEM")("PROCESSOR_ARCHITECTURE")
If ver = "AMD64" Then ...
于 2013-02-15T05:27:19.100 回答