{"id":995,"date":"2012-12-19T06:56:01","date_gmt":"2012-12-19T06:56:01","guid":{"rendered":"https:\/\/poiseddevelopers.com\/reality-tech\/?p=995"},"modified":"2024-04-26T12:46:52","modified_gmt":"2024-04-26T12:46:52","slug":"creating-a-view-in-each-document-library-in-a-web-application","status":"publish","type":"post","link":"https:\/\/poiseddevelopers.com\/reality-tech\/creating-a-view-in-each-document-library-in-a-web-application\/","title":{"rendered":"Creating a View in each Document Library in a Web Application"},"content":{"rendered":"<h4>Crate a View in each Library in a Web App<\/h4>\n<p>My friend Rob Holmes raised an interesting challenge; deploying a new view to all libraries. Here\u2019s the script to apply it to all libraries with Content Types enabled that are Document Libraries, across all libraries in all webs in all site collections of a web application.<\/p>\n<p data-uw-rm-sr=\"\">Sorting\/filtering entries in a view requires the use of CAML, for which I provide a few examples commented in the script. To write CAML, one needs to know the available fields. If you have a $Lib, you can dump the static or internal names for every field in the library with this command:<\/p>\n<div>\n<div id=\"highlighter_408916\" class=\"syntaxhighlighter powershell\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"powershell variable\">$Lib<\/code><code class=\"powershell plain\">.Fields | select internalname<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Here\u2019s some CAML examples.<\/p>\n<div class=\"line number1 index0 alt2\"><code class=\"xml plain\">'&lt;<\/code><code class=\"xml keyword\">OrderBy<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">FieldRef<\/code> <code class=\"xml color1\">Name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"mvReceived_x0020_Time\"<\/code> <code class=\"xml color1\">Ascending<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"FALSE\"<\/code> <code class=\"xml plain\">\/&gt;&lt;\/<\/code><code class=\"xml keyword\">OrderBy<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">Where<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">IsNotNull<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">FieldRef<\/code> <code class=\"xml color1\">Name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"mvReceived_x0020_Time\"<\/code> <code class=\"xml plain\">\/&gt;&lt;\/<\/code><code class=\"xml keyword\">IsNotNull<\/code><code class=\"xml plain\">&gt;&lt;\/<\/code><code class=\"xml keyword\">Where<\/code><code class=\"xml plain\">&gt;'<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"xml plain\">'&lt;<\/code><code class=\"xml keyword\">OrderBy<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">FieldRef<\/code> <code class=\"xml color1\">Name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"mvSentOn\"<\/code> <code class=\"xml color1\">Ascending<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"FALSE\"<\/code> <code class=\"xml plain\">\/&gt;&lt;\/<\/code><code class=\"xml keyword\">OrderBy<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">Where<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">IsNotNull<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">FieldRef<\/code> <code class=\"xml color1\">Name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"mvReceived_x0020_Time\"<\/code> <code class=\"xml plain\">\/&gt;&lt;\/<\/code><code class=\"xml keyword\">IsNotNull<\/code><code class=\"xml plain\">&gt;&lt;\/<\/code><code class=\"xml keyword\">Where<\/code><code class=\"xml plain\">&gt;'<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"xml plain\">'&lt;<\/code><code class=\"xml keyword\">OrderBy<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">FieldRef<\/code> <code class=\"xml color1\">Name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"mvSentOn\"<\/code> <code class=\"xml color1\">Ascending<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"FALSE\"<\/code> <code class=\"xml plain\">\/&gt;&lt;\/<\/code><code class=\"xml keyword\">OrderBy<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">Where<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">IsNotNull<\/code><code class=\"xml plain\">&gt;&lt;<\/code><code class=\"xml keyword\">FieldRef<\/code> <code class=\"xml color1\">Name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"mvSentOn\"<\/code> <code class=\"xml plain\">\/&gt;&lt;\/<\/code><code class=\"xml keyword\">IsNotNull<\/code><code class=\"xml plain\">&gt;&lt;\/<\/code><code class=\"xml keyword\">Where<\/code><code class=\"xml plain\">&gt;'<\/code><\/div>\n<p>There\u2019s a few good CAML builder tools. You can also just navigate an existing View and grab the XML from the View in SharePoint.<\/p>\n<p>Here\u2019s the script:<\/p>\n<\/div>\n<\/div>\n<pre lang=\"php\">  Add-PSSnapin \"Microsoft.SharePoint.PowerShell\" -ErrorAction SilentlyContinue\r\n$wa=get-spwebapplication http :\/\/SharePoint\r\n \r\nWrite-Host \"script starting $(get-date)\"\r\n \r\n$wa=get-spwebapplication http :\/\/SharePoint\r\n \r\nforeach ($Site in $wa.sites)\r\n{\r\n    if ($site.url -like $MatchStr)\r\n    {\r\n        $webs=$Site.AllWebs\r\n        $webcount = $Site.AllWebs.Count\r\n \r\n        for ($i=0; $i -lt $webcount; $i++)\r\n        {\r\n            $web=$webs[$i]\r\n \r\n            Write-Host \"working in $($web.url)\"\r\n \r\n            $lists=$web.lists;\r\n \r\n              for ($k=0; $k -lt $lists.count; $k++)\r\n              {\r\n                    $JPLib = $lists[$k];\r\n                         #don't bother adding a view to a hidden library\r\n                    if ($JPLib.Hidden)\r\n                    {\r\n                        continue;\r\n                    }\r\n                         #only for libraries, not for GenericList and other types\r\n                    if ($JPLib.BaseType -ne \"DocumentLibrary\")\r\n                    {\r\n                        continue;\r\n                    }\r\n                         #choose your own lib filter; this acts on every content type enabled library\r\n                    if ($JPLib.ContentTypesEnabled)\r\n                    {\r\n                    write-host -f green \"The Library $($JPLib.title) exists in the site $($web.url), about to tune the view\"\r\n                    try\r\n                    {\r\n                    $x=$JPLib.Views.get_Item(\"Email\")\r\n                    if ($x.id -ne $null) #prevents duplicate entries\r\n                    {\r\n                        $JPLib.Views.Delete($x.ID.ToString())\r\n                    }\r\n                    }\r\n                    catch\r\n                    {}\r\n                    if ($JPLib.Views[\"Email\"] -eq $null) #prevents duplicate entries\r\n                       {\r\n #$viewQuery = ''\r\n                     #$viewQuery = ''\r\n                     $viewQuery = ''\r\n \r\n                     $viewFields = New-Object System.Collections.Specialized.StringCollection\r\n                     $viewFields.Add(\"DocIcon\") &gt; $null\r\n                     $viewFields.Add(\"LinkFilename\") &gt;  $null\r\n                     $viewFields.Add(\"Title\") &gt;  $null\r\n                     $viewFields.Add(\"mvTo\") &gt;  $null\r\n                     $viewFields.Add(\"mvFrom\") &gt;  $null\r\n                     $viewFields.Add(\"mvSubject\") &gt;  $null\r\n                     $viewFields.Add(\"mvSentOn\") &gt;  $null\r\n                     $viewFields.Add(\"mvAttach_x0020_Count\") &gt;  $null\r\n                #    $viewFields.Add(\"DocType\") &gt;  $null # this is accounting specific\r\n \r\n                     #RowLimit property\r\n                     $viewRowLimit = 50\r\n                     #Paged property\r\n                     $viewPaged = $true\r\n                     #DefaultView property\r\n                     $viewDefaultView = $false\r\n                     #$ViewQuery=$null;\r\n                     $viewTitle=\"Email\"\r\n                     $newview = $JPLib.Views.Add($viewTitle, $viewFields, $viewQuery, $viewRowLimit, $viewPaged, $viewDefaultView)\r\n                       }\r\n    }\r\n    }\r\n   }\r\n#} #foreach site\r\n} #if $true\/Siteurl is not null, if environment setup is valid\r\n}<del datetime=\"2024-03-06T19:12:48+00:00\">  <\/del><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Crate a View in each Library in a Web App My friend Rob Holmes raised an interesting challenge; deploying a new view to all libraries. Here\u2019s the script to apply it to all libraries with Content Types enabled that are Document Libraries, across all libraries in all webs in all site collections of a web [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":996,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[26],"tags":[],"class_list":["post-995","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell"],"acf":[],"_links":{"self":[{"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/posts\/995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/comments?post=995"}],"version-history":[{"count":4,"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/posts\/995\/revisions"}],"predecessor-version":[{"id":1026,"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/posts\/995\/revisions\/1026"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/media\/996"}],"wp:attachment":[{"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/media?parent=995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/categories?post=995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/poiseddevelopers.com\/reality-tech\/wp-json\/wp\/v2\/tags?post=995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}