Windows 在Ruby中访问另一台机器的环境变量

Windows 在Ruby中访问另一台机器的环境变量,windows,ruby,Windows,Ruby,我正在编写ruby脚本,它可以访问其他联网机器(windows)上的文件夹。我需要知道那台机器上的环境变量,我该怎么做?一旦我访问了远程环境变量,它将帮助我知道软件安装在哪里 谢谢 N.I您需要部署简单的HTTP服务器,并使用助手脚本将您需要的信息(即环境变量等)打印到输出流中。 接下来,您必须从远程计算机调用该脚本,并解析结果 或者,在没有服务器的情况下,将计划任务添加到您的远程计算机,每天将所需信息写入一次已知文件(我指的是固定路径的文件)。它简单得多,但是您会看到延迟的信息更改。您的解决方

我正在编写ruby脚本,它可以访问其他联网机器(windows)上的文件夹。我需要知道那台机器上的环境变量,我该怎么做?一旦我访问了远程环境变量,它将帮助我知道软件安装在哪里

谢谢
N.I

您需要部署简单的HTTP服务器,并使用助手脚本将您需要的信息(即环境变量等)打印到输出流中。 接下来,您必须从远程计算机调用该脚本,并解析结果


或者,在没有服务器的情况下,将计划任务添加到您的远程计算机,每天将所需信息写入一次已知文件(我指的是固定路径的文件)。它简单得多,但是您会看到延迟的信息更改。

您的解决方案需要纯Ruby吗?如果没有,您可以使用该命令。以下内容将在
远程
上输出环境变量(针对当前用户):

这是通过远程执行
cmd
并将命令
set
传递给它来实现的

以下Ruby代码将运行PsExec并以哈希形式返回远程环境变量:

Hash[*`psexec \\\\remote cmd /C set`.split("\n").
  collect {|i| i.split('=', 2)}.flatten]

我会推荐你的。只要你有一个相当现代的Windows(XP和up IIRC),你就可以很容易地从远程机器获取环境变量

无需启动远程
cmd
实例。PowerShell可以很好地处理环境变量:它们通过
Env
提供程序得到支持,这意味着它们显示为一个名为
Env:
的虚拟“驱动器”,就像注册表一样。如果要列出所有环境变量,可以执行以下操作
Get ChildItem Env:
(或其别名
dir Env:
ls Env:
)。如果要访问特定的环境变量,请使用
Get Content Env:\PROGRAMFILES
(或
cat
type
)就像使用任何其他文件或变量一样。您也可以使用速记
$Env:PROGRAMFILES
语法。谢谢。“我会试试看,然后告诉你的。”叔叔,谢谢!你的第二个建议是我计划的,如果没有其他办法,我会做的:)
Hash[*`psexec \\\\remote cmd /C set`.split("\n").
  collect {|i| i.split('=', 2)}.flatten]