我正在寫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