Share via


PowerShell을 사용하여 SharePoint 사용자 및 그룹 관리

이 문서는 Microsoft 365 Enterprise와 Office 365 Enterprise에 모두 적용됩니다.

사용자 계정 또는 그룹의 큰 목록으로 작업하고 더 쉽게 관리할 수 있는 방법을 원하는 SharePoint 관리자인 경우 Microsoft 365용 PowerShell을 사용할 수 있습니다.

시작하기 전에 이 문서의 절차를 수행하려면 SharePoint에 연결해야 합니다. 자세한 내용은 SharePoint PowerShell에 연결을 참조하세요.

사이트, 그룹, 사용자 목록 가져오기

사용자 및 그룹 관리를 시작하려면 먼저 사이트, 그룹 및 사용자 목록을 가져와야 합니다. 그리고 나면 해당 정보를 이 문서의 예제 전반에 걸쳐 사용할 수 있습니다.

이 명령을 사용하여 테넌트의 사이트 목록을 가져옵니다.

Get-SPOSite

이 명령을 사용하여 테넌트의 그룹 목록을 가져옵니다.

Get-SPOSite | ForEach {Get-SPOSiteGroup -Site $_.Url} | Format-Table

이 명령을 사용하여 테넌트의 사용자 목록을 가져옵니다.

Get-SPOSite | ForEach {Get-SPOUser -Site $_.Url}

사이트 관리자 그룹에 사용자 추가

cmdlet을 Set-SPOUser 사용하여 사이트 모음의 사이트 관리자 목록에 사용자를 추가합니다.

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$user = "<user account name, such as opalc>"
Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.com -IsSiteCollectionAdmin $true

이러한 명령을 사용하려면 따옴표 안의 모든 항목(및 > 문자 포함)을 < 올바른 이름으로 바꿉니다.

예를 들어 이 명령 집합은 Contoso 테넌시의 ContosoTest 사이트 모음에 있는 사이트 관리자 목록에 Opal Castillo(사용자 이름 opalc)를 추가합니다.

$tenant = "contoso"
$site = "contosotest"
$user = "opalc"
Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.com -IsSiteCollectionAdmin $true

이러한 명령을 복사하여 메모장에 붙여넣고, $tenant, $site 및 $user 변수 값을 환경의 실제 값으로 변경한 다음 SharePoint Management Shell 창에 붙여넣어 실행할 수 있습니다.

다른 사이트 모음 그룹에 사용자 추가

이 작업에서는 cmdlet을 Add-SPOUser 사용하여 사이트 모음의 SharePoint 그룹에 사용자를 추가합니다.

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$user = "<user account name, such as opalc>"
$group = "<group name name, such as Auditors>"
Add-SPOUser -Group $group -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site

예를 들어 contoso 테넌트의 ContosoTest 사이트 모음에 있는 감사자 그룹에 Glen Rife(사용자 이름 glenr)를 추가해 보겠습니다.

$tenant = "contoso"
$site = "contosotest"
$user = "glenr"
$group = "Auditors"
Add-SPOUser -Group $group -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site

사이트 모음 그룹 만들기

cmdlet을 New-SPOSiteGroup 사용하여 새 SharePoint 그룹을 만들고 사이트 모음에 추가합니다.

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$group = "<group name name, such as Auditors>"
$level = "<permission level, such as View Only>"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site

사용 권한 수준과 같은 그룹 속성은 나중에 cmdlet을 Set-SPOSiteGroup 사용하여 업데이트할 수 있습니다.

예를 들어 보기 전용 권한이 있는 감사자 그룹을 contoso 테넌트의 contosotest 사이트 모음에 추가해 보겠습니다.

$tenant = "contoso"
$site = "contosotest"
$group = "Auditors"
$level = "View Only"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site

그룹에서 사용자 제거

경우에 따라 사이트 또는 모든 사이트에서 사용자를 제거해야 합니다. 아마도 직원은 한 부서에서 다른 부서로 이동하거나 회사를 떠날 수 있습니다. UI에서 한 직원에 대해 이 작업을 쉽게 수행할 수 있지만 전체 부서를 한 사이트에서 다른 사이트로 이동해야 하는 경우에는 쉽게 수행할 수 없습니다.

