从ISE或控制台主机获取PowerShell .NET对象

时间:2014-03-06 01:04:26

标签: .net powershell

我想知道是否可以从PowerShell控制台主机或Integrated Scripting Editor(ISE)中获取System.Management.Automation.PowerShell对象。我知道您可以通过调用Runspace来访问$Host.Runspace对象,但我需要直接访问PowerShell对象(如果存在)。

唯一的选择是创建一个新的PowerShell对象,然后调用其中的代码,还是有办法使用{{1}访问预先创建的PowerShell对象变量(或类似的)?

http://msdn.microsoft.com/en-us/library/system.management.automation.powershell_members(v=vs.85).aspx

2 个答案:

答案 0 :(得分:2)

基于使用PSDataStreams的ScriptLogger blog post by Oisin,我会说不。您需要创建PowerShell对象[powershell]::create()并使用生成的对象执行脚本。然后,当您点击PSDataStreams集合时,它将包含执行脚本的各种输出。

答案 1 :(得分:0)

如果您的目标是异步执行,您可能需要Powershell作业 如果您的目标是生成新的shell /线程并在其中执行代码,然后从该执行返回数据,请查看“start-job”和“invoke-command -asJob”。这些命令将生成一个运行空间 - 如果只是在脚本块的末尾调用一个变量,则可以从它们返回数据,然后使用:

$Var = get-job|receive-job

Powershell将以最少的工作精确地处理运行空间管理 - 如果您手动管理运行空间,那么您可能正在采取艰难的方式。请注意,Invoke-command将允许您在远程计算机上执行这些作业 - 非常强大和高效,因为您需要编写最少量的代码来执行此操作。