Sar*_*nKS 3 c# powershell runspace
我想知道在C#使用Pipeline类和PowerShell类时执行 PowerShell 脚本之间的区别。
使用管道:
Pipeline pipe = runspace.CreatePipeline();
Run Code Online (Sandbox Code Playgroud)
使用 PowerShell 类:
PowerShell ps = PowerShell.Create();
Run Code Online (Sandbox Code Playgroud)
我们可以同时使用它们在 C# 中执行 PowerShell 脚本,但是它们之间有什么区别呢?
注意:PowerShell SDK 文档非常稀少,因此以下是推测性的。
所述的实例PowerShell类为一个包装运行空间,其中一个PowerShell会话中运行的容器; 它的.RunSpace属性返回封闭的运行空间。
您需要一个运行空间(RunSpace实例)才能创建和执行用于执行任意 PowerShell 语句的管道。
要创建管道,您有两个选择:
如果你有一个PowerShell实例,你可以用它方便的方法,例如.AddScript(),以隐式创建一个管道。
或者,使用运行空间的.CreatePipeline()方法显式地创建和管理管道。
简单地说:该类的便捷方法PowerShell允许更简单地创建和执行管道。
请注意,这两种方法都支持执行多个语句,包括命令(例如,cmdlet 调用)和表达式(例如,1 + 2)的任何组合。
以下代码段比较了两种方法(使用 PowerShell 本身),它们在功能上是等效的,据我所知:
# Create a PowerShell instance and use .AddScript() to implicitly create
# a pipeline that executes arbitrary statements.
[powershell]::Create().AddScript('Get-Date -DisplayHint Date').Invoke()
# The more verbose equivalent using the PowerShell instance's .RunSpace
# property and the RunSpace.CreatePipeline() method.
[powershell]::Create().RunSpace.CreatePipeline('Get-Date -DisplayHint Date').Invoke()
Run Code Online (Sandbox Code Playgroud)
我可能遗漏了一些微妙之处;如果是这样,请告诉我们。
| 归档时间: |
|
| 查看次数: |
1194 次 |
| 最近记录: |