PowerShellでOffice365アシスタンスツールを作成していますが、答えが見つからない単純な質問だと思います。によって作成された接続Connect-MsolService
が存在し、アクティブであるかどうかを確認するにはどうすればよいですか?他のコマンドレットがチェックできるので、知る方法があるはずです。私はその方法が何であるかわからず、それを見つけることができません。
5 に答える
これが私の解決策でした。
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
}
Connect-MsolService
接続するとオブジェクトを返しますが、私が見る限り、新しい変数は追加されません。おそらく、モジュールコマンドの1つを実行し、コマンドの実行結果に基づいてそれを判断できます。
Get-MsolDomain -ErrorAction SilentlyContinue
if($?)
{
"connected"
}
else
{
"disconnected"
}
これは古い質問であることは知っていますが、これが私がこれを行った方法です:
# 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 =
間違った資格情報を入力すると、次の実行時に誤検出につながります (資格情報が間違っていたために接続されていなくても、接続されていると見なされます)。少ししゃっくりが起こるから。
-ErrorAction Stop
行末の にも注意して$O365Session = New-PSSession
ください。Connect-MsolService
これにより、不正な資格情報で行を試行することを防ぎます。
あなたがしget-pssession
なければならないのは、あなたが構成名に基づいてmsolサービスに接続しているかどうかをあなたに知らせるだけです。接続プロセスを自動化する場合は、if elseループを設定して、構成名と状態を確認できます。この例が必要な場合はお知らせください。Office365のユーザー情報をクエリしてWebページに表示するために作成したWebアプリにこれを設定しています。
Connect-MsolService
モジュールを MSOnline という powershell にインポートするため、モジュールが存在するかどうかを確認するだけです。
Get-Module -Name MSOnline