Exchange 2010이 포함 된 PowerShell Remoting : 값은 null 일 수 없습니다.


8

원격 PowerShell 세션을 통해 Exchange 2010 cmdlet을 실행하는 데 문제가 있습니다.

로컬 PowerShell 세션을 관리자로 시작하고 다음 명령을 실행합니다.

PS C:\Windows\system32> $mailcred = Get-Credential
PS C:\Windows\system32> $mailSession = New-PSSession -ComputerName MAILSRV -Credential $mailcred
PS C:\Windows\system32> Enter-PSSession $mailSession
[MAILSRV]: PS C:\Users\jdoe\Documents> Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
[MAILSRV]: PS C:\Users\jdoe\Documents> hostname
MAILSRV
[MAILSRV]: PS C:\Users\jdoe\Documents> Get-ExchangeServer
Value cannot be null.    
Parameter name: serverSettings
    + CategoryInfo          : 
    + FullyQualifiedErrorId : System.ArgumentNullException,Microsoft.Exchange.Management.SystemConfigurationTasks.GetExchangeServer

[MAILSRV]: PS C:\Users\jdoe\Documents> get-mailbox
Value cannot be null.    
Parameter name: serverSettings
    + CategoryInfo          : 
    + FullyQualifiedErrorId : System.ArgumentNullException,Microsoft.Exchange.Management.RecipientTasks.GetMailbox

보다시피, 작동중인 Exchange cmdlet은 없습니다. 무엇이 문제 일 수 있습니까?


확인하기 위해 세션을 실행중인 사용자에게 이러한 cmdlet을 실행할 권한이 있습니까? 즉, 문제없이 서버에서 직접 실행할 수 있습니까?
Ben Pilbrow

예. 그들은 같은 계정으로 서버에서 정상적으로 실행됩니다. 모든 유형의 원격 (invoke-command 또는 대화식)이 실패합니다.
pk.

ImportSystemModules현재 실행 영역에 등록 된 모듈을로드 하십시오 . Exchange cmdlet을 원격 세션 / 실행 영역으로 자동으로 가져 오지 못할 수 있습니다.
Bernie White

답변:


2

Exchange Server의 기본 원격 엔드 포인트에 연결하고 거기에서 ps 스냅인을 추가하려고합니다. 이것은 잘못이다. 처음 3 줄을 다음과 같이 바꾸십시오.

$mailcred = Get-Credential
$mailSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://MAILSRV/PowerShell/ -Credential $mailcred
Import-PsSession $mailSession

세션을 입력 할 필요가 없으며 대신 로컬 세션으로 가져 오십시오. 이제부터 Exchange 관련 CmdLets를 로컬로 사용할 수 있습니다. 또한 일부 Exchange .Net 유형은 Exchange 관리 콘솔과 함께 설치되므로 사서함 크기로 작업하려는 경우 로컬 컴퓨터에 설치해야합니다 (Exchange는 크기 개체에 고유 한 유형을 사용함)


이것은 PS 엑스트라를 위해 관리 또는 워크 스테이션에 EMC를 설치하는 올바른 방법입니다. 이렇게하면 로컬 PS가 연결시 필요한 도구에 액세스 할 수 있습니다. --- 또는 EMC 설치를 완료하면 직접 설치된 Exchange Powershell을 사용하십시오. 필요한 경우 마우스 오른쪽 단추를 클릭하여 관리 사용자로 실행하십시오. 나는 항상 그것을 사용합니다.
Mark

1

import-pssesion과 connectionURI & ConfigurationName을 지정하여 이와 같이 할 수 있습니다.

PS U:\> $cred = Get-Credential
PS U:\> $session = New-PSSession -ConnectionUri http://Exchange01/powershell -ConfigurationName Microsoft.Exchange -Credential $cred
PS U:\> Import-PSSession $session
PS U:\> Get-Mailbox marius.davidsen

Name                      Alias                ServerName       ProhibitSendQuota                                                                                        
----                      -----                ----------       -----------------                                                                                        
Marius Davidsen           Marius.Davidsen      Exchange01       unlimited             

방화벽에서 TCP 포트 80을 허용해야합니다.

해당 세션을 사용하여 원하는대로 입력 할 수도 있습니다.

PS U:\> Enter-PSSession $session
[Exchange01]: PS> get-mailbox
[Exchange01]: PS> get-mailbox marius.davidsen

Name                      Alias                ServerName       ProhibitSendQuota                                                                                        
----                      -----                ----------       -----------------                                                                                        
Marius Davidsen           Marius.Davidsen      Exchange01       unlimited         

0

나는 한 번 같은 문제가 있었다. 나는 해결책이 이것이라고 생각한다.

$s=new-pssession -computername xxxxx
import-pssession -session $s

그런 다음 스냅인을 추가하고 명령을 실행하십시오.

출처 : http://forums.veeam.com/viewtopic.php?f=2&t=7514


이것은 내가 의도하지 않은 암시 적으로 원격 세션을 제공합니다. 대화식 원격 작업을 원합니다. 이 문제를 해결하기 위해 암시 적 원격 세션을 시도했지만 다른 방식으로 실패했습니다. "Import-PSSession : 원격 세션에서 Get-Command 명령을 실행하면 다음 오류가보고되었습니다
.


0

정상적인 교환 설치의 일부인 원격 엔드 포인트를 사용하는 것이 좋습니다. 자세한 내용은 여기를 참조 하십시오

EX 2010과 EX 2013에서 모두 성공적으로 사용했습니다. 지원되는 방식과 RBAC 규칙을 따르므로 "일반"원격 엔드 포인트에 Exchange 스냅 핀을 추가하는 대신이를 사용하는 것이 좋습니다.


0

문제는 두 머신이 같은 도메인에 있어야한다는 것입니다.

또한 로컬 계정이 아닌 도메인 계정을 사용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.