您知道如果您是系统的管理员用户,您可以右键单击一个批处理脚本,然后以管理员身份运行它,而无需输入管理员密码?

我想知道如何用PowerShell脚本做到这一点。我不想输入我的密码;我只是想模仿右键单击Run As Administrator方法。

到目前为止,我读到的所有内容都要求您提供管理员密码。


当前回答

使用

#需要-RunAsAdministrator

还没有声明。它似乎是从PowerShell 4.0开始出现的。

http://technet.microsoft.com/en-us/library/hh847765.aspx

当这个switch参数被添加到require语句时, 它指定您所在的Windows PowerShell会话 运行脚本时必须使用提升的用户权限 (以管理员身份运行)。

对我来说,这似乎是一个很好的方法,但我还不确定现场经验。PowerShell 3.0运行时可能会忽略这一点,甚至更糟,会给出一个错误。

当脚本以非管理员身份运行时,会给出以下错误:

脚本“StackOverflow.”Ps1 '不能运行,因为它包含 以管理员身份运行的“#requires”语句。当前的 Windows PowerShell会话没有以管理员身份运行。开始 Windows PowerShell使用“以管理员身份运行”选项,然后 尝试再次运行脚本。 + CategoryInfo: PermissionDenied:(StackOverflow.ps1:String) [], ParentContainsErrorRecordException + fullyqualifiederrid: ScriptRequiresElevation

其他回答

当然,如果您有管理员帐户,还可以强制以管理员身份打开应用程序。

找到文件,右键单击>属性>快捷方式>高级,并选择以管理员身份运行

单击“确定”。

这种行为是经过设计的。因为微软真的不想让.ps1文件成为最新的电子邮件病毒,所以有多层安全措施。有些人认为这与任务自动化的概念相悖,这是公平的。Vista+安全模型是“去自动化”的,这样用户就可以接受。

但是,我怀疑如果你启动powershell本身作为提升,它应该能够运行批处理文件,而不需要再次要求密码,直到你关闭powershell。

如果当前控制台没有被提升,并且您正在尝试执行的操作需要提升权限,那么您可以使用以管理员身份运行选项启动powershell:

PS> Start-Process powershell -Verb runAs

Microsoft Docs: Start-Process

我找到了一个方法…

创建一个批处理文件打开你的脚本:

@echo off
START "" "C:\Scripts\ScriptName.ps1"

然后创建一个快捷方式,在桌面上说(右键单击新建->快捷方式)。

然后粘贴到位置:

C:\Windows\System32\runas.exe /savecred /user:*DOMAIN*\*ADMIN USERNAME* C:\Scripts\BatchFileName.bat

第一次打开时,您必须输入一次密码。然后将其保存在Windows凭据管理器中。

在此之后,您应该能够以管理员身份运行,而无需输入管理员用户名或密码。

提升PowerShell from Start>运行

在2012R2或2016年,你不能在没有炮击两次的情况下使用“run”命令运行elevated powershell:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell -命令"saps powershell -Verb RunAs "