그러나 SharePoint 관리 셸 및 CSV 파일을 사용하면 빠르고 쉽게 사용할 수 있습니다. 이 작업에서는 Windows PowerShell 사용하여 사이트 모음 보안 그룹에서 사용자를 제거합니다. 그런 다음 CSV 파일을 사용하고 다른 사이트에서 많은 사용자를 제거합니다.

명령 구문을 볼 수 있도록 'Remove-SPOUser' cmdlet을 사용하여 사이트 모음 그룹에서 단일 Microsoft 365 사용자를 제거합니다. 구문의 모양은 다음과 같습니다.

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
$user = "<user account name, such as opalc>"
$group = "<group name name, such as Auditors>"
Remove-SPOUser -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site -Group $group

예를 들어 contoso 테넌트의 contosotest 사이트 모음에 있는 사이트 모음 감사자 그룹에서 Bobby Overby를 제거해 보겠습니다.

$tenant = "contoso"
$site = "contosotest"
$user = "bobbyo"
$group = "Auditors"
Remove-SPOUser -LoginName $user@$tenant.com -Site https://$tenant.sharepoint.com/sites/$site -Group $group

현재 있는 모든 그룹에서 바비를 제거하고 싶다고 가정해 보겠습니다. 이렇게 하는 방법은 다음과 같습니다.

$tenant = "contoso"
$user = "bobbyo"
Get-SPOSite | ForEach {Get-SPOSiteGroup –Site $_.Url} | ForEach {Remove-SPOUser -LoginName $user@$tenant.com -Site $_.Url}

경고

이것은 단지 예일 뿐입니다. 실제로 사용자가 퇴사하는 경우 등 모든 그룹에서 사용자를 제거해야 하는 경우가 아니면 이 명령을 실행해서는 안 됩니다.

대형 사용자 및 그룹 목록의 관리 자동화

SharePoint 사이트에 많은 수의 계정을 추가하고 권한을 부여하려면 Microsoft 365 관리 센터, 개별 PowerShell 명령 또는 PowerShell 및 CSV 파일을 사용할 수 있습니다. 이중에서 CSV 파일이 작업을 자동화하는 가장 빠른 방법입니다.

기본적인 프로세스는 Windows PowerShell 스크립트에 필요한 매개 변수에 해당하는 헤더(열)가 포함된 CSV 파일을 만드는 것입니다. Excel에서 이러한 목록을 쉽게 만든 다음 CSV 파일로 내보낼 수 있습니다. 그런 다음 Windows PowerShell 스크립트를 사용하여 CSV 파일에서 레코드(행)를 반복해 사용자를 그룹에, 그룹을 사이트에 추가합니다.

예를 들어 사이트 모음, 그룹 및 권한 그룹을 정의하는 CSV 파일을 만들어 보겠습니다. 다음으로, 그룹을 사용자로 채우는 CSV 파일을 만듭니다. 마지막으로 그룹을 만들고 채우는 Windows PowerShell 스크립트를 만들고 실행합니다.

첫 번째 CSV 파일은 하나 이상의 사이트 모음에 하나 이상의 그룹을 추가하고 다음 구조를 갖습니다.

헤더:

Site,Group,PermissionLevels

항목:

https://tenant.sharepoint.com/sites/site,group,level

예제 파일은 다음과 같습니다.

Site,Group,PermissionLevels
https://contoso.sharepoint.com/sites/contosotest,Contoso Project Leads,Full Control
https://contoso.sharepoint.com/sites/contosotest,Contoso Auditors,View Only
https://contoso.sharepoint.com/sites/contosotest,Contoso Designers,Design
https://contoso.sharepoint.com/sites/TeamSite01,XT1000 Team Leads,Full Control
https://contoso.sharepoint.com/sites/TeamSite01,XT1000 Advisors,Edit
https://contoso.sharepoint.com/sites/Blog01,Contoso Blog Designers,Design
https://contoso.sharepoint.com/sites/Blog01,Contoso Blog Editors,Edit
https://contoso.sharepoint.com/sites/Project01,Project Alpha Approvers,Full Control

두 번째 CSV 파일은 하나 이상의 그룹에 하나 이상의 사용자를 추가하고 다음 구조를 갖습니다.

헤더:

Group,LoginName,Site

항목:

