查找上次访问的网站

Finding last accessed website

正在检查此逻辑是否有意义,或者我是否遗漏了什么。

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

您可以在命令行中通过 运行 '%windir%\system32\inetsrv\appcmd list site' 获取每个站点的站点 ID,它为您提供站点 "Site Name" (id:### #, 绑定, 状态)

通过将该数据提取到一个文件中,应该能够分离站点名称和 ID,然后为每个 IIS 日志文件夹创建一个变量。使用此信息,您可以从 IIS 日志文件夹中提取文件信息。通过查看每个文件夹中最后创建 and/or 修改日志文件的日期是 created/updated,这不应该告诉我们,上次访问该站点的日期吗?或者我错过了什么?

这是我想出的代码。这仅在您的网站名称也是该网站的 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
}

我注意到 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/ 获取最近的使用数据。