如何通过 powershell 查找 Microsoft JScript 和 VBScript 引擎版本
How to find Microsoft JScript and VBScript engines versions through powershell
是否有任何标准方法可以通过 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>
另存为 versions.wsf
文件并 运行 另存为 cscript //nologo versions.wsf
您将得到类似
的内容
W:\>cscript //nologo versions.wsf
VBScript.5.8.16384
JScript.5.8.16384
请接受@MC ND 的回答,不是这个。
将@MC ND 的出色答案包装到 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
$scriptVersions
现在包含一个包含两个条目的数组,如下所示:
VBScript.5.8.18538
JScript.5.8.18538
是否有任何标准方法可以通过 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>
另存为 versions.wsf
文件并 运行 另存为 cscript //nologo versions.wsf
您将得到类似
W:\>cscript //nologo versions.wsf
VBScript.5.8.16384
JScript.5.8.16384
请接受@MC ND 的回答,不是这个。
将@MC ND 的出色答案包装到 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
$scriptVersions
现在包含一个包含两个条目的数组,如下所示:
VBScript.5.8.18538
JScript.5.8.18538