【问题标题】:script working in Visual studio but not when running from Batch file脚本在 Visual Studio 中工作,但在从批处理文件运行时不工作
【发布时间】:2020-10-25 04:08:54
【问题描述】:

我有一个脚本应该使用不同的凭据运行 powershell,然后在该会话中应该转到网络路径并安装文件:

$path1 = "\\192.168.10.10\bucket\test.exe"
Start-Process powershell -Credential $creds -ArgumentList "-Command &{Start-Process $path1 -Verb RunAs}"

从 ISE 运行它看起来没有问题,但是当我保存 ps 文件并尝试从批处理文件中调用它时,我收到以下错误:

这可能是什么原因?

【问题讨论】:

  • powershell.exe%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe。你如何从批处理中调用Start-Processpowershell -command?

标签: windows powershell networking path


【解决方案1】:

当您将Start-Process-Credential 参数一起使用时,调用者的当前目录 很重要:

如果-Credential 参数标识的目标用户恰好没有访问调用者当前目录所需的权限,你会得到你看到的错误。

解决办法:

  • 使用-WorkingDirectory 参数为目标用户 允许访问的新进程指定当前(工作)目录。

  • 或者,首先在调用者的上下文中切换到这样的目录。

【讨论】:

  • 我尝试了其他方法,但仍然出现错误。我要运行的文件是 locallay 现在位于:c:\programdata\mbsetup.exe - 我已经检查并且存储在 $creds 中的用户凭据有权从那里运行,如果我与用户一起登录,我可以去那里运行程序,但如果我尝试从 powershell 执行,我仍然会收到错误,有什么建议吗?
  • 如果-WorkingDirectory c:\programdata 没有帮助,那么我没有任何解释。如果您有一个简单的可重现案例,请提出一个新问题。
猜你喜欢
  • 2012-03-20
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 2018-04-14
相关资源
最近更新 更多