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-Transcript
SCSS
# デスクトップパス
$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-Transcript
SCSS
# 文字コード設定(文字化け防止)
[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
    }
}
タイトルとURLをコピーしました