2016-07-27 75 views
1

我在網上找到了一個腳本,它將檢查您是否在Admin角色下運行當前的Powershell控制檯,如果沒有,開始一個新的腳本Powershell的實例並關閉以前的窗口。創建新進程或使用Powershell中的開始cmdlet

檢查它的部分並不是真正的問題,我只是有一個關於如何啓動一個Powershell的新實例的問題。

這是它是如何在腳本執行:

$newProcess = New-Object System.Diagnostics.ProcessStartInfo "Powershell"; 
$newProcess.Arguments = "& '" + $MyInvocation.MyCommand.Name + "'" 
$newProcess.Verb = "runas"; 
[System.Diagnostics.Process]::Start($newProcess); 
Exit; 

這是一個相當知名的和經常使用的腳本(根據經驗,它是分散在無數的在網站上的網頁)。

由於大多數PowerShell的精明的人知道,你可以打開PowerShell和有它通過鍵入運行作爲命令行(一個運行提示,命令行解釋器,& PowerShell中)管理員:

Start Powershell -ArgumentList "& '$scriptpath'" -Verb runas 

而且任何熟悉腳本的人都可以看到,這些將完成同樣的事情 - 它們看起來似乎彼此相似!

在啓動Powershell的一個新實例並運行一個被調用腳本的兩種方法之間,有什麼區別?哪些是推薦的,哪些不是?比另一個更正確(合適)嗎?

由於我是自學成才,而且我一般都會學習,所以最佳實踐,建議和棄用的\被取代的東西經常被忽視。我真的沒有在.NET框架或C#中的背景,所以,如果從這個角度來看答案是顯而易見的,你將不得不原諒我。

謝謝。

回答

0

StartStart-Process的別名,它基本上是圍繞[System.Diagnostics.Process]::Start(它實際上返回一個System.Diagnostics.Process對象)的包裝。你可以使用它們中的任何一個,但前者更多PoSh,因爲它的語法遵循PowerShell約定。

另請參閱this comprehensive Technet article,瞭解從PowerShell運行可執行文件的方法概述。

相關問題