111 lines
3.0 KiB
Plaintext
111 lines
3.0 KiB
Plaintext
' // ***************************************************************************
|
|
' //
|
|
' // Copyright (c) Microsoft Corporation. All rights reserved.
|
|
' //
|
|
' // Microsoft Deployment Toolkit Solution Accelerator
|
|
' //
|
|
' // File: ZTIPSUtility.vbs
|
|
' //
|
|
' // Version: 6.3.8456.1000
|
|
' //
|
|
' // Purpose: Execute a PowerShell script
|
|
' //
|
|
' // Usage: cscript ZTIPowerShell.wsf
|
|
' //
|
|
' // ***************************************************************************
|
|
|
|
|
|
Function RunPowerShellScript(sScriptName, bNative)
|
|
|
|
Dim sModules
|
|
Dim sSource
|
|
Dim sCmd
|
|
Dim iRetVal
|
|
Dim sVersion
|
|
Dim bPrefix
|
|
Dim sScript
|
|
Dim LPVersion
|
|
|
|
|
|
' Copy modules locally if they aren't already, to avoid .NET trust issues
|
|
|
|
sModules = oEnvironment.Item("DeployRoot") & "\Tools\Modules"
|
|
If Left(oEnvironment.Item("DeployRoot"), 2) = "\\" then
|
|
|
|
sSource = sModules
|
|
sModules = oUtility.LocalRootPath & "\Modules"
|
|
If not oFSO.FolderExists(sModules) then
|
|
oLogging.CreateEntry "Creating " & sModules & " folder for caching PowerShell modules locally.", LogTypeInfo
|
|
oFSO.CreateFolder sModules
|
|
oLogging.CreateEntry "Copying " & sSource & " folder to " & sModules, LogTypeInfo
|
|
oFSO.CopyFolder sSource, sModules, true
|
|
End if
|
|
|
|
End if
|
|
|
|
|
|
' Decide if we need to thunk for an x86 process
|
|
|
|
bPrefix = false
|
|
If UCase(oEnv("PROCESSOR_ARCHITEW6432")) = "AMD64" and (not bNative) then
|
|
bPrefix = true
|
|
End if
|
|
|
|
|
|
' Determine the appropriate PowerShell host to run
|
|
|
|
sVersion = ""
|
|
On Error Resume Next
|
|
Err.Clear
|
|
sVersion = oShell.RegRead("HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion")
|
|
If Err then
|
|
sVersion = oShell.RegRead("HKLM\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion")
|
|
End if
|
|
On Error Goto 0
|
|
If sVersion = "" then
|
|
oLogging.CreateEntry "WARNING: PowerShell was not detected.", LogTypeWarning
|
|
Else
|
|
oLogging.CreateEntry "PowerShell version detected: " & sVersion, LogTypeInfo
|
|
End if
|
|
|
|
LPVersion = Left(sVersion,1)
|
|
If IsNumeric(LPVersion) and LPVersion >= 3 then
|
|
sCmd = """" & sModules & "\Microsoft.BDD.TaskSequenceModule\Microsoft.BDD.TaskSequencePSHost40.exe"""
|
|
If bPrefix then
|
|
sCmd = """" & sModules & "\Microsoft.BDD.TaskSequenceModule\Microsoft.BDD.Thunk40.exe"" " & sCmd
|
|
End if
|
|
Else
|
|
sCmd = """" & sModules & "\Microsoft.BDD.TaskSequenceModule\Microsoft.BDD.TaskSequencePSHost35.exe"""
|
|
If bPrefix then
|
|
sCmd = """" & sModules & "\Microsoft.BDD.TaskSequenceModule\Microsoft.BDD.Thunk35.exe"" " & sCmd
|
|
End if
|
|
End if
|
|
|
|
|
|
' Get the full path to the script
|
|
|
|
iRetVal = oUtility.FindFile(sScriptName, sScript)
|
|
If iRetVal <> Success then
|
|
oLogging.CreateEntry "Unable to locate script " & sScriptName, LogTypeError
|
|
RunPowerShellScript = 10901
|
|
Exit Function
|
|
End if
|
|
|
|
|
|
' Add the command line parameters
|
|
|
|
sCmd = sCmd & " """ & sScript & """ """ & oUtility.LogPath & """ " & oEnvironment.Item("Parameters")
|
|
|
|
|
|
' Run the command line
|
|
|
|
oLogging.CreateEntry "About to run: " & sCmd, LogTypeInfo
|
|
iRetVal = oShell.Run(sCmd, 0, true)
|
|
|
|
|
|
' Return the exit code
|
|
|
|
RunPowerShellScript = iRetVal
|
|
|
|
End Function
|