【问题标题】:Detect in script whether being run via normal PowerShell window, or Exchange Management Shell在脚本中检测是否通过普通 PowerShell 窗口或 Exchange 命令行管理程序运行
【发布时间】:2021-09-27 04:26:42
【问题描述】:

是否有人知道如何在 PowerShell 脚本中检测它是从普通 PowerShell 窗口中运行还是从 Exchange 命令行管理程序运行?

某些在其中一个工作的功能在另一个中不起作用,或者产生不同的结果,所以我想检测用户正在使用哪个 UI 来运行脚本,然后在适当的情况下指导他们使用另一个。

【问题讨论】:

  • 看看自动$Host变量
  • @MathiasR.Jessen,我自己无法验证,但 EMS 不是在常规控制台窗口中运行吗?如果是这样,我会寻找特定于 EMS 的 cmdlet(或模块)的存在,例如 $isEMS = [bool] (Get-Command -ea Ignore Get-ExCommand)
  • @mklement0 太棒了,是的,这可以解决问题,谢谢。还检查了 $host,但是无论您是否在 EMS 中,EMS 的工作方式 $host 输出都是相同的。

标签: powershell exchange-server


【解决方案1】:

感谢@mklement0 的建议

确认他的解决方案有效,例如:

$isEMS = [bool] (Get-Command –eq Ignore Get-ExCommand)
if ($isEMS)
{ Write-Host “Using EMS” }
Else
{ Write-Host “Using normal PS }

即使您在普通 PS 窗口中的脚本中使用 Exchange 管理单元(例如 Microsoft.Exchange.Management.PowerShell.Snapin),也检查并确认此方法有效,因此只有在您“重新使用 EMS,而不是说您一般都在使用 Exchange,这就是我所追求的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多