当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 找出谁在 SharePoint 中删除了网站集

作者:精品下载站 日期:2024-12-14 15:39:36 浏览:14 分类:玩电脑

找出谁在 SharePoint 中删除了网站集


要求:找出谁在 SharePoint 2016 服务器中删除了网站集。

[玩转系统] 找出谁在 SharePoint 中删除了网站集

SharePoint 网站集删除是一个严重的问题,因为它可能导致数据丢失和业务中断。在某些情况下,这种情况可能是由具有权限的用户意外发生的,也可能是由有权访问 SharePoint 的用户恶意发生的。在本指南中,我们将向您展示如何找出谁在 SharePoint 中删除了网站集。我们将介绍检查 SharePoint IIS 日志的步骤,以及如何使用 PowerShell 检索信息。

如何查找谁删除了 SharePoint 网站?

不幸的是,没有直接的方法可以找出谁删除了 SharePoint 网站。 PowerShell cmdlet“Get-SPDeletedSite”可获取所有已删除的网站集,而不会提示删除该网站的用户。那么,如何找到谁删除了 SharePoint 网站?唯一可用的方法是扫描 SharePoint Web 前端服务器中的 IIS 日志,查找当用户从网站设置页面删除网站时调用的特定 URL“/_layouts/15/webdeleted.aspx”。

使用 PowerShell 找出谁删除了 SharePoint 网站:

扫描每个日志文件可能很麻烦。但 PowerShell 可以提供帮助!此 PowerShell 脚本扫描过去 30 天内给定 Web 应用程序的所有 IIS 日志文件。在脚本末尾设置参数 $WebAppURL 并执行它。


#Import necessary Modules
Import-Module WebAdministration
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Function to get Log Folder of the SharePoint Web Application
Function Get-IISLogFolder($WebAppURL)
{
    #Get Web Applications' IIS Settings
    $WebApp = Get-SPWebApplication $WebAppURL
    $IISSettings = $WebApp.IISSettings[[Microsoft.SharePoint.Administration.SPUrlZone]::Default]
    $WebSiteName = $IISSettings.ServerComment

    #Get Log Folder from Web Site
    $WebSite = Get-Website -Name $WebSiteName
    $LogLocation = "$($WebSite.LogFile.Directory)\w3svc$($WebSite.id)".Replace("%SystemDrive%",$Env:SystemDrive)
    Return $LogLocation
}

#Function to Parse IIS Log
Function Parse-IISLog {

 [CmdletBinding()]
    [OutputType([System.Data.DataTable])]
 param(
  [Parameter(Mandatory=$True, ValueFromPipeline=$True)][string[]]$LogFilePath
        )
 BEGIN {
        $LogDataTable = New-Object System.Data.DataTable
        $FieldsString = Get-Content -Path $LogFilePath | Select -First 5 | Where {$_ -Like "#[F]*"}
        $Fields = $FieldsString.substring(9).split(' ');
        $FieldsCount = $Fields.count - 1
    }
 PROCESS {
        for($i=0;$i -lt $FieldsCount;$i++) {
            $LogDataTable.Columns.Add($Fields[$i]) | Out-Null   
        }
        $Content = Get-Content -Path $LogFilePath | Where {$_ -notLike "#[D,S,V,F]*" } | ForEach-Object {
            $Row = $LogDataTable.NewRow()
            for($i=0;$i -lt $FieldsCount;$i++) {
                $Row[$i] = $_.Split(' ')[$i]
            }
            $LogDataTable.Rows.Add($row)
        }
    }
    END {
        $PSCmdlet.WriteObject($LogDataTable)
    }
}

#Function to search IIS Logs for a given URL in given web application
Function Search-IISLogs($WebAppURL, [String]$SearchURL)
{
    #Get IIS Log Folder
    $IISLogFolder = Get-IISLogFolder $WebAppURL

    #Get IIS Log files created in the past 30 days
    $IISLogFiles = Get-ChildItem -Path $IISLogFolder -Recurse | Where {$_.CreationTime  -Gt (Get-Date).AddDays(-30)}

    ForEach($LogFile in $IISLogFiles)
    {
        Write-host "Processing Log File:"$LogFile.FullName -f Yellow
        $IISLogData = Parse-IISLog $LogFile.FullName

        #Search Data
        $SearchResults = New-Object System.Data.DataView($IISLogData)
        $SearchResults.RowFilter = "[cs-uri-stem] like '%$SearchURL%'"

        #Result
        If ($SearchResults.Count -gt 0) 
        {
            Write-Host "`tFound Site Deletion!" -ForegroundColor Green
            $SearchResults | Select date, time, cs-uri-stem, cs-username, "cs(Referer)" | Format-Table
        } 
        Else 
        {
            Write-Host "`tNo Site Deletions Found!" -ForegroundColor DarkYellow
        }
    }
}

#Parameters
$WebAppURL="https://intranet.crescent.com"

#Call the function to search site deletions
Search-IISLogs $WebAppURL "/_layouts/15/webdeleted.aspx"

此脚本会为您提供已删除网站集的详细信息,例如删除者、日期、时间等。如果您有多个 Web 前端服务器,请确保在所有 Web 前端服务器上运行此脚本!

如果网站集从管理中心删除怎么办?

通过 SharePoint 管理中心网站删除网站集怎么样?那么,要搜索中央管理,请更改上述 PowerShell 脚本中的最后两行。


#Call the function to search deleted sites from Central Admin
$CentralAdminURL =  Get-SPWebApplication -IncludeCentralAdministration | Where {$_.IsAdministrationWebApplication} | Select -ExpandProperty URL
Search-IISLogs $CentralAdminURL "/_admin/delsite.aspx"

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