Powershell을 이용한 Office 365 사용자 관리 마지막편입니다. 마지막편은 사용자의 상태 정보, 비밀번호 초기화, 라이선스 등 변경과 사용자를 삭제하고 복구하는 방법을 알아보겠습니다.

사용자 상태, 속성정보 변경

어떤 사용자가 휴직하거나 퇴사하면 회사마다 정책이 다르겠지만 일단 Office 365에 로그인해서는 안되는 것으로 가정합니다. 로그인하지 못하게 하는 방법은 비밀번호를 변경하거나 사용자 계정을 막는(block) 방법이 있습니다. 또 단순(?)하게 사용자 계정을 삭제하면 됩니다(휴직은 삭제하면 안되겠네요). 삭제는 운영 정책상 얼마의 시간이 지난 후에 할 수도 있으므로 삭제보다는 로그인 하지 못하도록 비밀번호를 변경하거나 로그인을 막는 방법을 알아보겠습니다.

# 사용자의 비밀번호를 임의의 값 생성으로 변경(새 비밀번호를 지정하지 않거나 비밀번호 값을 비워두면 됩니다)
Set-msoluserPassword -UserPrincipalName "dan@kspark004.onmicrosoft.com"
Set-msoluserPassword -UserPrincipalName "dan@kspark004.onmicrosoft.com" -NewPassword ""

# 사용자의 비밀번호를 특정 값으로 변경하고 로그인 시 강제로 변경하도록 함
Set-msoluserPassword -UserPrincipalName "dan@kspark004.onmicrosoft.com" -ForceChangePassword $true -NewPassword "P@ssWORD"

비밀번호 변경은 비밀번호를 잊어버려서 변경요청한 사용자에 처리에도 요긴하게 사용할 수 있습니다. 임의의 값으로 비밀번호를 변경할때 강제로 비밀번호를 변경하도록 합니다. 해당 사용자는 새 비밀번호로 로그인 후 자신만의 비밀번호로 다시 변경합니다(Office 365 관리포털에서 사용자 스스로 비밀번호를 변경할 수 있는 전역설정을 하지 않았을 경우로 가정).

또 사용자를 Office 365에 로그인하지 못하게 하는 다른 방법은 사용자의 계정을 막는(block) 것입니다. 막힌 계정으로 로그인 했을 경우 아래 그림과 같은 에러 메시지가 나오고 로그인되지 않습니다.

# 사용자가 로그인을 못하도록 상태 변경하기
Set-msoluser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -BlockCredential $true

# 로그인 할 수 있도록 다시 상태 변경하기
Set-msoluser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -BlockCredential $false 


Office 365에서 사용자는 얼마든지 생성할 수 있으나 라이선스를 부여하지 않으면 Office 365의 기능을 사용할 수 없습니다. 이 번에는 Office 365에서 라이선스를 부여하거나 제거하는 방법을 알아보겠습니다.

# 라이선스 부여 (라이선스 할당을 위해 UsageLocation은 미리 설정되어 있어야 함)
Set-MsolUserLicense -UserPrincipalName "dan@kspark004.onmicrosoft.com" -AddLicenses "kspark004:ENTERPRISEPREMIUM"

# UsageLocation이 설정되어 있지 않다면 라이선스가 할당되지 않고 오류가 발생합니다. 아래와 같이 UsageLocation을 설정합니다
Set-msoluser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -UsageLocation "KR"

# 라이선스 설정값은 Powershell 2편에서 설명하였습니다. (E3라이선스-xxx:ENTERPRISEPACK, E5라이선스-xxx:ENTERPRISEPREMIUM, ProPlus-xxx:OFFICESUBSCRIPTION)

# 라이선스 제거
Set-MsolUserLicense -UserPrincipalName "dan@kspark004.onmicrosoft.com" -RemoveLicenses "kspark004:ENTERPRISEPREMIUM"

# 조회하여 라이선스 제거 (부서가 '대한민국'에서 라이선스가 있는 사람만 제거)
$EtcUser = Get-MsolUser -All -Department "대한민국" | where {$_.isLicensed -eq $true}; $EtcUser | foreach { Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLicenses "kspark004:ENTERPRISEPREMIUM" }

사용자의 부서와 직급을 변경해 보겠습니다. 변경할 사용자가 한 두명일 경우 관리포털에서 하는 것이 더 편하고 빠릅니다. Powershell을 사용하는 이유는 변경해야할 사용자가 많은 경우 적합합니다.

