我正在写ruby脚本访问其他联网机器(窗口)上的文件夹。我需要知道该机器上的环境变量,我该怎么做?一旦我能够访问远程环境变量,它将帮助我知道软件的安装位置。访问红宝石中另一台机器的环境变量
感谢 N.I
我正在写ruby脚本访问其他联网机器(窗口)上的文件夹。我需要知道该机器上的环境变量,我该怎么做?一旦我能够访问远程环境变量,它将帮助我知道软件的安装位置。访问红宝石中另一台机器的环境变量
感谢 N.I
你需要部署简单的HTTP服务器与打印到你需要(即环境变量等)输出流的信息助手脚本。 接下来,您必须从远程机器调用该脚本,并解析结果。
或者,在没有服务器的情况下,将计划任务添加到远程计算机,每天要写一次所需信息到某个已知文件(我的意思是以固定路径文件)。这很简单,但是您会看到延迟的信息更改。
您的解决方案是否需要纯Ruby?如果没有,您可以使用PsExec命令。下面将输出上remote
环境变量(当前用户):
psexec \\remote cmd /C set
这通过远程执行cmd
并通过它的命令set
运行。
以下Ruby代码将运行PSEXEC并返回远程环境变量的哈希:
Hash[*`psexec \\\\remote cmd /C set`.split("\n").
collect {|i| i.split('=', 2)}.flatten]
没有必要启动一个远程'cmd'实例。例如,PowerShell可以很好地处理环境变量:它们通过'Env'提供程序支持,这意味着它们显示为名为'Env:'的虚拟“驱动器”,就像注册表一样。如果你想列出所有的环境变量,你可以使用'Get-ChildItem Env:'(或其别名'dir Env:'或'ls Env:')。如果你想访问一个特定的环境变量,你可以使用'Get-Content Env:\ PROGRAMFILES'(或'cat'或'type'),就像使用其他文件或变量一样。您也可以使用简写'$ Env:PROGRAMFILES'语法。 – 2009-12-31 00:33:00
谢谢菲尔。我会试试这个,让你知道。 – 2009-12-31 10:54:12
我会建议ruby WMI interface。只要你有一个相当现代化的Windows(XP和以上的IIRC),你可以很容易地从远程机器获取环境变量。 Google for more information。
@UncleMiF, 谢谢!你的第二个建议是我计划做的事情,如果没有其他解决办法:) – 2009-12-31 10:56:32