查找上次访问的网站

时间:2017-08-08 16:48:04

标签: powershell iis sharepoint w3c logparser

检查这个逻辑是否有意义,或者我是否遗漏了某些东西。

每个IIS站点都有自己的站点ID。本网站拥有基于该站点ID的IIS日志文件夹。因此,如果您的站点ID是2385,那么您的Log文件夹是W3SVC2385。

您可以通过运行'%windir%\ system32 \ inetsrv \ appcmd list site'来获取命令行中每个站点的站点ID。它为您提供站点"站点名称" (id:####,bindings,State)

通过将该数据拖入文件,应该能够隔离站点名称和ID,然后为每个IIS日志文件夹创建一个变量。使用此信息,您可以从IIS日志文件夹中提取文件信息。通过查看在每个文件夹中创建/更新最后创建/更新的日志文件的日期,不应该告诉我们,该网站上次访问的日期是什么时候?或者我错过了什么?

2 个答案:

答案 0 :(得分:0)

所以这是我提出的代码。这仅适用于您的站点名称也是站点的URL(这是我们的情况)。它将网站名称插入到URL主干的第一部分。

因为这是针对我们的SharePoint场,我还在LogParser命令中过滤了default.aspx和home.aspx。

使用Get-Website,我得到了网站名称& ID。我将名称添加到url词干并使用id进入相应的日志文件夹,然后根据站点名称创建一个csv文件。

希望这对其他人有帮助!

$Sites = Get-WebSite

foreach ($site in $sites)
{
    $id = $SITE.id
    $name = $site.name
    $name = $name -replace '\s',''
    $filename = $name + '.csv'
    $logfolder = 'D:\LOGS\IISLOGS\W3SVC' + $id
    $logpath = $logfolder + "\*.*"

    & "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" -i:iisw3c "SELECT DISTINCT TO_LOWERCASE(cs-uri-stem),max(date) into "$filename" from $logpath WHERE cs-uri-stem LIKE '%Default.asp%' OR cs-uri-stem LIKE '%home.asp%' group by cs-uri-stem" -o:CSV

    $Content = @()
    $NewContent = @()
    $Content = Get-Content $filename 
    foreach ($line in $Content)
    {
        $NewContent += $name + $line
        }
    $NewContent[0] = "Site URL,DateLastAccessed"
    $NewContent | Set-Content $filename
}

答案 1 :(得分:0)

我注意到SharePoint标签就是这个问题。由于这是在SharePoint的上下文中,您应该记住SharePoint Analytics: https://technet.microsoft.com/en-us/library/jj219554.aspx 跟踪每个SharePoint Web应用程序的使用情况。考虑到这一点,您可以通过编程方式访问Analytics: https://radutut.wordpress.com/2013/01/27/how-to-get-search-analytics-reports-programmatically-in-sharepoint-2013/ 获取最近的使用数据。