首页 > 解决方案 > 使用相对路径的批处理文件中的 PowerShell

问题描述

我有一个批处理文件,它使用提升的权限启动 PowerShell 脚本并绕过执行策略:

PowerShell -NoProfile -ExecutionPolicy Unrestricted -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Unrestricted -File ""C:\Users\Bob\Desktop\New folder\Server.ps1""' -Verb RunAs}";

这行得通!我希望能够对文件路径使用相对路径。

PowerShell -NoProfile -ExecutionPolicy Unrestricted -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Unrestricted -File "".\Server.ps1""' -Verb RunAs}";

由于某种原因,这失败了。我究竟做错了什么?

标签: powershellbatch-filerelative-path

解决方案


如果您的 PowerShell 脚本不在 cmd 指向的位置,您将在该目录中搜索相对路径时收到错误消息。如果 PS 脚本位于批处理脚本的同一位置,则可以从批处理中调用 PS 脚本,如下所示:

Powershell "%~dp0Server.ps1"

如果 PowerShell 和批处理脚本位置不同,首先需要在调用 PowerShell 脚本之前更改批处理中的目录,如下所示:

cd /d "C:\Users\Bob\Desktop\New Folder\"
Powershell -NoProfile .\Server.ps1

推荐阅读