ライセンスが付与されており、1年以上使っていないメールボックスを探すスクリプト

08.24

Exchangeの棚卸に便利です。

Office365 にログオンしてライセンスがついているアカウントを特定。

その後 ExchangeOnline にログオンして、ラストログオンから1年以上経過しているアカウントを抽出という流れです。

作成日からという条件も追加して入れないと、作成してまだユーザーが使っていないアカウントが引っかかるので気を付けてください。

 

# 全メールボックスを取得して、ライセンスが付与されており、かつ1年以上ログオンしていないユーザーの一覧

$ID = “Office365管理者アカウントのUPN”

$LiveCred = New-Object System.Management.Automation.PSCredential $ID,$password

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $LiveCred -Authentication Basic -AllowRedirection

Import-PSSession $Session

$User = Get-mailbox -ResultSize Unlimited | Select-Object PrimarySmtpAddress,UserPrincipalName,WhenCreated

Remove-PSSession $Session

Import-Module MsOnline

Connect-MsolService -Credential $LiveCred

“PrimarySmtpAddress” + “`t” + “UserPrincipalName” + “`t” + “DisplayName” + “`t” + “Licenses” | Out-File $env:UserProfile\desktop\Office365Licenses_List.csv

$User | % {

if($_.WhenCreated -lt (Get-Date).AddDays(-30))

{

$Licenses = $null

$Licenses = Get-MsolUser -UserPrincipalName $_.UserPrincipalName | Select IsLicensed,Licenses,UserPrincipalName,DisplayName

if($Licenses.IsLicensed -eq $True)

{

$note = $null

$note = $_.PrimarySmtpAddress + “`t” + $_.UserPrincipalName + “`t” + $Licenses.DisplayName + “`t” + $Licenses.Licenses.AccountSkuId

$note | Out-File $env:UserProfile\desktop\Office365Licenses_List.csv -Append

$count = $count + 1

Write-Output $count

}

}

}

$data = import-csv $env:UserProfile\desktop\Office365Licenses_List.csv -Delimiter `t

Remove-Item $env:UserProfile\desktop\Office365Licenses_List.csv -Force

“DisplayName” + “`t” + “PrimarySmtpAddress” + “`t” + “UserPrincipalName” + “`t” + “LastLogonTime” + “`t” + “Licenses” | Out-File $env:UserProfile\desktop\Office365Licenses_List.csv

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $LiveCred -Authentication Basic -AllowRedirection

Import-PSSession $Session

$data | % {

$LastLogonTime = $null

$LastLogonTime = Get-MailboxStatistics $_.PrimarySmtpAddress | Select DisplayName,LastLogonTime

if($LastLogonTime.LastLogonTime -eq $null)

{

$note = $null

$note = $_.DisplayName + “`t” + $_.PrimarySmtpAddress + “`t” + $_.UserPrincipalName + “`t” + “” + “`t” + $_.Licenses

$note | Out-file $env:UserProfile\desktop\Office365Licenses_List.csv -Append

$Count = $Count + 1

Write-Output $Count

}

else

{

if($LastLogonTime.LastLogonTime -lt (Get-Date).AddDays(-365))

{

$note = $null

$note = $_.DisplayName + “`t” + $_.PrimarySmtpAddress + “`t” + $_.UserPrincipalName + “`t” + $LastLogonTime.LastLogonTime + “`t” + $_.Licenses

$note | Out-file $env:UserProfile\desktop\Office365Licenses_List.csv -Append

$Count = $Count + 1

Write-Output $Count

}

}

}

$data = $null

$data = import-csv $env:UserProfile\desktop\Office365Licenses_List.csv -Delimiter `t

Remove-Item $env:UserProfile\desktop\Office365Licenses_List.csv -Force

“DisplayName” + “`t” + “EmployeeNumber” + “`t” + “PrimarySmtpAddress” + “`t” + “UserPrincipalName” + “`t” + “LastLogonTime” + “`t” + “Licenses” | Out-File $env:UserProfile\desktop\Office365Licenses_List.csv

$data | % {

$user = $PrimarySmtpAddress = $null

$PrimarySmtpAddress = $_.PrimarySmtpAddress

$user = Get-ADUser -Filter {EmailAddress -eq $PrimarySmtpAddress} -Properties EmployeeNumber

if($User.EmployeeNumber -eq $null)

{

$note = $null

$note = $_.DisplayName + “`t” + “” + “`t” + $_.PrimarySmtpAddress + “`t” + $_.UserPrincipalName + “`t” + $_.LastLogonTime + “`t” + $_.Licenses

$note | Out-file $env:UserProfile\desktop\Office365Licenses_List.csv -Append

$Count = $Count + 1

Write-Output $Count

}

else

{

$note = $null

$note = $_.DisplayName + “`t” + $User.EmployeeNumber + “`t” + $_.PrimarySmtpAddress + “`t” + $_.UserPrincipalName + “`t” + $_.LastLogonTime + “`t” + $_.Licenses

$note | Out-file $env:UserProfile\desktop\Office365Licenses_List.csv -Append

$Count = $Count + 1

Write-Output $Count

}

}

 

昔作ったスクリプトなのですが、長いですね~。

基本的な構造は今作っても一緒かと思いますが、省略できるところもありそうですね。

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

2018年10月
« 9月    
1234567
891011121314
15161718192021
22232425262728
293031  
ページ上部へ戻る