2016-07-27 17 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运行可执行文件的方法概述。

相关问题