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