我正在使用powershell命令来执行脚本和cmdlet。因此,在执行cmdlet时,我使用powershell.invoke,而在执行脚本时,我使用pipeline.invoke方法。我想知道System.Management.Automation.pipeline.invoke()
方法和System.Management.Automation.Runspaces.powershell.invoke()
方法之间是否有区别。
发布于 2013-12-06 01:40:38
在运行空间中创建管道的方法,例如:
var pipeline = runspace.CreatePipeline();
是1.0的东西。也就是说,原始的PowerShell托管API要求您创建通过您创建的运行空间的管道。我的猜测是,团队得到的反馈是托管API需要简化,因此他们提出了2.0版本的PowerShell
类。
如果您对不同之处的具体细节感兴趣,就去抓取dotPeek,打开System.Management.Automation.dll并仔细阅读它。一个不同之处在于,PowerShell.Invoke()必须确定正在使用的运行空间的类型,以便确定创建哪种类型的管道,例如LocalPipeline或RemotePipeline。当您使用运行空间时,您实际上创建了一个派生类(LocalRunspace或RemoteRunspace),并且每个派生类都将创建适当类型的管道。
https://stackoverflow.com/questions/20399186
复制相似问题