2017-02-22 38 views
0

Есть ли какой-либо стандартный способ найти установленные версии JScript и VBScript версий для Windows с помощью команд Powershell или любым другим способом, например, с помощью установленной версии файла или любого такого путь?Как найти версии двигателей Microsoft JScript и VBScript с помощью powershell

ответ

5
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 

Или, из командной оболочки, вы можете спросить о двигателях.

<?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 
+0

Ницца. Попытка проверить мой старый код. В качестве официальных языков сценариев оба 'JScript' и' VBScript' имеют одну и ту же версию с хостом, с которым они связаны. Есть ли возможность '(get-item" c: \ windows \ system32 \ cscipt.exe "). VersionInfo.FileVersion' или' cscript // logo | select-string "\ d + \. \ d + $" | % {$ _. matches [0] .value} 'команд недостаточно, чтобы получить обе языковые версии? –

+1

@ Kul-Tigin, на данный момент у меня нет среды для тестирования, но я помню, что в XP, чтобы оптимизировать поведение в средах ajax, Microsoft обновила только движок JScript (что-то относительно оптимизации небольшой, частой, памяти операции). Чтобы играть в безопасное место, просто мое мнение, вы не должны предполагать, что все будет соответствовать. –

0

Пожалуйста, примите @MC НСР ответа, а не это.

Обертывание @MC НСР отличный ответ в функцию 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