powershell - 如何以管理员身份并使用批处理文件中的参数运行 PowerShell?

标签 powershell batch-file cmd

我分别找到了这两项任务的答案,但没有一起找到:

  • 从批处理文件以管理员身份运行 PowerShell

  • 使用批处理文件中的参数运行 PowerShell

但我想以管理员身份运行 PowerShell 并且 使用批处理文件中的参数

因此,我确信到目前为止这不是重复的。

这个问题因此变得复杂:

运行提升的 PowerShell 时,我使用 ArgumentList 开关指向文件路径。我还用它来传递参数。另外,我已经能够成功地使用这个开关。不过,我似乎无法将它用于这两项任务。

以下是我目前使用 PowerShell 的方式:

作为管理员:

powershell -Command "& {Start-Process powershell -ArgumentList '-File "filePath.ps1' -Verb RunAs}"

带参数:

powershell -ExecutionPolicy unrestricted Import-Module "filePath.ps1" -ArgumentList "arg1","arg2"

我尝试过的:

我尝试将参数添加到传入文件的 ArgumentList 中,但无法识别它们。

我还尝试将 -Verb RunAs 添加到工作参数行,但 PowerShell 认为我正在尝试传递另一个名为 Verb 的参数,并且无法以管理员身份运行 PowerShell。

是否可以通过切换参数传递方式或提升 PowerShell 的方式来实现以管理员身份运行 PowerShell 和使用参数运行 PowerShell?

最佳答案

无需第三方工具就可以解决您的问题,但解决方案有些神秘。

因此,请考虑下载 Bill Stewart 有用的 elevate32elevate64 工具,如 his answer 中所述。 ,这简化了解决方案。

这是一个调用 Get-Date 的简单示例从 cmd.exe(或批处理文件)启动的提升的 PowerShell session 中带有参数的 cmdlet:

powershell -command "Start-Process -verb runas powershell" "'-noexit -command get-date -UFormat %s'"

请注意,如何将命令行传递到中间 -command 参数创建的提升的 PowerShell session ,并作为单个参数传递用嵌入的单引号引起来

引用可能会很棘手,但这种方法原则上也适用于调用 *.ps1 文件:

  • powershell -command "Start-Process -verb runas powershell" 是命令行的不变部分。

  • 剩余的 "..." 括起来的字符串必须包含一个嵌套单个字符串,并带有 PowerShell 识别的引号(单引号是最简单的),其中包含 >您将直接传递给 powershell ... 命令行调用的所有 参数。

应用于您的示例:

... "'-File C:\path\to\filePath.ps1 arg1 arg2'"

注意:请务必使用脚本文件的完整路径,因为提升的 PowerShell session 不会(必然)运行在与调用 session 相同的目录。

如果您需要引用嵌套字符串中的参数,请使用\":

... "'-File \"c:\path with spaces\to\filePath.ps1\" arg1 arg2'"

关于powershell - 如何以管理员身份并使用批处理文件中的参数运行 PowerShell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40410747/

相关文章:

node.js - 如何使用 Gulp 在不同文件夹中调用 Powershell 脚本

csv - 如何让Powershell从单个CSV单元读取多个值?

windows - 在后台运行批处理文件

windows - 在 Excel 中打开特定电子表格的 win cmd 是什么?

windows - 批量删除文本文件中的重复行

powershell - 您不能在空值表达式上调用方法

powershell - 如果将字符串放在一个序列或另一个序列中,为什么使用Powershell 4.0在文本文件中搜索字符串会被忽略?

Windows cmd shell xcopy 到网络目录不起作用

windows - 此时 %x 出乎意料。批处理脚本

c++ - 制作带参数的命令行程序