<# 변경 가능한 사용자 정보 속성 (이외에도 더 있습니다)
-FirstName(이름, First Name) -LastName(성, Last Name) -DisplayName(표시 이름, Display Name) -Title(직함, Job Title) -Department(부서명, Department) -Office(사무실 번호, Office Number) -PhoneNumber(사무실 전화, Office Phone) -MobilePhone(휴대폰, Mobile Phone) -Fax(팩스 번호, Fax) -StreetAddress(주소, Address) -City(구/군/시, City) -State(시/도, State or Province) -PostalCode(우편 번호, ZIP or Postal Code) -Country(국가 또는 지역, Country or Region) -UsageLocation(서비스국가코드, UsageLocation) -BlockCredential(로그인상태(차단/허용), BlockCredential)
#>

# 특정 사용자의 부서와 직급 변경
Set-msoluser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -Department "대한민국만세" -Title "과장"

# 변경해야할 사용자가 많다면 일괄등록과 동일한 방법으로 일괄 변경도 가능합니다
Import-Csv -Path "C:\Update_User_ko.csv" | foreach { Set-msoluser -UserPrincipalName $_.UserPrincipalName -Department $_.Department -Title $_.Title } 


사용자 삭제

Office 365의 사용자는 삭제할 수 있습니다. 실제로는 삭제하지 않고 휴지통으로 옮깁니다. 사용자 삭제 시 라이선스도 동시에 제거됩니다. 사용자가 삭제된 일자로 부터 기본 30일 이내에는 복구(휴지통에서)가 가능하며 복구 시 라이선스 등의 정보도 삭제 전과 동일하게 복구됩니다. 삭제할 사용자가 한 두명일 경우 관리포털에서 삭제하는 것이 더 편하지만 일괄 작업이 필요할 경우 Powershell 이 빠릅니다.

# 사용자 삭제 (기본 30일 이내에 복구할 수 있음)
Remove-MsolUser -UserPrincipalName "dan@kspark004.onmicrosoft.com"


# 사용자 복구 (복구되면 할당되었던 라이선스 등의 정보가 그대로 복구됨)
Restore-MsolUser -UserPrincipalName "dan@kspark004.onmicrosoft.com"


# 사용자 영구 삭제 (사용자를 삭제한 후 RemoveFromRecycleBin 옵션을 사용하면 영구삭제되며 복구가 불가능함)
Remove-MsolUser -UserPrincipalName "dan@kspark004.onmicrosoft.com" -RemoveFromRecycleBin


# 사용자 일괄 삭제 (파일목록에 있는 사용자를 삭제함. Force 옵션은 삭제확인 없이 바로 삭제)
Import-Csv -Path "c:\Delete_User.csv" | foreach { Remove-MsolUser -UserPrincipalName $_.UserPrincipalName -Force }


# 사용자 일괄 삭제 (부서로 조회하여)
$EtcUser = Get-MsolUser -All -Department "대한민국"; $EtcUser | foreach { Remove-MsolUser -UserPrincipalName $_.UserPrincipalName -Force } 

아래는 silee@kspark004.onmicrosoft.com 사용자를 삭제하고 복구하는 예제입니다. 사용자 삭제 전에는 라이선스 부여 개수가 5개였는데 삭제 후 4개로 줄어듭니다. 사용자를 복구한 뒤에는 별도로 라이선스를 부여하지 않았는데도 라이선스 부여 개수가 5개로 늘어나 있습니다.

이제 휴지통에 있는 사용자를 영구 삭제 후 다시 복구하는 예제입니다. 물론 영구 삭제 후에는 복구가 불가능합니다.

Powershell을 사용하지 않고 관리포탈에서만 작업했다가 낭패를 봤던게 3~4개월 전 봄인데 벌써 여름이네요. 다시 한 번 말하지만 Powershell을 사용하여 사용자를 관리하는 것이 무조건 편하지는 않습니다. 위에서 언급했듯이 적은 수의 사용자 관리는 관리포탈에서 작업하는 것이 직관적이고 쉽지만 대량의 사용자를 관리할 때는 정확하고 빠르게 작업할 수 있는 Powershell의 장점을 느낄 수 있을 것입니다.

이제 4편을 마지막으로 Powershell을 사용하여 Office 365 사용자를 관리하는 글은 마무리합니다. 업데이트 되거나 변경, 추가로 공유할 내용이 있으면 번외편으로 새 글을 추가할 생각입니다.

※ 참고 사이트 - 이 작업을 3~4개월 전에 했는데 참고했던 문서를 찾아보니 대부분 변경되었더군요. 기억을 더듬어 최대한 비슷한 문서를 연결합니다











+ Recent posts