Microsoft Graph PowerShell SDK を使用したライセンス管理操作
こちらに対応すべくメモ
$credential = Get-Credential
Import-Module ExchangeOnlineManagement
Connect-MgGraph -Scopes "Organization.Read.All","User.ReadWrite.All"
Import-Module Microsoft.Graph.Users
Connect-ExchangeOnline -Credential $credential
Import-Csv "C:\PoweShell\NewUsers_202207.csv" |
ForEach-Object `
{`
New-MgUser `
-AccountEnabled `
-CompanyName $_.CompanyName `
-Department $_.Department `
-DisplayName $_.DisplayName `
-GivenName $_.GivenName `
-EmployeeId $_.EmployeeId `
-JobTitle $_.JobTitle `
-MailNickName $_.MailNickName `
-MobilePhone $_.MobilePhone `
-PasswordProfile @{"Password" = $_.Password;ForceChangePasswordNextSignIn = $false;forceChangePasswordNextSignInWithMfa = $false} `
-PasswordPolicies "DisablePasswordExpiration" `
-Surname $_.Surname `
-UsageLocation "JP" `
-UserPrincipalName $_.UserPrincipalName `
}
$License1 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense `
-Property @{SkuId = "f245ecc8-75af-4f8e-b61f-27d8114de5f3"; DisabledPlans = @("8c7d2df8-86f0-4902-b2ed-a0458298f3b3","39b5c996-467e-4e60-bd62-46066f572726","54fc630f-5a40-48ee-8965-af0503c1386e","0feaeb32-d00e-4d66-bd5a-43b5b83db82c","199a5c09-e0ca-4e37-8f7c-b05d533e1ea2","5bfe124c-bbdc-4494-8835-f1297d457d79","31b4e2fc-4cd6-4e7d-9c1b-41407303bd66","a23b959c-7ce8-4e57-9140-b90eb88a9e97","7547a3fe-08ee-4ccb-b430-5077c5041653")}
Import-Csv -Path "C:\PoweShell\NewUsers_202207.csv" |
ForEach-Object `
{`
Set-MgUserLicense `
-UserId $_.UserPrincipalName `
-AddLicenses @($License1) `
-RemoveLicenses @() `
}
Import-Csv -Path "C:\PoweShell\NewUsers_202207.csv" |
ForEach-Object `
{`
Set-User `
-Identity $_.UserPrincipalName `
-PhoneticDisplayName $_.Furigana `
}
Import-Csv -Path "C:\PoweShell\NewUsers_202207.csv" |
ForEach-Object `
{`
Set-MailboxRegionalConfiguration `
-Identity $_.UserPrincipalName `
-Language "ja-JP" `
-DateFormat "yyyy/MM/dd" `
-TimeFormat "HH:mm" `
-TimeZone "Tokyo Standard Time" `
-LocalizeDefaultFolderName `
}
Import-Csv -Path "C:\PoweShell\NewUsers_202207.csv" |
ForEach-Object `
{`
Set-MailboxFolderPermission `
-Identity $_.Calendar `
-User "既定" `
-AccessRights LimitedDetails `
}
#マネージャー
#グループ
ゲストユーザーをGAL表示
Import-Csv "C:\Users\***\Downloads\exportUser_2022-6-14.csv" | foreach{Set-MailUser $_.userPrincipalName -HiddenFromAddressListsEnabled $false}※Default:True
ポータルサイトをダウンロードさせる
$WshShell = New-Object -comObject WScript.Shell
$DesktopPath = [System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::Desktop)
$Shortcut = $WshShell.CreateShortcut("$DesktopPath\ポータル サイト を入手 - Microsoft Store ja-JP.URL")
$Shortcut.TargetPath = "https://www.microsoft.com/ja-jp/p/company-portal/9wzdncrfj3pz?activetab=pivot:overviewtab"
$Shortcut.Save()
【PowerShell】Microsoft 365管理 ~連絡先~
連絡先編集のメモ
記載がないAll Groupsグループ(チーム)一覧
((Alias -ne `$null) -and (RecipientTypeDetailsValue -eq 'GroupMailbox'))
記載がないOffline Global Address Listオフライン グローバル アドレス一覧
((Alias -ne `$null) -and (((((((((((ObjectClass -eq 'user') -or (ObjectClass -eq 'contact'))) -or (ObjectClass -eq'msExchSystemMailbox'))) -or (ObjectClass -eq 'msExchDynamicDistributionList'))) -or (ObjectClass -eq 'group')))-or (ObjectClass -eq 'publicFolder'))))
アレンジ
((Alias -ne `$null) -and (((((((ObjectCategory -like 'person') -and (ObjectClass -eq 'user') -and (-not(Database -ne `$null)) -and (-not(ServerLegacyDN -ne `$null)))) -or (((ObjectCategory -like 'person') -and (ObjectClass -eq 'user') -and (((Database -ne `$null) -or (ServerLegacyDN -ne `$null))))))) -and (-not((RecipientTypeDetailsValue -eq 'GroupMailbox') -or (RecipientDisplayType -eq 'ConferenceRoomMailbox') -or (RecipientDisplayType -eq 'SyncedConferenceRoomMailbox') -or (ResourceType -eq 'Equipment') -or (RecipientTypeDetails -eq 'GuestMailUser')))))) #All Users社内アドレス一覧 ((Alias -ne `$null) -and ((ObjectCategory -like 'person' -and ObjectClass -eq 'contact') -or (ObjectCategory -like 'person' -and ObjectClass -eq 'user' -and RecipientTypeDetails -eq 'GuestMailUser'))) #All Contacts社外アドレス一覧 ((Alias -ne `$null) -and (ObjectCategory -like 'group') -and (RecipientTypeDetails -ne 'GroupMailbox')) #All Distribution Listsメーリングリスト一覧 ((Alias -ne `$null) -and (ResourceType -eq 'Equipment')) #Public Folder備品一覧
【PowerShell】Microsoft 365管理 ~ユーザー追加~
ユーザー追加をする時の個人的メモ
$UserCredential = Get-Credential
Connect-MsolService -Credential $UserCredential
Connect-AzureAD -Credential $UserCredential
Connect-ExchangeOnline -Credential $UserCredential
Get-MsolAccountSku
$disabledplans = "Deskless","KAIZALA_O365_P2","MCOSTANDARD","MICROSOFTBOOKINGS","PROJECT_O365_P2","SWAY","YAMMER_ENTERPRISE","O365_SB_Relationship_Management" #"KAIZALA_O365_P2","MCOSTANDARD","PROJECT_O365_P1","SWAY","YAMMER_ENTERPRISE"
$licenses = New-MsolLicenseOptions -AccountSkuId "xxx:O365_BUSINESS_PREMIUM" -DisabledPlans $disabledplans #xxx:O365_BUSINESS_ESSENTIALS
Import-Csv "C:\Users\xxx\Desktop\NewUsers_2021☓☓.csv" |
ForEach `
{`
New-MsolUser `
-UserPrincipalName $_.UserPrincipalName `
-FirstName $_.FirstName `
-LastName $_.LastName `
-DisplayName $_.DisplayName `
-Title $_.Title `
-Department $_.Department `
-PhoneNumber $_.PhoneNumber `
-LicenseAssignment xxx:O365_BUSINESS_PREMIUM `
-LicenseOptions $licenses `
-UsageLocation JP `
-ForceChangePassword $False `
} `
| Export-Csv -Path "C:\Users\xxx\Desktop\NewUsersResults__2021☓☓.csv" -Encoding UTF8
Import-Csv -Path "C:\Users\xxx\Desktop\NewUsers_2021☓☓.csv" |
ForEach `
{`
Set-AzureADUser `
-ObjectId $_.UserPrincipalName `
-CompanyName $_.CompanyName `
}
Import-Csv -Path "C:\Users\xxx\Desktop\NewUsers_2021☓☓.csv" |
ForEach `
{`
Set-AzureADUserExtension `
-ObjectId $_.UserPrincipalName `
-ExtensionName employeeId `
-ExtensionValue $_.ExtensionValue `
}
Import-Csv -Path "C:\Users\xxx\Desktop\NewUsers_2021☓☓.csv" |
ForEach `
{`
Set-User `
-Identity $_.UserPrincipalName `
-PhoneticDisplayName $_.Furigana `
}
Import-Csv -Path "C:\Users\xxx\Desktop\NewUsers_2021☓☓.csv" |
ForEach `
{`
Set-MailboxRegionalConfiguration `
-Identity $_.UserPrincipalName `
-Language "ja-JP" `
-DateFormat "yyyy/MM/dd" `
-TimeFormat "HH:mm" `
-TimeZone "Tokyo Standard Time" `
-LocalizeDefaultFolderName `
}
Import-Csv -Path "C:\Users\xxx\Desktop\NewUsers_2021☓☓.csv" |
ForEach `
{`
Set-MailboxFolderPermission `
-Identity $_.Calendar `
-User "既定" `
-AccessRights LimitedDetails `
}
Import-CSV "C:\Users\xxx\Desktop\NewUsers_2021☓☓.csv" | Foreach {Set-Mailbox -Identity $_.UserPrincipalName -EmailAddresses @{Remove="smtp:$($_.Alias)"}}
マネージャー
グループ
【VBA】~番外編~
Dim wslist As Worksheet
Dim result, s, e, time, i As Long
Dim attached1 As String
Dim outlookObj As Outlook.Application
Dim mailItemObj As Outlook.mailItem
Dim myattachments As Outlook.Attachments
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
Sub 連続送信マクロ()
result = MsgBox("連続送信を実行しますか?", vbYesNo + vbExclamation)
If result = vbYes Then
Set wslist = ThisWorkbook.Worksheets(1)
attached1 = wslist.Range("I4").Value
s = wslist.Range("B3").Value
e = wslist.Range("C3").Value
time = 2000
For i = s To e
wslist.Range("A3").Value = i
Set outlookObj = New Outlook.Application
Set mailItemObj = outlookObj.CreateItem(olMailItem)
Set myattachments = mailItemObj.Attachments
With mailItemObj
.To = wslist.Range("F1").Value
.CC = wslist.Range("F2").Value
.Subject = wslist.Range("F3").Value
.BodyFormat = olFormatHTML
.Body = wslist.Range("F4").Value & vbCrLf & _
wslist.Range("F5").Value & vbCrLf & _
wslist.Range("F6").Value & vbCrLf & _
wslist.Range("F7").Value & vbCrLf & _
wslist.Range("F8").Value
If attached1 = "" Then
GoTo Label1
End If
myattachments.Add attached1
Label1:
.Display
'.Send
End With
Sleep time
Next i
Set outlookObj = Nothing
MsgBox "送信完了"
Else
Exit Sub
End If
End Sub
【PowerShell】Microsoft 365管理 ~DKIM編~
カスタムドメインを取得してExchangeOnlineを運用する際のTips
カスタム ドメインで DKIM をメールに使用する方法 - Office 365 | Microsoft Docs
公式の翻訳
New-DkimSigningConfig -DomainName <domain> -Enabled $false #① Get-DkimSigningConfig -Identity <domain> | Format-List Selector1CNAME, Selector2CNAME #② Set-DkimSigningConfig -Identity <domain> -Enabled $true #③