私はオンラインで見つかったスクリプトを変更して、SharePointライブラリをループし、ドキュメントをリストとして抽出しました。それはすべて正常に動作し、私はユーザーごとにきれいにソートされ、グループ化されたHTML出力ファイルを得て、それは私に電子メールで送られています。Powershellが特定のドキュメントを抽出するためにSharePointライブラリをループする
このスクリプトをさらに変更して、各ユーザーにユーザー文書だけで電子メールを送信できるようにする必要があります。 これまでのところ、ユーザーごとに別々のファイルを作成し、ユーザー文書のみでユーザーに電子メールを送信するようにしましたが、各ユーザーレポートには最初の文書が常にありません。つまり、ユーザーからのドキュメントが1つだけの場合、作成されたファイルにはコンテンツがありません。
はコードの下を参照してください:
foreach($list in $alllistcol){
if (($excludeLists -notcontains $list.Title) -and ($list.Basetype -eq "1"))
{
$files = GetListItems -site $site.Url -listname $list.Title
# Loop through each file in the document library and perform the following
#$files | Sort-Object -Property CreatedBy
$lastAuthor = $file.ows_Author
foreach($file in $files)
{
#Write-host "$($site.Title),$($list.Title),$($file.ows_LinkFileName)"
#Write-Host "$($file.ows_LinkFileName)"
# Use the following to add additional metadata columns
if($lastAuthor -ne $file.ows_Author)
{
$AuthorFile = FileOutput
SendEmail -outfile $AuthorFile -Author ($file.ows_Author -replace '[ ](?=[ ])|[^-_,A-Za-z ]+', '')
$output = @()
$lastAuthor = $file.ows_Author
}else{
$record = new-object System.Object
#$record | Add-Member -type NoteProperty -name Site -value $site.Title
#$record | Add-Member -type NoteProperty -name List -value $list.Title
#$record | Add-Member -type NoteProperty -name FileTitle -value $file.ows_Title
$record | Add-Member -type NoteProperty -name Filename -value $file.ows_LinkFileName
#$record | Add-Member -type NoteProperty -name Created -value $file.ows_Created
$record | Add-Member -type NoteProperty -name CreatedBy -value ($file.ows_Author -replace '[ ](?=[ ])|[^-_,A-Za-z ]+', '')
$record | Add-Member -type NoteProperty -name ExpiryDate -value $file.ows_Expiry_x0020_Date
#$record | Add-Member -type NoteProperty -name Modified -value $file.ows_Modified
#$record | Add-Member -type NoteProperty -name ModifiedBy -value $file.ows_Editor
#$record | Add-Member -type NoteProperty -name ContentType -value $file.ows_ContentType
#if ($file.ows_File_x0020_Size)
#{
# $record | Add-Member -type NoteProperty -name Filesize -value $file.ows_File_x0020_Size.split("([^#]+$)'")[-1]
#}
$output += $record
$countfiles++
#$output += "$($site.Title),$($list.Title),$($file.ows_Title),$($file.ows_LinkFileName),$($file.ows_Created)"
}
}
}
}
私は問題がラインであると思う:実際には$ファイルを宣言する前に$ lastAuthor = $ file.ows_Author。各著者の最初の文書をスキップせずに、新しいファイルを閉じて開くために、文書の著者を比較するにはどうすればよいですか?
---------------------------------------------- - - - - - - - - -更新 - - - - - - - - - - - - - - - - ----------------------------
私は、最初の文書が現在スキップされているという問題を修正しました。著者で私のクエリの種類を何とかそれが最後の著者をループしません:
if($lastAuthor -ne $file.ows_Author)
{
FileOutput
SendEmail -Author ($file.ows_Author -replace '[ ](?=[ ])|[^-_,A-Za-z ]+', '')
#$output = $null
$output = @()
#$lastAuthor = $null
$lastAuthor = $file.ows_Author
$record = new-object System.Object
$record | Add-Member -type NoteProperty -name Filename -value $file.ows_LinkFileName
$record | Add-Member -type NoteProperty -name CreatedBy -value ($file.ows_Author -replace '[ ](?=[ ])|[^-_,A-Za-z ]+', '')
$record | Add-Member -type NoteProperty -name ExpiryDate -value $file.ows_Expiry_x0020_Date
$output += $record
$countfiles++
}else{
$record = new-object System.Object
#$record | Add-Member -type NoteProperty -name Site -value $site.Title
#$record | Add-Member -type NoteProperty -name List -value $list.Title
#$record | Add-Member -type NoteProperty -name FileTitle -value $file.ows_Title
$record | Add-Member -type NoteProperty -name Filename -value $file.ows_LinkFileName
#$record | Add-Member -type NoteProperty -name Created -value $file.ows_Created
$record | Add-Member -type NoteProperty -name CreatedBy -value ($file.ows_Author -replace '[ ](?=[ ])|[^-_,A-Za-z ]+', '')
$record | Add-Member -type NoteProperty -name ExpiryDate -value $file.ows_Expiry_x0020_Date
#$record | Add-Member -type NoteProperty -name Modified -value $file.ows_Modified
#$record | Add-Member -type NoteProperty -name ModifiedBy -value $file.ows_Editor
#$record | Add-Member -type NoteProperty -name ContentType -value $file.ows_ContentType
#if ($file.ows_File_x0020_Size)
#{
# $record | Add-Member -type NoteProperty -name Filesize -value $file.ows_File_x0020_Size.split("([^#]+$)'")[-1]
#}
$output += $record
$countfiles++
#$output += "$($site.Title),$($list.Title),$($file.ows_Title),$($file.ows_LinkFileName),$($file.ows_Created)"
}
残念ながら、私は別の問題を発見しました。例:私はAmber、Mary、Sally、Wayneの4人の作家がいます。アンバー、メアリー、サリーのすべてが問題ありません。ファイルは正しく作成され、電子メールは正しく送信されます。今ウェインのファイルには内容がなく、原因の電子メールにも表示する文書はありません。何か案が?