Perl Windows命令失败

时间:2017-11-05 17:24:33

标签: windows perl psexec

我正在尝试在网络计算机上运行一个简单的查询来获取他们的Windows版本。从命令行使用时,此命令将运行并返回预期结果:

<?php $element_class = uniqid(); ?>

<article class="element-<?php echo $element_class; ?>">
<style type="text/css">
    element-<?php echo $element_class; ?> {
       color: <?php echo $dynamic_color; ?>;
    }
</style>
<p>Some text</p>
</article>

但是从Perl运行时使用:

psexec \\comp_name reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId

我从REG system("psexec \\\\$comp_name reg query 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' /v ReleaseId") 收到错误考虑到两个命令是相同的,我无法弄清楚为什么从Perl运行它时会出现错误。我唯一的假设就是它解决报价的方式。请注意,无论我是使用system,exec还是ERROR: Invalid key name.,此问题都会持续存在。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

你需要加倍所有的反斜杠:

system("psexec \\\\$comp_name reg query 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion' /v ReleaseId")

答案 1 :(得分:0)

加倍所有反斜杠将解决问题是,然而当使用单个外部引号时,内部双引号消除了添加双反斜杠的需要,并且更易于阅读。

system('psexec \\$comp_name reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ReleaseId');