2010-05-14 129 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