2010-05-14 131 views
4

我的任务是按键盘序列,如按Ctrl ++[R,重新启动Windows服务。PowerShell脚本重新启动服务

我有一个脚本,可以在PowerShell ISE中以管理权限启动时正常工作。

当我尝试使用PowerShell脚本时,由于管理权限不足而失败。令人烦恼的是,我可以让它与老式的bat文件一起工作,但不是PowerShell。

问题的根源在于PowerShell脚本的快捷方式的管理权限框变为灰色。到目前为止,没有解决方法已经克服了这个特权问题。

任何想法?

+0

您正在使用哪个版本的Windows? – Nate 2010-05-14 15:54:46

+0

的Windows Server 2008的PowerShell 2.0版 – 2010-05-15 07:08:58

回答

2

一种方法是在脚本中启动另一个升高PowerShell会话就像这样:

Start-Process PowerShell.exe -arg '-nologo -noprofile script.ps1' -verb runas 

那应该提示来提升新的PowerShell会话。我认为你应该能够设置-WindowStyle参数,使得新窗口不会出现(如果你需要这种行为)。请注意,您需要指定现有脚本的完整路径。

+0

该脚本完美工作 - 在PowerShell中,但是如何获得第二个PowerShell文件或其快捷方式为“以管理员身份运行”?对我来说那个盒子是灰色的。 有谁知道为什么'以管理员身份运行'可用于任务栏上的PowerShell.exe,但不在桌面上? – 2010-05-15 07:12:58

+0

这个想法是,你不需要。第一个PowerShell脚本是在没有管理员的情况下启动的,当它“启动”第二个使用-verb runas的powershell进程时 - 那时候会提示你升级。 – 2010-05-15 18:24:16

+0

最后我看到 - 尤里卡,它的工作原理。我一直犯过分思考。感谢您的帮助,并感谢您坚持让我看到光明。 – 2010-05-16 17:38:07

0

你建议你不喜欢用批处理文件解决这个问题(例如net start),我想因为批处理文件本质上比powershell脚本更有限。你可以做的是将你的Ps脚本包装在一个批处理文件中,但为了实现你所说的目标 - 使用没有访问权限问题的键盘快捷方式运行powershell脚本。试试这个批处理文件:

powershell set-executionpolicy remotesigned 
powershell myscript.ps1 
+0

嗯,没有问题。用PS封装你的批处理文件会比这更快,解决你所说的问题。 我想我不太明白你为什么试图避免批处理文件,除了它们比power shell更能限制它们的功能。如果我知道你和他们有什么问题,我可能会为你另外安排一些东西。 – John 2010-05-15 16:56:07