创建新进程或在Powershell中使用“启动cmdlet”

时间:2016-07-27 16:40:47

标签: powershell process

我正在搞乱我在互联网上找到的脚本,它将检查你是否在Admin角色下运行当前的Powershell控制台,如果没有,启动一个新的Powershell实例并关闭前一个窗口。

检查它的部分实际上不是问题,我只是对如何启动Powershell的新实例提出疑问。

这是在脚本中执行的方式:

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

这是一个相当知名且经常使用的脚本(根据经验,它分布在无数网站的各个网站上)。

正如大多数知道Powershell的人所知,你可以打开Powershell并通过键入命令行(在Run提示符,Command shell和& Powershell中)以管理员身份运行:

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

任何熟悉脚本的人都可以看到这些内容完全相同 - 它们甚至看起来彼此相似!

在这两种启动Powershell新实例和运行调用脚本的方法之间,有什么区别?哪个是推荐的,哪个不是?是否比另一个更正确(适当)?

由于我是自学成才,而且我一般都在学习,所以最好的做法,建议以及被弃用或被取代的内容经常被忽视。

我真的没有.NET框架或C#的背景知识,因此,如果答案从这个角度来看是显而易见的,那么你必须原谅我。

感谢。

1 个答案:

答案 0 :(得分:0)

from django.contrib.auth.models import User from tastypie.resources import ModelResource class UserResource(ModelResource): class Meta: queryset = User.objects.all() allowed_methods = ['get'] detail_uri_name = 'username' Start-Process的别名,它基本上是Start的包装(它实际上返回一个System.Diagnostics.Process对象)。您可以使用它们中的任何一个,但前者更多是PoSh,因为它的语法遵循PowerShell约定。

有关从PowerShell运行可执行文件的方法的概述,另请参阅this comprehensive Technet article