我正在尝试建立PowerShell会话,以便对localhost上的Exchange服务器运行多个Exchange命令。我一直收到以下错误:
New-PSSession : [<HOSTNAME>] Connecting to remote server <HOSTNAME> failed with the following error message
: Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:12
+ $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'h ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotin
gTransportException
+ FullyQualifiedErrorId : AccessDenied,PSSessionOpenFailed
我的代码是来自Microsoft Technet Article的复制粘贴。它适用于远程机器,但无论何时我瞄准我运行的机器,我都会遇到上述错误。
到目前为止我尝试过:
about_remote_troubleshooting
帮助主题。没有任何与Access Denied错误有关的内容。net use
和net session
以确保我没有具有相同凭据问题的奇怪的多个连接。 (我没有看到任何迹象表明)一些快速说明:
我输入的具体命令是:
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred
连接到本地主机是否应该能够做到这一点?或者只是不支持?
此时我完全失败了。任何帮助,即使是指向正确的方向,都将不胜感激。
编辑:我应该补充一下,我尝试使用与上面相同的命令从另一台机器连接到本地主机,并且它没有问题。所以,我不认为这是一个本地配置问题。答案 0 :(得分:1)
所以,我上周末偶然发现了解决方案。它似乎与使用的身份验证有关。我把“-Authentication”参数留空了,打算让New-PSSession命令排除哪种方法最好。
显然,这默认为“Negotiate”身份验证方法,它将针对远程计算机选择Kerberos,但是否则将选择NTLM(或者至少,这是我的观察/假设行为)。请参阅身份验证方法的this Microsoft description。
指定一个特定的身份验证方法(“Kerberos”和“Basic”都工作,“Negotiate”没有,我没有过多地修改过这个)清除问题并允许我连接到本地交换实例。
所以,而不是这个:
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred
这样做:
$session = New-PSSession -Authentication Kerberos -ConfigurationName Microsoft.Exchange -ConnectionUri 'http://<HOSTNAME>/Powershell' -Credential $cred
为什么这样做?我没有线索。我会把它留给那些比我更了解的人来解释它。
答案 1 :(得分:0)
如果您只是想在与当前会话相同的计算机上创建会话,请省略URI。
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange -Credential $cred
这将在localhost上创建一个新会话,您可以根据需要连接并使用它。