SCSS
# デスクトップへ移動
Set-Location (Join-Path $env:USERPROFILE Desktop)
# ログファイル作成
$LogFile = Get-Date -Format "yyyy-MMdd-HHmmss"
$Process = "ExternalSharingCheck"
$LogPath = Join-Path $env:USERPROFILE "Desktop$Process`_$LogFile.txt"
Start-Transcript -Path $LogPath
# 接続
Connect-AzureAD
Connect-ExchangeOnline | Out-Null
Write-Host "TeamName,AllowToAddGuests,Mail,HiddenFromExchangeClientsEnabled"
# チーム一覧
$Teams = @(
"TMS_o365_jp116232",
"TMS_o365_jp116231",
"TMS_o365_jp116230",
"TMS_o365_jp116225",
"TMS_o365_jp116226",
"TMS_o365_jp116227",
"TMS_o365_jp116228"
)
foreach ($Team in $Teams) {
$Group = Get-UnifiedGroup -Identity $Team
$GroupId = $Group.ExternalDirectoryObjectId
$ExternalSharingValue = (Get-AzureADObjectSetting -TargetType Groups -TargetObjectId $GroupId).Values.Value
$MailAddress = $Group.PrimarySmtpAddress
$HiddenFromExchangeClientsEnabled = $Group.HiddenFromExchangeClientsEnabled
Write-Host "$Team,$ExternalSharingValue,$MailAddress,$HiddenFromExchangeClientsEnabled"
}
Stop-TranscriptSCSS
# デスクトップパス
$DesktopPath = [Environment]::GetFolderPath("Desktop")
# ログファイル名
$LogTime = Get-Date -Format "yyyy-MMdd-HHmmss"
$LogFile = "$DesktopPath\ExternalSharingCheck_$LogTime.txt"
$CsvFile = "$DesktopPath\ExternalSharingCheck_$LogTime.csv"
# ログ開始
Start-Transcript -Path $LogFile
Write-Host "AzureAD 接続開始..."
Connect-AzureAD
Write-Host "ExchangeOnline 接続開始..."
Connect-ExchangeOnline | Out-Null
# 確認するTeams一覧
$Teams = @(
"TMS_o365_jp116232",
"TMS_o365_jp116231",
"TMS_o365_jp116230",
"TMS_o365_jp116225",
"TMS_o365_jp116226",
"TMS_o365_jp116227",
"TMS_o365_jp116228"
)
$Results = @()
foreach($Team in $Teams){
Write-Host "確認中: $Team"
try{
$Group = Get-UnifiedGroup -Identity $Team
$GroupId = $Group.ExternalDirectoryObjectId
$ExternalSharing = (Get-AzureADObjectSetting -TargetType Groups -TargetObjectId $GroupId).Values.Value
$MailAddress = (Get-AzureADGroup -ObjectId $GroupId).Mail
$HiddenSetting = $Group.HiddenFromExchangeClientsEnabled
$Result = [PSCustomObject]@{
TeamName = $Team
AllowToAddGuests = $ExternalSharing
Mail = $MailAddress
HiddenFromExchangeClientsEnabled = $HiddenSetting
}
$Results += $Result
}
catch{
Write-Host "エラー: $Team の取得失敗"
}
}
# CSV出力
$Results | Export-Csv -Path $CsvFile -NoTypeInformation -Encoding UTF8
Write-Host ""
Write-Host "結果CSV:"
Write-Host $CsvFile
# ログ終了
Stop-TranscriptSCSS
# 文字コード設定(文字化け防止)
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# Exchange Online モジュール読み込み
if (-not (Get-Module -Name ExchangeOnlineManagement)) {
Import-Module ExchangeOnlineManagement
}
# Exchange Online 接続
Connect-ExchangeOnline
# ログファイル名作成
$datetime = Get-Date -Format "yyyyMMdd_HHmmss"
$logFile = "$env:USERPROFILE\Desktop\External_$datetime.txt"
# 出力ヘッダー
$header = "TeamName,AllowToAddGuests,Mail,HiddenFromExchangeClientsEnabled"
Write-Host $header
Add-Content -Path $logFile -Value $header -Encoding UTF8
# 調査対象グループ
$GroupNames = @(
"TMS_o365_jpxxxxxxx",
"TMS_o365_jpxxxxxxx",
"TMS_o365_jp116229"
)
foreach ($Name in $GroupNames) {
try {
$group = Get-UnifiedGroup -Identity $Name -ErrorAction Stop
$teamName = $group.DisplayName
$allowGuests = $group.AllowAddGuests
$mail = $group.PrimarySmtpAddress
$hidden = $group.HiddenFromExchangeClientsEnabled
$line = "$teamName,$allowGuests,$mail,$hidden"
# 画面表示
Write-Host $line
# ログ出力
Add-Content -Path $logFile -Value $line -Encoding UTF8
}
catch {
$errorMsg = "$Name の取得に失敗しました。名前を確認してください。"
Write-Host $errorMsg -ForegroundColor Red
Add-Content -Path $logFile -Value $errorMsg -Encoding UTF8
}
}
Write-Host "ログファイル: $logFile"SCSS
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline
Write-Host "TeamName,AllowToAddGuests,Mail,HiddenFromExchangeClientsEnabled"
$GroupNames = @(
"TMS_o365_jpxxxxxxx",
"TMS_o365_jpxxxxxxx",
"TMS_o365_jp116229"
)
foreach ($Name in $GroupNames) {
$group = Get-UnifiedGroup -Filter "DisplayName -eq '$Name'"
if ($group) {
$teamName = $group.DisplayName
$allowGuests = $group.AllowAddGuests
$mail = $group.PrimarySmtpAddress
$hidden = $group.HiddenFromExchangeClientsEnabled
Write-Host "$teamName,$allowGuests,$mail,$hidden"
}
else {
Write-Host "$Name が見つかりません"
}
}# 1. 接続 (まだ接続していない場合のみ実行)
if (-not (Get-Module -Name ExchangeOnlineManagement)) { Import-Module ExchangeOnlineManagement }
Connect-ExchangeOnline
# 2. 出力ヘッダーの表示
Write-Host "TeamName, AllowToAddGuests, Mail, HiddenFromExchangeClientsEnabled"
# 3. 調査対象のグループ名リスト(ここに取得したいグループを列挙してください)
$GroupNames = @(
"TMS_o365_jpxxxxxxx",
"TMS_o365_jpxxxxxxx",
"TMS_o365_jp116229"
)
# 4. ループ処理
foreach ($Name in $GroupNames) {
try {
# グループ情報を取得
$group = Get-UnifiedGroup -Identity $Name -ErrorAction Stop
# 必要な情報を抽出
$teamName = $group.DisplayName
$allowGuests = $group.AllowAddGuests
$mail = $group.PrimarySmtpAddress
$hidden = $group.HiddenFromExchangeClientsEnabled
# 結果を表示
Write-Host "$teamName, $allowGuests, $mail, $hidden"
} catch {
Write-Host "$Name の取得に失敗しました。名前を確認してください。" -ForegroundColor Red
}
}
