首页 > 解决方案 > 如何使用 Invoke-Command 连接到 Exchange pssession?

问题描述

以下按预期工作

Invoke-Command -ComputerName [exchangeserver] -ScriptBlock {Get-Service}

但是以下不起作用,它的错误找不到命令 get-mailboxserver

Invoke-Command -ComputerName [exchangeserver] -ScriptBlock {Get-MailboxServer}

在使用 Exchange 连接加载新的 pssession 后,以下内容也不起作用,并且“调用命令:无法使用指定的命名参数解析参数集”出现错误。

$uri = "https://xxx/powershell?ExchClientVer=15.1"; 
$authenticationType = "Negotiate"; 
$session = new-pssession -ConfigurationName Microsoft.Exchange -ConnectionUri $uri -Authentication $authenticationType;
Invoke-Command -Session $session -ComputerName [exchangeserver] -ScriptBlock {Get-MailboxServer}

所以看起来调用命令在调用时只加载一个标准的 Powershell 会话,没有任何额外的模块。我不确定为什么我不能使用调用命令连接到另一台服务器(恰好是 Exchange 服务器)并调用 Powershell 会话然后加载 Exchange 会话参数?如果它在远程调用时中断会话,为什么该开关甚至可以与计算机名开关一起使用?如果这是真的,为什么下面的工作不起作用?

Invoke-Command -ComputerName [exchangeserver] -ScriptBlock {$uri = "https://xxx/powershell?ExchClientVer=15.1"; $authenticationType = "Negotiate"; $session = new-pssession -Configuration
Name Microsoft.Exchange -ConnectionUri $uri -Authentication $authenticationType; Import-PSSession $session -AllowClobber
 -CommandName Set-AdServerSettings, Get-Mailbox, Get-MailboxServer, Get-MailboxDatabaseCopyStatus, Get-MailboxDatabase,
Get-DatabaseAvailabilityGroup, Get-ExchangeServer, Get-PowerShellVirtualDirectory, Test-ServiceHealth, Get-Queue, Get-Ma
ilboxServer, Get-PowerShellVirtualDirectory > $null; Set-ADServerSettings -ViewEntireForest:$true; get-mailboxserver}

更新,如果我通过会话直接连接到我想与invoke-command一起使用的特定服务器,我就可以让它工作,但是我不想做下面的事情,而是使用invoke-command。我为什么要这样做?因为在我们的站点不同的环境中,在同一个 dag 和本地站点中返回 get-powershellvirtualdirectory 的值需要 3 秒,但在同一个 dag 但不同站点中需要 123 秒。

$sessionDirect = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://xxx/PowerShell/ -Authentication Kerberos; Import-PSSession $sessionDirect -AllowClobber -CommandName Set-AdServerSettings, Get-Mailbox, Get-MailboxDatabaseCopyStatus, Get-MailboxDatabase, Get-DatabaseAvailabilityGroup, Get-ExchangeServer, Get-PowerShellVirtualDirectory, Test-ServiceHealth, Get-Queue, Get-MailboxServer, Get-PowerShellVirtualDirectory > $null; Set-ADServerSettings -ViewEntireForest:$true;
server = "exchangeServer"; Get-PowerShellVirtualDirectory -Server $server | sort server | select Server, InternalUrl,BasicAuthentication, WindowsAuthentication;

标签: powershellexchange-serverwsman

解决方案


推荐阅读