10月1日から後期授業が始まりました.
受講者は,1年後期の科目が120名ほど,2年後期の科目が100名弱です.前期と同じように,授業資料の提示や答案の提出にはMoodleを,質問対応などはTeamsの投稿やチャットを使用しています.
今期は,授業開始前に受講者が決まっているので,ダウンロードできる履修者名簿をもとに,Moodleのコースと,Teamsのチームに,それぞれ一括登録しておきます.Moodleについてはインタフェースが変更されているものの登録方法は変わりません.問題はTeamsです.
研究室のメンバーなら,個別にメールアドレスを打ち込んで,氏名が間違っていないのを確認して追加すればいいし,実際3年配属の4名にはそのようにしたのですが,100名前後となると,同じ方法をとりたくありません.
そこで一括登録の方法を探してみると,PowerShellのスクリプトが掲載されていました.
「ユーザー配列」と「チーム名」を書き換えて,実行したものの,うまくいきませんでした.どうやらAdd-TeamUserのところで,追加ができていません.もう少し調べると,Add-TeamUserを行う直前のGet-Teamで,失敗していることがわかりました.
ところで,Add-TeamUserの用法は,https://docs.microsoft.com/en-us/powershell/module/teams/add-teamuser?view=teams-psに載っています.パラメータに「-GroupId」というのがありますが,コピーしたPowerShellスクリプトではこれがなく,「|」で渡している形となっています.
グループIDを見つけましょう.PowerShellを「管理者として実行」で起動し,以下のコマンドを実行しました.2番目の実行の途中で,ウィンドウが開き,Microsoftアカウントの認証がありました.
PS C:\WINDOWS\System32> Install-Module -Name MicrosoftTeams -Force PS C:\WINDOWS\System32> Connect-MicrosoftTeams PS C:\WINDOWS\System32> Get-Team -User 自分のメール@アドレス
最後のコマンドで,所属しているTeamsのチームが出力されました.最初の,16進数をいくつかハイフンでつないだものが,グループIDです.
スクリプトファイルを書き換えました.adduser.ps1という名前にし,デスクトップに置きました.
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force Install-Module -Name MicrosoftTeams -Force $users = @("メール@アドレス","メール@アドレス",(略),"メール@アドレス") $team_Name = "チーム名" $gid = "グループID" # Connect-MicrosoftTeams foreach($u in $users){ Write-Output "Add $u to $team_Name" Add-TeamUser -GroupId $gid -User $u -Role Member Write-Output "Done" } # Set-ExecutionPolicy -ExecutionPolicy Restricted -Force
先ほどの,管理者で起動したPowerShellで,「Connect-MicrosoftTeams」を実行していたので,二度手間を避けるため,上記スクリプトではコメントアウトにしています.
実行は次のとおりです*1
.
PS C:\WINDOWS\System32> cd C:\Users\takehikom\Desktop PS C:\Users\takehikom\Desktop> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force PS C:\Users\takehikom\Desktop> .\adduser.ps1
なのですが,「Add $u to $team_Name」のうち$team_Nameが文字化けして表示されました.adduser.ps1をBOM (Byte Order Mark)付きのUTF-8で保存すればよい*2と知ったのは,あとのことでした.
ともあれメールアドレスをもとにユーザが登録されたのを,Teams内で確認できました.
*1:PowerShellのスクリプトの実行にあたっては,https://www.atmarkit.co.jp/ait/articles/0709/20/news125.htmlが有用でした.
*2:Emacsで編集していました.https://qiita.com/jjzak/items/b2ade63da2f5cecf534cによると,C-x RET f utf-8-with-signature-dosとすればよいわけです.