晚上好
一些 PowerShell 命令可在线或本地使用,例如:Get-MailContact
有没有办法识别本地服务器或在线 Exchange 是否正在应答此类命令的调用?
我本来期望能够询问 PSSession 它响应什么命令,但这似乎是一个转移注意力的花招。
非常感谢您的帮助!问候,托马斯
答案1
使用导入的 cmldets 时使用前缀。
导入 PSSession
导入 PSSession [-字首 ] [-DisableNameChecking] [[-命令名称] <字符串[]>] [-AllowClobber] [-参数列表 <对象[]>] [-命令类型 ] [-模块 <字符串[]>] [-FullyQualifiedModule <ModuleSpecification[]>] [[-格式类型名称] <字符串[]>] [-证书 ] [-会话] []
您可以使用您选择的任何前缀。
例子):
Import-PSSession -Session $ExchangeOnPremSession -Prefix 'EXP'
Import-PSSession -Session $ExchangeOnlineSession -Prefix 'EXO'
Import-PSSession -Session $SkypeOnlineSession -Prefix 'SOL'
Import-PSSession -Session $SqlSession -Prefix 'SQL'
Import-PSSession -Session $WapSession -Prefix 'WAP'
这样,使用 Exchange Online 时,您的 cmdlet 将显示为 Get-ExoMail,而本地将显示正常的 Get-Mail cmdlet。或者您可以明确地使用 EXO 表示在线,EXP 表示本地。
因此,用例将是:
Get-ExoMailbox
或者
Get-ExpMailbox
... 有关 cmdlet 的所有其他内容都相同。
这个前缀并不新鲜,您也可以对自定义的东西(变量、函数等)执行此操作,以便于发现、使用和处理。
***笔记:
新的 Exchange Online 在新模块中已经实现了这一点,因此不需要前缀。***
获取 EXOMailbox
模块:ExchangePowerShell
适用于:Exchange OnlineApplies to: Exchange Online
此 cmdlet 仅在 Exchange Online PowerShell V2 模块中可用。有关详细信息,请参阅关于 Exchange Online PowerShell V2 模块。
https://docs.microsoft.com/en-us/powershell/module/exchange/get-exomailbox?view=exchange-ps
答案2
答案3
您可以尝试这样的操作:
(Get-Command *exch*).source
如果命令来自远程会话,它将响应类似如下内容:
tmp_rusnwadj.rm5