в надежде, что кто-нибудь сможет руководствоваться указанным ниже кодом:
*$CreatedDate = (Get-Date $CreatedDateTime)
$AddedDateTime = (Get-Date $CreatedDate.AddMinutes(190))
Write-Host "CD:" $CreatedDate
Write-Host "AD:" $AddedDateTime
$ItemsColl = $ReviewList.Items | where {($_['Created'] -ge $CreatedDate) -and ($_['Created'] -le $AddedDateTime)}*
предполагается, что все возвращается в пределах диапазона дат, я передаю созданную дату, добавляю 190 минут к этой дате, и возврат должен быть все из списка задач рабочего процесса, который был создан как задача.
это действительно приносит некоторые, но пропускает большинство пунктов в списке, я надеялся на мнение, чтобы увидеть, есть ли какие-либо очевидные ошибки или, возможно, новый способ сделать это.
Заранее спасибо
хорошо, так вот сценарий, когда кто-то отправляет документ на утверждение, это создает новую версию документа (время Великобритании), затем создается задача по системному счету (швейцарское время + 1 час из Великобритании). У меня есть функция, которая экспортирует все метаданные для каждой версии документа в формат CSV. где я изо всех сил фильтрует список рецензентов, где хранятся все задачи для каждого рецензента.
У меня есть две функции в моем скрипте GetMetadata и GetReviews.
Получить метаданные получает все метаданные для каждой версии документа, где состояние изменяется для просмотра в процессе выполнения, что говорит о том, что документ отправлен на рецензирование, поэтому мы должны просмотреть список рецензий, чтобы найти этот элемент и Посмотрите, кто был рецензированием и каков был результат, однако документ мог быть рецензирован несколько раз, и поэтому мне нужно передать имя документа и дату и время создания, чтобы отфильтровать список, но дата и время создания в рецензии - 1 час. так что впереди. Скрипт:
# ******* Variables Section ******************
#Define these variables
$WebURL="http://site"
$ModuleList = "Library With Versions"
$ReportFile = "D:\Migration\Test\CSV\ItemsForum.csv"
$ReviewList = "Review Tasks"
# *********************************************
#delete file if exists
If (Test-Path $ReportFile)
{
Remove-Item $ReportFile
}
#Get the Web and List
$Web = Get-SPWeb $WebURL
$ReviewList = $web.Lists.TryGetList($ReviewList)
#Get reviewers from review list
function GetReviews($DocumentName, $CreatedDateTime)
{
$CreatedDate = Get-Date $CreatedDateTime
#add 80 minutes, this would be plus one hr to swiss time plus account for time it takes to create item
$AddedCreatedList = Get-Date $CreatedDate.AddMinutes(80)
#filter and get items where document name matches workflow related item (this works but it's missing a lot of items as er image)
$ItemsColl = $ReviewList.Items | where {$_['WorkflowLink'] -match $DocumentName -and $_['Created'] -ge $CreatedDate -and $_['Created'] -le $AddedCreatedList}
#$ItemsColl = $ReviewList.Items
Write-Host "Item Count: " $ItemsColl.Count
$itemIds = ""
if($ItemsColl.Count -gt 0)
{
foreach ($item in $ItemsColl)
{
Write-Host $relatedItemUrl
#$relatedItem = $relatedItemUrl -split ','
#$rit = $relatedItem[1].Trim()
$itemIds += $item.id
$itemIds += ";"
}
Write-Host $itemIds
$itemIds = $itemIds.TrimEnd(";")
}
return $itemIds
}
function GetMetadata{
$List = $web.Lists.TryGetList($ModuleList)
#Check if list exists
if($List -ne $null)
{
#Get all list items
$ItemsColl = $List.Items | where {$_['Module'] -match $ModuleName}
#add headings
Add-Content -Path $ReportFile -Value "Item ID, Status, File Name + Version, Created, Review ID"
#Loop through each item
foreach ($item in $ItemsColl)
{
if ($item['Module'])
{
#Write-Host $item['Module']
ForEach($version in $item.Versions)
{
#Add version label to file in format: [Filename]_v[version#].[extension]
$filesplit = $version['Name'].split(".")
$fullname = $filesplit[0]
$fileext = $filesplit[1]
#$FullFileName = $fullname+"_v"+$version.VersionLabel+"."+$fileext
$FullFileName ="V_"+$version.VersionLabel+" " + $version['Name']
#Get Modified By
$user = $version["Editor"]
$userObj = New-Object Microsoft.SharePoint.SPFieldUserValue($web, $user)
$modifiedBy = $userObj.User.DisplayName
#get and format modified date
$ModifiedDate = ($version['Modified'] -as [datetime]).DateTime
$ModifiedDateF = Get-Date $ModifiedDate -format "yyyy-MM-ddTHH:mm:ss.fffZ"
#Write-Host $ModifiedDateF
#get and format created date
$CreatedDate = ($version.Created -as [datetime]).DateTime
$CreatedDateF = Get-Date $CreatedDate -format "yyyy-MM-ddTHH:mm:ss.fffZ"
$ReviwerID = ""
#get reviewers
#if status matches an item get review list id
if($version['WFStatus'] -eq 'Review in progress'){
#pass document name and created
$ReviwerID = GetReviews $version['Name'].TrimEnd('.docx') $version.Created
}
#add data
$VersionData = "$($item.id),$($version['WFStatus']),$($FullFileName),$($CreatedDateF),$($ReviwerID)"
#Write to report
Add-Content -Path $ReportFile -Value $VersionData
}
}
}
}
}
GetMetadata
Write-Host "Version history has been exported successfully!"
Вывод: Ouput