我正在PowerShell中编写Office 365辅助工具,并且我认为这是一个简单的问题,我无法找到答案。如何确定Connect-MsolService
创建的连接是否存在且处于活动状态?必须有一些方法可以知道,因为其他cmdlet可以检查,我只是不知道那是什么方式,我找不到运气。
答案 0 :(得分:3)
Connect-MsolService
一旦连接就返回一个对象,据我所知,不会添加新的变量。也许您可以通过运行其中一个模块命令并将其基于命令的执行结果来确定:
Get-MsolDomain -ErrorAction SilentlyContinue
if($?)
{
"connected"
}
else
{
"disconnected"
}
答案 1 :(得分:2)
这是我的解决方案。
try
{
Get-MsolDomain -ErrorAction Stop > $null
}
catch
{
if ($cred -eq $null) {$cred = Get-Credential $O365Adminuser}
Write-Output "Connecting to Office 365..."
Connect-MsolService -Credential $cred
}
答案 2 :(得分:1)
我知道这是一个老问题,但这是我的处理方式:
# Only run if not already connected
if(-not (Get-MsolDomain -ErrorAction SilentlyContinue))
{
$O365Cred = Get-Credential -Message "Please provide credentials for Microsoft Online"
$O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection -ErrorAction Stop
Connect-MsolService –Credential $O365Cred
Import-PSSession $O365Session | Out-Null
}
如果Connect-MsolService
行位于$O365Session =
行之前,则输入错误的凭据将导致下次运行时出现误报(即使您未连接,也会认为您已连接)因为凭据是错误的。)以这种方式进行操作可以防止发生小小的打h。
还要注意-ErrorAction Stop
行末的$O365Session = New-PSSession
。这样可以防止其尝试使用错误的凭据尝试Connect-MsolService
行。
答案 3 :(得分:-1)
您需要做的只是get-pssession
,如果您根据配置名称连接到msol服务,则会通知您。如果要自动化连接过程,可以设置if else循环以检查配置名称和状态。如果您想要一个这样的示例,请告诉我,我已经在我构建的Web应用程序上设置了查询Office 365上的用户信息并将其显示在网页上。
答案 4 :(得分:-1)
Connect-MsolService
将一个模块导入名为MSOnline的Powershell中,因此只需检查该模块是否存在:
Get-Module -Name MSOnline