检查这个逻辑是否有意义,或者我是否遗漏了某些东西。
每个IIS站点都有自己的站点ID。本网站拥有基于该站点ID的IIS日志文件夹。因此,如果您的站点ID是2385,那么您的Log文件夹是W3SVC2385。
您可以通过运行'%windir%\ system32 \ inetsrv \ appcmd list site'来获取命令行中每个站点的站点ID。它为您提供站点"站点名称" (id:####,bindings,State)
通过将该数据拖入文件,应该能够隔离站点名称和ID,然后为每个IIS日志文件夹创建一个变量。使用此信息,您可以从IIS日志文件夹中提取文件信息。通过查看在每个文件夹中创建/更新最后创建/更新的日志文件的日期,不应该告诉我们,该网站上次访问的日期是什么时候?或者我错过了什么?
答案 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/ 获取最近的使用数据。