WScript.Shell 和 WScript.exe 都不是 PowerShell 的默认命令或组件,它们属于 Windows 系统自带的「Windows 脚本宿主(Windows Script Host, WSH)」,主要用于执行 VBScript 或 JScript 脚本,与 PowerShell 是独立的技术体系。

具体区别:

  1. WScript.exe

    • 是 Windows 系统的一个可执行程序(位于 C:\Windows\System32\wscript.exe),属于 WSH 的一部分,用于运行 VBScript(.vbs)或 JScript(.js)脚本。
    • 它与 PowerShell 无关,在 CMD 或 PowerShell 中都可以调用(本质是启动一个独立程序),例如:

      powershell

      # 在 PowerShell 中调用 WScript 执行 VBScript
      WScript.exe C:\script\test.vbs
      
  2. WScript.Shell

    • 是 WSH 提供的一个 COM 组件对象,用于在 VBScript/JScript 中执行系统操作(如启动进程、操作窗口、读取环境变量等)。
    • 它本身不是命令,而是需要在 VBScript/JScript 中通过 CreateObject 调用,例如在 .vbs 文件中:

      vbscript

      ' 这是 VBScript 代码,不是 PowerShell
      Set objShell = CreateObject("WScript.Shell")  ' 创建 WScript.Shell 对象
      objShell.Run "notepad.exe", 0, False  ' 启动记事本(隐藏窗口)
      
    • 在 PowerShell 中也可以通过 COM 接口调用 WScript.Shell,但这是借助 Windows 系统的 COM 支持,而非 PowerShell 自身的命令,例如:

      powershell

      # PowerShell 中调用 WScript.Shell COM 对象
      $shell = New-Object -ComObject WScript.Shell
      $shell.Run("notepad.exe", 0, $false)
      

总结:

  • WScript.exe 是独立的可执行程序(WSH 解释器),不属于 PowerShell。
  • WScript.Shell 是 WSH 的 COM 组件,可在 PowerShell 中通过 COM 接口调用,但本身不是 PowerShell 的默认命令。
  • 它们的核心用途是处理 VBScript/JScript 脚本,与 PowerShell 的 cmdlet(如 Start-Process)分属不同技术体系。

更多推荐