我正在搞乱我在互联网上找到的脚本,它将检查你是否在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#的背景知识,因此,如果答案从这个角度来看是显而易见的,那么你必须原谅我。
感谢。
答案 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。