【问题标题】:Connect to exchange asyncronously using powershell使用 powershell 异步连接交换
【发布时间】:2012-02-14 22:21:52
【问题描述】:

我有以下代码可以使用 powershell 连接到我的 office 365 帐户:

$Cred=GET-CREDENTIAL 
Write-Host "Connecting..."
IMPORT-MODULE MSONLINE
CONNECT-MSOLService -credential $Cred
$s = NEW-PSSESSION -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $Cred -Authentication Basic -AllowRedirection
$importresults=import-pssession $s
Write-Host "Connected to exchange server"

但由于这有效地连接了两次,一次使用 new-pssession,一次使用 connect -MSOLService,因此应该可以同时进行这两个操作,例如:

$Cred=GET-CREDENTIAL 
Write-Host "Connecting..."
IMPORT-MODULE MSONLINE
$j = start-job -scriptBlock { CONNECT-MSOLService -credential $Cred }
$s = NEW-PSSESSION -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $Cred -Authentication Basic -AllowRedirection
$importresults=import-pssession $s
wait-job $j
Write-Host "Connected to exchange server"

但这实际上不起作用(我猜这是变量范围的问题?这可能吗/我应该怎么做?

【问题讨论】:

    标签: powershell asynchronous exchange-server office365


    【解决方案1】:

    试试这个:

    Start-Job -scriptblock {Param ($cred) CONNECT-MSOLService -credential $Cred} -ArgumentList $cred
    

    【讨论】:

    • 那么结果有 State Failed 和 HasMoreData false (而且它不起作用)。在我获得 State Completed 和 HasMoreData 为该工作的 true 之前。
    • 这是在 start-job 中传递参数的正确方法。可以帮助更多,因为我可以测试它。对不起
    【解决方案2】:

    我得出的结论是,这可能是不可能的。我认为问题在于登录命令会修改它们运行的​​上下文,但如果它们是在异步作业中完成的,则上下文会有所不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2010-09-07
      相关资源
      最近更新 更多