Exchange管理新手。
我们的.NET Web应用程序托管在IIS中。我们的应用程序通过PowerShell命令与Exchange Server交互。
我们在Windows Server 2012中使用Exchange Management Shell 2013,目前已迁移到Windows Server 2022和Exchange Management Shell 2019。IIS应用程序池标识具有建立连接的权限。
class ExchangeCmdletHepler
{
Runspace m_runspace = null;
public ExchangeCmdletHepler()
{
m_runspace = RunspaceFactory.CreateRunspace();
m_runspace.Open();
connectToExchange();
}
private void connectToExchange()
{
Pipeline pipeline = m_runspace.CreatePipeline();
pipeline.Commands.AddScript(". 'C:\Program Files\Microsoft\Exchange Server\V15\Bin\RemoteExchange.ps1'; Connect-ExchangeServer <Exchange Server Here> ");
pipeline.Invoke();
}
//BAU Functions
public String getDLGrpCategoryFromAD(String dlName)
{
var grpCategoryResp = String.Empty;
var cmdText = $"Get-ADGroup \"{dlName}\" | Select GroupCategory";
Command setGrpCmd = new Command(cmdText, true);
Pipeline pipeline = m_runspace.CreatePipeline();
pipeline.Commands.Add(setGrpCmd);
Collection<PSObject> pipeLineResultList = pipeline.Invoke();
//process pipeLineResultList object;
}
//Couple of more BAU Functions Goes here.
}
迁移后,我可以连接到新的Exchange Server 2019,没有任何问题。但是,当调用getDLGrpCategoryFromAD()时,它会抛出错误***“The term 'Get-ADGroup' is not recognized as the name of a cmdlet,function,script file,or operable program”***。
在迁移之前,我记得,我曾经从getDLGrpCategoryFromAD()方法获得响应。
我相信,在connectToExchange()作用域之后,连接性不会持久化。从2013年到2019年有什么变化吗?我们的代码基本上是一样的。有人可以在这里分享一些意见/建议。如果我的理解有错,请指正。
谢谢
1条答案
按热度按时间sigwle7e1#
最后,我可以解决这个问题,在查看SO post The term 'Get-ADUser' is not recognized as the name of a cmdlet后。新目标计算机中似乎未安装“Active Directory域服务”。