从 Windows 快捷方式运行 PowerShell 命令“Start-Process”

从 Windows 快捷方式运行 PowerShell 命令“Start-Process”

这看起来很简单但是我尝试了一个多小时才让它正常工作,但没有成功。我有一个有效的 PowerShell 命令,我想从 Windows 快捷方式执行它。

命令是: Start-Process -filepath "C:\Program Files\One Identity\Active Roles\7.3\Console\ActiveRoles.msc" -Verb RunAsUser

这按预期工作。它打开 GUI 提示符以输入用户/密码。

我的期望是我可以创建一个带有目标的快捷方式: powershell.exe -command '& {Start-Process -filepath "C:\Program Files\One Identity\Active Roles\7.3\Console\ActiveRoles.msc" -Verb RunAsUser}'

这不管用。它闪烁但不执行。

我尝试从 PowerShell 运行命令,它给了我Start-Process : A positional parameter cannot be found that accepts argument 'Identity\Active'所以我现在使用备用路径来避免空格: powershell.exe -command '& {Start-Process -filepath "C:\Progra~1\ONEIDE~1\ACTIVE~1\7.3\Console\ActiveRoles.msc" -Verb RunAsUser}'

这仍然不起作用。它不会在 PowerShell 中运行,因此它不会在快捷方式中工作。它只是在 PS 窗口中给我一个新行,没有任何反馈。

跑步就Start-Process -filepath 'C:\Progra~1\ONEIDE~1\ACTIVE~1\7.3\Console\ActiveRoles.msc' -Verb RunAsUser很好了。

我尝试了很多种方法。我尝试过带引号和不带引号、带空格和不带空格、带 &{} 和不带 &{}。我尝试将单行命令添加到 powershell 脚本并从快捷方式调用它。这仍然不起作用。调用执行时没有错误,但不会启动 .msc。

这样做的目的实际上是要有一个 Windows 快捷方式,可以使用 -RunAsUser 标志启动 .msc,但我对如何从快捷方式运行 pwershell 命令更感兴趣。我在其他帖子中发现的大多数内容都是使用带有命令行提示符的 bash 命令,这不是我想要的。我觉得我肯定错过了一些显而易见的东西。这应该很简单。

答案1

注意事项。根据Start-Process帮助文档。

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-7.2

-Verb 指定此 cmdlet 启动进程时要使用的动词。可用的动词由进程中运行的文件的文件扩展名决定。

下表显示了一些常见流程文件类型的动词。

  • 文件类型 动词

  • 命令 编辑、打开、打印、运行方式、以用户身份运行

  • .exe 打开、以...身份运行、以...身份运行

  • .txt 打开、打印、打印至

  • .wav 打开,播放

请注意,.msc 不在列表中。

Windows 知道如何处理具有此类目标的快捷方式......

'C:\Program Files\One Identity\Active Roles\7.3\Console\ActiveRoles.msc'

... 带有 .msc 的文件告诉 Windows 启动 msc.exe 来执行 .msc 文件,因为该可执行文件是 Windows 映射的方式。

Windows 不知道如何处理这个问题......

Start-Process 'C:\Program Files\One Identity\Active Roles\7.3\Console\ActiveRoles.msc'

... 因为Start-Process,不是可执行文件,所以它仅在正在运行/实例化的 PowerShell 会话中可行。

您必须执行以下操作,才能找到快捷方式。

powershell "Start-Process 'C:\Program Files\One Identity\Active Roles\7.3\Console\ActiveRoles.msc'"

必须首先启动 PowerShell,才能运行 PS cmdlet,然后再运行您希望该 cmdlet 执行的任何其他操作的路径。

演示: 在此处输入图片描述

相关内容