【问题标题】:Is there a way to Out-Null $PSinstance.BeginInvoke() for Runspaces?有没有办法为 Runspaces 设置 Out-Null $PSinstance.BeginInvoke() ?
【发布时间】:2019-02-07 19:27:00
【问题描述】:

我试过了:

$PSinstance.BeginInvoke() | Out-Null

但是当我这样做时,它会等待按下回车键以继续。这很奇怪,因为没有 out-null 它继续正常。我也尝试将它分配给一个变量,它的行为方式相同。如果我在那一行之后写主机,它也会继续,但我不想要任何输出

param(
[Parameter(Mandatory = $true)]
$Location,

[Parameter(Mandatory = $true
)]
$Logs,

[Parameter(Mandatory = $true)]
$date
)

$InitialSessionState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()

foreach ($Parameter in $PSBoundParameters.Keys) {
    $Variable = [System.Management.Automation.Runspaces.SessionStateVariableEntry]::new($Parameter, $PSBoundParameters[$Parameter], $Null)
    $InitialSessionState.Variables.Add($Variable)
}

$RunspacePool = [runspacefactory]::CreateRunspacePool(1,[int]$env:NUMBER_OF_PROCESSORS+1, $InitialSessionState, $Host)
$RunspacePool.ApartmentState = "STA"
$RunspacePool.ThreadOptions = "ReuseThread"
$RunspacePool.Open()


$PSinstance = [powershell]::Create().AddScript({

   Write-Host "$Location $Logs $date"

})
$PSinstance.RunspacePool = $RunspacePool
$PSinstance.BeginInvoke() | Out-Null
$PSinstance.Streams.Information

【问题讨论】:

  • 您能为此创建一个minimal reproducible example 吗?我想尝试一些东西,但我自己没有太多机会使用.BeginInvoke()
  • 刚刚添加了一些示例代码。 $PSinstance.Streams.Information 是我想要的唯一输出
  • @mklement0 我也在 5.1 上,但 $null= 不起作用

标签: powershell runspace


【解决方案1】:

我想通了。在底部,您可以这样做来解决问题:

$PSinstance.RunspacePool = $RunspacePool
$PSinstance.BeginInvoke() | Out-Null 
Write-Host "$($PSinstance.Streams.Information)"

【讨论】:

  • 您是否只是想使用.Invoke()同步调用方法而不是异步.BeginInvoke()方法?
猜你喜欢
  • 1970-01-01
  • 2021-04-18
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
相关资源
最近更新 更多