가장 유용한 SharePoint PowerShell 명령
Aug 26, 2025
가장 유용한 SharePoint PowerShell 명령은 기본 제공 도구보다 더 효율적으로 관리자가 사이트, 개체, 권한을 관리할 수 있게 해줍니다. Get-SPSite 및 Get-SPWeb 은(는) 사이트와 파일에 대한 자세한 정보를 제공하는 반면, New-SPSite, Remove-SPSite, 그리고 Set-SPUser 는 사이트 생성, 삭제, 액세스 제어를 간소화합니다. 보고, 권한 관리, 감사(audit)를 자동화함으로써 SharePoint PowerShell 스크립트는 생산성을 높이고 오류를 줄이며, 환경 전반에서 보안을 강화합니다.
SharePoint Server는 Microsoft Office와 통합되는 웹 기반 협업 플랫폼입니다. SharePoint 사이트 설정을 구성하려면 시스템 관리자는 대개 SharePoint 제품과 함께 설치되는 SharePoint Management Shell을 사용합니다. SharePoint Management Shell을 실행하면 Windows PowerShell 런타임 환경이 호출되고 sharepoint.ps1라는 이름의 스크립트 파일이 실행되어 SharePoint용 Windows PowerShell 스냅인(보조 구성 요소)을 로드한 다음 몇 가지 명령을 수행합니다. 이 명령들은 그다지 중요하지 않으며, 명령 실행을 위한 홈 위치로 C:UsersUsername을 선택하고 PowerShell 콘솔의 최신 버전을 실행하는 것 등이 포함됩니다.
더 나은 선택은 PowerShell ISE를 사용하는 것입니다. SharePoint 관리를 위해 특히 만들어진 많은 cmdlet을 포함할 뿐만 아니라, 색상으로 강조 표시된 코드, 디버그 엔진, 그리고 cmdlet 검색 엔진도 제공합니다.
SharePoint 스냅인을 로드하려면 다음 명령을 실행해야 합니다:
Add-PSSnapin Microsoft.SharePoint.PowerShell
그 다음에는 Microsoft SharePoint PowerShell cmdlet에 대한 최신 정보를 얻기 위해 PowerShell 도움말을 업데이트하는 것이 좋습니다:
Update-Help
그렇다면 SharePoint 스냅인에서 사용할 수 있는 cmdlet은 무엇일까요? 다음 명령을 실행하면 모두 목록으로 표시됩니다:
Get-Command -Module "Microsoft.SharePoint.PowerShell"
이제 가장 유용한 SharePoint cmdlet을 자세히 살펴보겠습니다.
엄선한 관련 콘텐츠:
SharePoint 사이트 정보 가져오기
Get-SPSite cmdlet은 SharePoint 사이트 컬렉션에 대한 정보를 가져오는 데 사용되는 주요 cmdlet입니다. 이 cmdlet은 SharePoint 사이트의 URL과 호환성 수준(SharePoint 버전)을 나열합니다.
이 cmdlet에서 Select-Object 매개 변수를 사용하면 사이트 소유자, 저장소 사용량, 최대 쿼터 수준, 마지막 콘텐츠 수정 날짜와 같은 사이트에 대한 특정 속성을 가져올 수 있습니다:
Get-SPSite "http://sharepoint/sites/ent" | Select-Object url, owner, @{Expression={$_.Usage.Storage}}, @{Expression={$_.Audit.AuditFlags}}, readonly, LastContentModifiedDate, @{Express={$_.QuotaStorageMaximumLevel}}
또한 SharePoint 팜에 있는 모든 사이트에 대한 정보를 csv 파일로 내보낼 수도 있습니다:
Get-SPWebApplication http://sharepoint/ | Get-SPSite -Limit All | Get-SPWeb -Limit All | Select Title, URL, ID, ParentWebID | Export-CSV C:rootsharepointinventory.csv -NoTypeInformation
또한 Get-SPSite cmdlet을 사용해 특정 SharePoint 사이트에 대해 모든 그룹과 각 그룹의 구성원을 나열하는 SharePoint PowerShell 스크립트를 만들 수 있습니다:
$site = Get-SPSite http://sharepoint/sites/ent/
$groups = $site.RootWeb.sitegroups
foreach ($grp in $groups) {"Group: " + $grp.name; foreach ($user in $grp.users) {" User: " + $user.name} }
$site.Dispose()
SharePoint 사이트에 대한 전체 권한 보고서가 필요하다면, 다음 코드를 실행하되 SharePoint 사이트 URL($SPSiteURL)과 데이터를 csv 파일($ExportFile)로 내보낼 경로를 지정하십시오:
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$SPSiteUrl = "http://sharepoint/sites/ent"
$SPSite = New-Object Microsoft.SharePoint.SPSite($SPSiteUrl);
$ExportFile = "C:rootPermissions.csv"
"Web Title,Web URL,List Title,User or Group,Role,Inherited" | out-file $ExportFile
foreach ($WebPath in $SPSite.AllWebs)
{
if ($WebPath.HasUniqueRoleAssignments)
{
$SPRoles = $WebPath.RoleAssignments;
foreach ($SPRole in $SPRoles)
{
foreach ($SPRoleDefinition in $SPRole.RoleDefinitionBindings)
{
$WebPath.Title + "," + $WebPath.Url + "," + "N/A" + "," + $SPRole.Member.Name + "," + $SPRoleDefinition.Name + "," + $WebPath.HasUniqueRoleAssignments | out-file $ExportFile -append
}
}
}
foreach ($List in $WebPath.Lists)
{
if ($List.HasUniqueRoleAssignments)
{
$SPRoles = $List.RoleAssignments;
foreach ($SPRole in $SPRoles)
{
foreach ($SPRoleDefinition in $SPRole.RoleDefinitionBindings)
{
$WebPath.Title + "," + $WebPath.Url + "," + $List.Title + "," + $SPRole.Member.Name + "," + $SPRoleDefinition.Name | out-file $ExportFile -append
}
}
}
}
}
$SPSite.Dispose();
SharePoint 사이트에서 특정 파일을 찾으려면 Get-SPWeb cmdlet을 사용해야 합니다. 아래는 “http://sharepoint/sites/ent” 사이트에서 이름에 “readme”라는 단어가 포함된 파일을 검색하는 스크립트 예시입니다:
Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
-not $_.Hidden } |
Select -ExpandProperty Items |
Where { $_.Name -like "*readme*" } |
Select Name, {$_.File.Length}, url
이제 특정 사용자가 생성한 모든 파일을 출력하는 보고서를 만들어 봅시다. 예를 들어 직원이 회사를 떠났을 때, 해당 사용자의 데이터를 다른 사람들에게 전송해야 하는 경우 이 스크립트가 유용할 수 있습니다.
Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
-not $_.Hidden } |
Select -ExpandProperty Items |
Where { $_["Created By"] -like "*system*" } |
Select Name, url, {$_["Created By"]}
이전 스크립트에서는 Get-SPWeb cmdlet을 사용해 지정한 확장자를 가진 모든 파일에 대해 보고합니다:
Get-SPWeb http://sharepoint/sites/ent |
Select -ExpandProperty Lists |
Where { $_.GetType().Name -eq "SPDocumentLibrary" -and
-not $_.Hidden } |
Select -ExpandProperty Items |
Where { $_.Name -Like "*.rtf" } |
Select Name,
@{Name="URL";
Expression={$_.ParentList.ParentWeb.Url + "/" + $_.Url}}
PowerShell을 사용하여 SharePoint 사이트 및 개체 관리하기
새 SharePoint 사이트는 일반적으로 템플릿을 사용해 생성합니다. 모든 사이트 템플릿 목록을 가져오려면 매개변수 없이 Get-SPWebTemplate cmdlet을 실행하세요.
템플릿을 기반으로 새 SharePoint 사이트를 만들기 위해 Get-SPWebTemplate cmdlet을 New-SPSite cmdlet과 함께 사용합니다. 아래는 “Team Site” 템플릿(STS#0)을 사용해 사이트를 생성하는 스크립트 예시입니다:
$template = Get-SPWebTemplate "STS#0"
New-SPSite -Url "http://sharepoint/sites/Netwrixteamsite" -OwnerAlias "enterpriset.simpson" -Template $template
사이트를 삭제하려면 Remove-SPSite cmdlet을 사용합니다:
Remove-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -GradualDelete
때로는 사이트 모음 관리자(사이트 컬렉션 관리자)를 변경해야 할 수도 있습니다. 지정한 사용자에게 관리자 권한을 추가하려면 아래 스크립트를 실행하세요:
Set-SPSite -Identity "http://sharepoint/sites/Netwrixteamsite" -SecondaryOwnerAlias " i:0#.w|enterprisei.scur"
이제 사이트 컬렉션에 대한 권한을 관리하는 방법을 살펴보겠습니다. 먼저 특정 Active Directory 사용자 계정에 특정 액세스 권한을 추가해 보겠습니다. 이 경우 사용자 “enterpriset.simpson”에게 사이트 “http://sharepoint/sites/ent”에 대한 “Contributor” 권한이 부여됩니다. 일반 사용자 계정 이름인 “enterpriset.simpson” 앞에는 접두사 “i:0#.w|”를 사용해야 합니다. 그렇지 않으면 실행이 실패하며 스크립트가 오류를 생성합니다.
Set-SPUser -Identity "i:0#.w|enterpriset.simpson" -Web http://sharepoint/sites/ent -AddPermissionLevel "Contributor"
특정 AD security 그룹에 권한을 추가하려면 동일한 스크립트를 사용하되, 사용자 계정 이름 대신 그룹 이름을 입력하면 됩니다.
사용자를 그룹에 추가하려면 다음 명령을 사용합니다:
Set-SPUser -Identity "i:0#.w|enterprisej.carter" -Web http://sharepoint/sites/ent -Group "Enterprise Owners"
결론
보시는 것처럼 SharePoint PowerShell 스크립트를 사용해 SharePoint 사이트를 관리하고 보고하는 작업은 처음 생각하는 것만큼 어렵지 않습니다. 실제로 경우에 따라서는 관리자 감사 로그에서 보고서를 생성하는 것보다 스크립트를 실행하는 편이 훨씬 빠릅니다.
Microsoft SharePoint 환경을 안전하고 고가용성으로 유지하려면, 그 안에서 발생하는 변경 사항도 면밀하게 추적해야 합니다. Netwrix Auditor for SharePoint 는 SharePoint 변경 사항에 대한 보고서를 손쉽게 생성하여, 누가 무엇을 언제 어떤 SharePoint 팜에서 변경했는지에 대한 완전한 가시성을 제공합니다. 또한 중요한 변경 사항에 대해 자동으로 알림을 받을 수 있습니다. 더불어 Netwrix Auditor for SharePoint 는 현재 권한과 권한이 어떻게 부여되었는지에 대한 상세 정보를 제공하는 것은 물론, SharePoint 환경에서 깨진 상속(상속 관계의 단절)도 표시해 줍니다.
공유하기
더 알아보기
저자 소개
Jeff Melnick
시스템 엔지니어링 디렉터
Jeff는 Netwrix의 Global Solutions Engineering 분야 전(前) 디렉터입니다. 그는 오랜 기간 Netwrix 블로거이자 연사, 프레젠터로 활동해 왔습니다. Netwrix 블로그에서 Jeff는 시스템 관리 경험을 크게 향상시킬 수 있는 라이프해킹, 팁, 트릭을 공유합니다.