由 Start-Process Cmdlet 调用时,批处理脚本未执行

Mat*_*ert 5 powershell batch-file windows-server-2012-r2

我在这里的 Windows Server 2012 R2 上有一个奇怪的问题,对我来说根本没有任何意义。

我有一个 PowerShell 脚本,它基本上具有以下结构:

Function Something-Different
{
    [...]
}

Function Start-Some-Batch
{
    Start-Process "K:\Path\To\Batch.cmd" 
}

Function Something-Else
{
    [...]
}

Something-Different
Start-Some-Batch
Something-Else
Run Code Online (Sandbox Code Playgroud)

但是批处理文件K:\Path\To\Batch.cmd永远不会被执行!

更多信息和事实:

  • 所有操作均由同一域用户执行
  • PowerShell 版本为 4.0
  • 在 Windows 资源管理器中双击批处理文件可以毫无问题地执行它
  • PowerShell 脚本不提供任何错误输出
  • 执行Start-Process "K:\Path\To\Batch.cmd"直接从PowerShell控制台的确也没有提供任何输出也不踢批处理脚本
  • $error[0] 执行后为空
  • 该函数Something-Else执行得很好(这意味着Start-Some-Batch不会阻止 PS 脚本完成其执行)
  • 运行提升的 PowerShell 脚本不会改变任何事情
  • 从 cmd.exe 提示符调用批处理脚本也不会启动它(提升与否)
  • 我怀疑Security Settings通过组策略来的一百个中的任何一个

什么会导致这种奇怪的行为?我在这里没有想法了。

小智 1

这是使用 Powershell v4 对我有用的方法。

PS C:\Scripts> Start-Process cmd -ArgumentList "/c 1.cmd" -WorkingDirectory c:\test4

1.cmd住在哪里c:\test4