group,login,https://tenant.sharepoint.com/sites/site

예제 파일은 다음과 같습니다.

Group,LoginName,Site
Contoso Project Leads,bobbyo@contoso.com,https://contoso.sharepoint.com/sites/contosotest
Contoso Auditors,allieb@contoso.com,https://contoso.sharepoint.com/sites/contosotest
Contoso Designers,bonniek@contoso.com,https://contoso.sharepoint.com/sites/contosotest
XT1000 Team Leads,dorenap@contoso.com,https://contoso.sharepoint.com/sites/TeamSite01
XT1000 Advisors,garthf@contoso.com,https://contoso.sharepoint.com/sites/TeamSite01
Contoso Blog Designers,janets@contoso.com,https://contoso.sharepoint.com/sites/Blog01
Contoso Blog Editors,opalc@contoso.com,https://contoso.sharepoint.com/sites/Blog01
Project Alpha Approvers,robinc@contoso.com,https://contoso.sharepoint.com/sites/Project01

그런 다음 해당 드라이브에 CSV 파일 두 개가 저장되어 있어야 합니다. 다음은 CSV 파일을 모두 사용하고 권한 및 그룹 멤버 자격을 추가하는 예제 명령입니다.

Import-Csv C:\O365Admin\GroupsAndPermissions.csv | ForEach {New-SPOSiteGroup -Group $_.Group -PermissionLevels $_.PermissionLevels -Site $_.Site}
Import-Csv C:\O365Admin\Users.csv | ForEach {Add-SPOUser -Group $_.Group –LoginName $_.LoginName -Site $_.Site}

스크립트는 CSV 파일 콘텐츠를 가져오고 열의 값을 사용하여 New-SPOSiteGroupAdd-SPOUser 명령의 매개 변수를 채웁니다. 이 예제에서는 이 파일을 C 드라이브의 O365Admin 폴더에 저장하지만 원하는 위치에 저장할 수 있습니다.

이제 동일한 CSV 파일을 사용하여 여러 사이트의 여러 그룹에 대한 여러 사용자를 제거해 보겠습니다. 다음은 예제 명령입니다.

Import-Csv C:\O365Admin\Users.csv | ForEach {Remove-SPOUser -LoginName $_.LoginName -Site $_.Site -Group $_.Group}

사용자 보고서 생성

몇 가지 사이트에 대한 보고서를 가져와서 해당 사이트, 해당 권한 수준 및 기타 속성에 대한 사용자를 표시할 수 있습니다. 이 작업을 위한 구문은 다음과 같습니다.

$tenant = "<tenant name, such as litwareinc for litwareinc.com>"
$site = "<site name>"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | select * | Format-table -Wrap -AutoSize | Out-File c\UsersReport.txt -Force -Width 360 -Append

이렇게 하면 이 세 사이트에 대한 데이터를 캡처하여 로컬 드라이브의 텍스트 파일에 씁니다. –Append 매개 변수는 기존 파일에 새 콘텐츠를 추가합니다.

예를 들어 Contoso1 테넌트의 ContosoTest, TeamSite01 및 Project01 사이트에 대한 보고서를 실행해 보겠습니다.

$tenant = "contoso"
$site = "contosotest"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append
$site = "TeamSite01"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site |Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append
$site = "Project01"
Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

$site 변수만 변경해야 했습니다. $tenant 변수는 명령의 세 가지 실행을 모두 통해 해당 값을 유지합니다.

그러나 모든 사이트에 대해 이 작업을 수행하려면 어떻게 해야 할까요? 다음 명령을 사용하여 모든 웹 사이트를 입력하지 않고도 이 작업을 수행할 수 있습니다.

Get-SPOSite | ForEach {Get-SPOUser –Site $_.Url} | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

이 보고서는 매우 단순하므로 코드를 더 추가하여 더 자세한 정보를 포함하는 보고서나 보다 구체적인 보고서를 만들 수도 있습니다. 그러나 SharePoint 관리 셸을 사용하여 SharePoint 환경에서 사용자를 관리하는 방법에 대한 아이디어를 얻을 수 있습니다.

참고 항목

SharePoint PowerShell에 연결

PowerShell을 사용하여 SharePoint 관리

PowerShell로 Microsoft 365 관리

Microsoft 365 용 PowerShell 시작