我正在尝试在网络计算机上运行一个简单的查询来获取他们的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.
,此问题都会持续存在。有什么建议吗?
答案 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');