如何通过powershell查找Microsoft JScript和VBScript引擎版本

如何通过powershell查找Microsoft JScript和VBScript引擎版本,powershell,vbscript,jscript,Powershell,Vbscript,Jscript,是否有任何标准方法可以通过Powershell命令或任何其他方式(如通过已安装的文件版本或任何此类方式)在windows计算机中查找已安装的JScript和VBScript引擎版本 PS C:\> (get-item "c:\windows\system32\vbscript.dll").VersionInfo.FileVersion 5.812.10240.16384 PS C:\> (get-item "c:\windows\system32\jscript.dll").Vers

是否有任何标准方法可以通过Powershell命令或任何其他方式(如通过已安装的文件版本或任何此类方式)在windows计算机中查找已安装的JScript和VBScript引擎版本

PS C:\> (get-item "c:\windows\system32\vbscript.dll").VersionInfo.FileVersion
5.812.10240.16384
PS C:\> (get-item "c:\windows\system32\jscript.dll").VersionInfo.FileVersion
5.812.10240.16384
或者,在powershell之外,您可以询问引擎

<?XML version="1.0" standalone="yes" encoding="utf-8" ?>
<package>
<job id="checkVersions" prompt="no">
<?job error="true" debug="false" timeout="10" ?>
<script id="checkVersionVBS" language="VBScript"><![CDATA[
    Call WScript.StdOut.WriteLine ( _ 
        Join(Array( _ 
            ScriptEngine, ScriptEngineMajorVersion, ScriptEngineMinorVersion, ScriptEngineBuildVersion _ 
        ), ".") _ 
    )
]]></script>
<script id="checkVersionJS" language="JScript"><![CDATA[
    WScript.StdOut.WriteLine( [
        ScriptEngine(), ScriptEngineMajorVersion(), ScriptEngineMinorVersion(), ScriptEngineBuildVersion()
    ].join('.'));
]]></script>
</job>
</package>
或者,在powershell之外,您可以询问引擎

<?XML version="1.0" standalone="yes" encoding="utf-8" ?>
<package>
<job id="checkVersions" prompt="no">
<?job error="true" debug="false" timeout="10" ?>
<script id="checkVersionVBS" language="VBScript"><![CDATA[
    Call WScript.StdOut.WriteLine ( _ 
        Join(Array( _ 
            ScriptEngine, ScriptEngineMajorVersion, ScriptEngineMinorVersion, ScriptEngineBuildVersion _ 
        ), ".") _ 
    )
]]></script>
<script id="checkVersionJS" language="JScript"><![CDATA[
    WScript.StdOut.WriteLine( [
        ScriptEngine(), ScriptEngineMajorVersion(), ScriptEngineMinorVersion(), ScriptEngineBuildVersion()
    ].join('.'));
]]></script>
</job>
</package>
请接受@MC NDs的回答,而不是这个

将@MC NDs优秀答案包装到PowerShell函数中:

Function Get-MSScriptVersions {
@'
<?XML version="1.0" standalone="yes" encoding="utf-8" ?>
<package>
<job id="checkVersions" prompt="no">
<?job error="true" debug="false" timeout="10" ?>
<script id="checkVersionVBS" language="VBScript"><![CDATA[
    Call WScript.StdOut.WriteLine(Join(Array(ScriptEngine, ScriptEngineMajorVersion, ScriptEngineMinorVersion, ScriptEngineBuildVersion), "."))
]]></script>
<script id="checkVersionJS" language="JScript"><![CDATA[
    WScript.StdOut.WriteLine([ScriptEngine(), ScriptEngineMajorVersion(), ScriptEngineMinorVersion(), ScriptEngineBuildVersion()].join('.'));
]]></script>
</job>
</package>
'@ | Set-Content (Join-Path $env:TEMP versions.wsf)
&cscript //nologo (Join-Path $env:TEMP versions.wsf)
Remove-Item (Join-Path $env:TEMP versions.wsf)
}

# call the function to get the versions
$scriptVersions = Get-MSScriptVersions
$scriptVersions
请接受@MC NDs的回答,而不是这个

将@MC NDs优秀答案包装到PowerShell函数中:

Function Get-MSScriptVersions {
@'
<?XML version="1.0" standalone="yes" encoding="utf-8" ?>
<package>
<job id="checkVersions" prompt="no">
<?job error="true" debug="false" timeout="10" ?>
<script id="checkVersionVBS" language="VBScript"><![CDATA[
    Call WScript.StdOut.WriteLine(Join(Array(ScriptEngine, ScriptEngineMajorVersion, ScriptEngineMinorVersion, ScriptEngineBuildVersion), "."))
]]></script>
<script id="checkVersionJS" language="JScript"><![CDATA[
    WScript.StdOut.WriteLine([ScriptEngine(), ScriptEngineMajorVersion(), ScriptEngineMinorVersion(), ScriptEngineBuildVersion()].join('.'));
]]></script>
</job>
</package>
'@ | Set-Content (Join-Path $env:TEMP versions.wsf)
&cscript //nologo (Join-Path $env:TEMP versions.wsf)
Remove-Item (Join-Path $env:TEMP versions.wsf)
}

# call the function to get the versions
$scriptVersions = Get-MSScriptVersions
$scriptVersions

美好的正在尝试验证我的旧代码。作为官方脚本语言,JScript和VBScript与它们绑定的主机共享同一版本。是否有可能获取项目c:\windows\system32\cscipt.exe.VersionInfo.FileVersion或cscript//logo | select string\d+\.\d+$|%{$\.matches[0].value}命令不足以获取两个语言版本?@Kul Tigin,目前我没有测试环境,但我记得在XP中,为了优化ajax环境中的行为,Microsoft仅更新了JScript引擎,以优化小型、频繁的内存操作。为了安全起见,我认为,你不应该认为一切都会匹配。很好。正在尝试验证我的旧代码。作为官方脚本语言,JScript和VBScript与它们绑定的主机共享同一版本。是否有可能获取项目c:\windows\system32\cscipt.exe.VersionInfo.FileVersion或cscript//logo | select string\d+\.\d+$|%{$\.matches[0].value}命令不足以获取两个语言版本?@Kul Tigin,目前我没有测试环境,但我记得在XP中,为了优化ajax环境中的行为,Microsoft仅更新了JScript引擎,以优化小型、频繁的内存操作。为了安全起见,我认为,你不应该假设一切都会匹配。