<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Chad's SharePoint blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/chadray/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/chadray/feed.xml</link>
    <description>Just a little place for me to post nuggets of information.</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:19:07 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Script for Installing SharePoint 2013 Language Packs</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/script-for-installing-sharepoint-2013-language-packs</link>
      <pubDate>Tue, 15 Oct 2013 12:45:00 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2013/10/15/script-for-installing-sharepoint-2013-language-packs/</guid>
      <description><![CDATA[I was asked by a friend to see if I could help streamline the install process for language packs for...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: medium;">I was asked by a friend to see if I could help streamline the install process for language packs for SharePoint since you have to install each one manually, so I whipped up this little guy - hope it helps someone else. </span></p>
<p><span style="font-size: medium;">What this does is recurse through a directory structure looking for setup.exe files and then fires them off one at a time. You'll see that I also have an ArgumentList parameter I'm passing to Start-Process - this is the location for the config.xml for the silent install and suppresses the EULA so you should be able fire off the script and walk away.</span></p>
<p><span style="font-size: medium;">Here's what you want to do...</span></p>
<ul>
<li><span style="font-size: medium;">First, you want to make a directory structure somewhere on your machine like this:</span></li>
<ul>
<li><span style="font-size: medium;">d:\LanguagePacks</span></li>
<li><span style="font-size: medium;">d:\LanguagePacks\French</span></li>
<li><span style="font-size: medium;">d:\LanguagePacks\German</span></li>
<li><span style="font-size: medium;">d:\LanguagePakcs\Spanish</span></li>
<li><span style="font-size: medium;">etc...</span></li>
</ul>
<li><span style="font-size: medium;">Second, download each language pack to your SharePoint machine into the respective folder. </span></li>
<ul>
<li><span style="font-size: medium;">When I did this, they downloaded as a .IMG file, so I had to mount the IMG and pull the files out manually. I'm sure I could have scripted this part too, but I'm lazy and it's a one time deal for me.</span></li>
</ul>
<li><span style="font-size: medium;">Edit the script and point to the root folder that holds all the language folders, then you can run it.</span></li>
</ul>
<p><span style="font-size: medium;">Get-ChildItem -path "d:\LanguagePacks" -recurse | ?{$_.Name -eq "setup.exe"} |%{Write-Host "Installing at" $_.FullName; Start-Process -filepath $_.FullName -ArgumentList "/config .\files\setupsilent\config.xml" -wait}</span></p>
<p>&nbsp;</p>
<p><span style="font-size: medium;">Remember - you have to run PSConfig on all the machines you have the Language Packs installed, so be sure to run that after the powershell finishes:</span></p>
<p><span style="font-size: medium;"><strong>PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures</strong></span></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Installing SharePoint 2013 on Windows Server 2012 fails during prerequisite install phase.</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/installing-sharepoint-2013-on-windows-server-2012-fails-during-prerequisite-install-phase</link>
      <pubDate>Thu, 01 Nov 2012 12:13:18 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2012/11/01/installing-sharepoint-2013-on-windows-server-2012-fails-during-prerequisite-install-phase/</guid>
      <description><![CDATA[This is just a quick note to all those early adopters who want to be on the bleeding edge of our...]]></description>
      <content:encoded><![CDATA[<p>This is just a quick note to all those early adopters who want to be on the bleeding edge of our products. I was trying to build my lab out using the RTM bits of Windows 2012, SQL 2012 and SharePoint 2013 when I hit this stumbling block described here:</p>
<p><a href="http://support.microsoft.com/kb/2765260">http://support.microsoft.com/kb/2765260</a></p>
<p>&nbsp;</p>
<p>So why am I posting this? Well, the steps in the KB are correct but depending on your situation, you may need a bit more information still.</p>
<p>&nbsp;</p>
<p>When I ran the second powershell command to install all the features, it kept getting hung at 68% and the error was that it couldn't download the required files. I needed to specify a -source path to the command.</p>
<p>To my confusion, what path should I be telling it? I already had the DVD of Server 2012 in the drive...well, here's what I figured out.</p>
<p>&nbsp;</p>
<p>The source path needs to be to the .\source\sxs directory of the install media for the OS.</p>
<p>&nbsp;</p>
<p>Once I specified that location, install completed successfully for all the IIS components - so now I wait for the reboot and try the prerequisite installer once more.</p>
<p>&nbsp;</p>
<p>Happy SharePointing. :)</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>February 2012 CU is out for SharePoint 2010 and 2007</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/february-2012-cu-is-out-for-sharepoint-2010-and-2007</link>
      <pubDate>Wed, 29 Feb 2012 07:24:00 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2012/02/29/february-2012-cu-is-out-for-sharepoint-2010-and-2007/</guid>
      <description><![CDATA[Just a quick note that the Cumulative Updates are out now for February for the SharePoint...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: x-small;" size="2">Just a quick note that the Cumulative Updates are out now for February for the SharePoint products.</span></p>
<p><span style="font-size: x-small;" size="2">SP2010 Link:</span></p>
<p><a title="http://support.microsoft.com/kb/2658222" href="http://support.microsoft.com/kb/2658222"><span style="font-size: x-small;" size="2">http://support.microsoft.com/kb/2658222</span></a></p>
<p><span style="font-size: x-small;" size="2">SP2007 Link:</span></p>
<p><a title="http://support.microsoft.com/kb/2658224" href="http://support.microsoft.com/kb/2658224"><span style="font-size: x-small;" size="2">http://support.microsoft.com/kb/2658224</span></a></p>
<p></p>
<p><span style="font-size: x-small;" size="2">Happy patching!</span></p>
<p><span style="font-size: x-small;" size="2"></span>&nbsp;</p>
<p><span style="font-size: x-small;" size="2">Edit: Here are the roll up packages</span></p>
<p><span style="font-size: x-small;" size="2"></span></p>
<p><b>Description of the SharePoint Server 2010 cumulative<br />update package (SharePoint server-package): March 7, 2012</b></p>
<p><a href="http://support.microsoft.com/kb/2597150">http://support.microsoft.com/kb/2597150</a></p>
<p>&nbsp;</p>
<p><b>Description of the SharePoint Foundation 2010 cumulative<br />update package (SharePoint Foundation server-package): March 7, 2012</b></p>
<p><a href="http://support.microsoft.com/kb/2597132">http://support.microsoft.com/kb/2597132</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: x-small;" size="2"></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Chasing down slow page renders in SharePoint</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/chasing-down-slow-page-renders-in-sharepoint</link>
      <pubDate>Tue, 13 Dec 2011 07:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2011/12/13/chasing-down-slow-page-renders-in-sharepoint/</guid>
      <description><![CDATA[So we know there’s many ways to skin a cat by now (I hope)…and this is yet another way. I’m sure...]]></description>
      <content:encoded><![CDATA[<p>So we know there’s many ways to skin a cat by now (I hope)…and this is yet another way. I’m sure we’ve all stress tested our SharePoint environments and know where all the hardware and software bottlenecks are as well as what is to be expected. Well, what happens when that one user decides to go all ‘power user’ on you and create all kinds of neat and complex lists and filters. At first, you might think it’s cool and all, until they come to you and tell you that all of the sudden their home page to their site takes 30+ seconds to render on every page hit. </p>  <p>Some of you may look at Task Manager to see what’s going on at a high level. You notice there’s not much going on from the WFE’s memory and CPU utilization. Nothing looks abnormal. Next, you might hit the event logs to see if there’s any errors, and you’d come up empty. Now what? On to the diagnostic logs for SharePoint (ULS logs), but what might we look for? I’d always start my searches for “exception”, “fail”, “error” and in this case I’d come up empty (well, empty for chasing down this particular problem anyway). Hm, what’s next? Dumps maybe? Well, if you’re so inclined and know what you’re looking at, sure…go for it. What you’d likely find in this case is one thread per user request sitting and hanging out waiting for a response back from SQL. </p>  <p>Interestingly enough, SharePoint has a query timer built right in the product and it logs long running queries and the time taken right to the ULS logs, you just have to know what you’re looking for.</p>  <p>Enter the great 8sli. You might say you were just in the ULS logs and didn’t find anything. Well, that’s because you, like me at the time, probably didn’t know what it was you were looking for. Here’s an example of what this particular entry would look like:</p>  <p>09/06/2011 12:59:21.04 w3wp.exe (0x1B74) 0x23F4 Windows SharePoint Services Database <font style="background-color: #ffff00"><b>8sli</b> <strong>Monitorable</strong></font> List item query elapsed time: <font style="background-color: #ffff00"><b>35547</b> milliseconds</font>, Additional data (if available): Query HRESULT: 0 List internal name, flags, and URL: {44B9C682-4C16-4731-9861-7681793B4BEC}, flags=0x0000000004801008, URL=&quot;<a href="http://sprintcommunities.corp.sprint.com/sites/teamsite/techportal/Shared%20Documents/noting%20template%20document%20for%20Tech%20Portal.docx">REMOVED</a>&quot; Query XML: &quot;&lt;Query&gt;&lt;Where&gt;&lt;Eq&gt;&lt;FieldRef Name=&quot;ID&quot;/&gt;&lt;Value Type=&quot;Integer&quot;&gt;15&lt;/Value&gt;&lt;/Eq&gt;&lt;/Where&gt;&lt;/Query&gt;&quot; SQL Query: &quot; SELECT t2.[tp_Created] AS c3c8,t1.[Type] AS c0,t3.[tp_ID] AS c10c5,t1.[Id] AS c15,t4.[tp_Created] AS c17c8,UserData.[tp_ItemOrder],UserData.[tp_ModerationStatus],UserData.[nvarchar1],UserData.[nvarchar6],UserData.[tp_Created],t1.[CheckinComment] AS c23,UserData.[tp_WorkflowInstanceID],t2.[nvarchar4] AS c3c6,t3.[tp_Created] AS c10c8</p>  <p>As you can see from the above, the reason we didn’t find it in the first place when we were in the ULS logs was that we weren’t looking for “monitorable” because that would have yielded us far too many results to sift through. In this case, though, it would have been lucrative to do so given we were chasing a reason why a page might take so long to render. </p>  <p>This entry in and of itself does not provide us a smoking gun, but the URL (which I removed) would have contained a pointer to where the query originated which is a huge step in the right direction. Once you have the URL nailed, you can then fire up a SQL profiler trace when you hit that URL and you would find some parameter data that would help you figure out why the query was taking so long. You’d also have things like the ListID, SiteID and other valuable things to help you on your hunt. </p>  <p>Pro Tip #489: Use ULSViewer, it makes short work of filtering ULS logs by these tags. It can be downloaded here: <a href="http://archive.msdn.microsoft.com/ULSViewer" target="_blank">Ulsviewer</a></p>  <p>Thanks to my buddy Alonzo Milow for pointing this out to me. He’s a MS PFE on my team, but I don’t think he blogs yet. I’ll work on that.</p>  <p>Happy hunting the great 8sli.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to change user profile properties with PowerShell</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/how-to-change-user-profile-properties-with-powershell</link>
      <pubDate>Tue, 06 Dec 2011 13:17:33 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2011/12/06/how-to-change-user-profile-properties-with-powershell/</guid>
      <description><![CDATA[I had an interesting little challenge crop up the other day that required me to need to change a...]]></description>
      <content:encoded><![CDATA[<p><font size="3" face="Calibri"></font></p>  <p><font size="3" face="Calibri">I had an interesting little challenge crop up the other day that required me to need to change a custom user profile property inside of SharePoint’s 2010 User Profile Service Application. I have thousands of profiles and certainly didn’t want to get comfy with the mouse and keyboard all day, so I decided to whip up a little script to do the dirty work for me.&#160; Hopefully someone will find this useful as I couldn’t find it already put together.</font></p>  <pre class="csharpcode"><span class="rem">#Add-PSSnapin Microsoft.Sharepoint.Powershell</span>
[reflection.assembly]::LoadWithPartialName(<span class="str">&quot;Microsoft.SharePoint&quot;</span>) | out-null
[reflection.assembly]::LoadWithPartialName(<span class="str">&quot;Microsoft.Office.Server&quot;</span>) | out-null
[reflection.assembly]::LoadWithPartialName(<span class="str">&quot;Microsoft.Office.Server.UserProfiles&quot;</span>) | out-null

$site = <span class="str">&quot;http://sp2010dev&quot;</span>
$property = <span class="str">&quot;Title&quot;</span>
$value = <span class="str">&quot;TestValue123&quot;</span>

$spsite = Get-SPSite $site
$context = Get-SPServiceContext $site
$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
$enum = $upm.GetEnumerator()

<span class="kwrd">while</span> ($enum.MoveNext())
{
    [Microsoft.Office.Server.UserProfiles.UserProfile] $user = $enum.Current
    Write-Host <span class="str">&quot;Working on profile for: &quot;</span> $user.DisplayName
    Write-Host <span class="str">&quot;Old Value: &quot;</span> $($user[$property])
    $user[$property].value = $value
    $user.Commit()
    Write-Host <span class="str">&quot;New Value: &quot;</span> $($user[$property])
}</pre>


<p><font size="3" face="Calibri"></font></p>]]></content:encoded>
    </item>
    <item>
      <title>Sharepoint search, powershell and keywordquery</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/sharepoint-search-powershell-and-keywordquery</link>
      <pubDate>Mon, 18 Jul 2011 14:05:00 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2011/07/18/sharepoint-search-powershell-and-keywordquery/</guid>
      <description><![CDATA[Ever wanted to just query the search catalog for some text and get back your results without going...]]></description>
      <content:encoded><![CDATA[<p>Ever wanted to just query the search catalog for some text and get back your results without going into the browser?</p>
<p>Ever needed to use a sharepoint query to drive data through another script or other code?</p>
<p>Well, here's your answer. :)</p>
<p>I whipped this little widget up to use the KeywordQuery class to issue queries to a site and saves off the results as a CSV file.</p>
<p>Things to remember: Use the <a title="Microsoft.Office.Server.Search.Query.KeywordQuery" href="http://msdn.microsoft.com/en-us/library/ms497543.aspx" target="_blank">Microsoft.Office.Server.Search.Query.KeywordQuery</a> class to do your dirty work, not <a title="Microsoft.SharePoint.Search.Query.KeywordQuery" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.search.query.keywordquery.aspx" target="_blank">Microsoft.SharePoint.Search.Query.KeywordQuery</a>&nbsp;unless (I believe) you are using WSS 3.0 or SharePoint Foundation Server 2010 only.</p>
<p>And here you go - just save that off as .ps1 and run it from your SharePoint Management Console window</p>
<pre class="scroll"><code class="csharp">#input parameters <br />param($site, $queryText, $outputPath) <br /> <br /> <br /># new keywordquery object <br />$site = New-Object Microsoft.SharePoint.SPSite $site <br />$query = New-Object Microsoft.office.Server.Search.Query.KeywordQuery $site <br /> <br /># set ResultTypes <br />$query.ResultTypes = [Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults <br /> <br /># set number of items to return <br />$query.RowLimit = 10 <br /> <br /># actual string you are searching for <br />$query.QueryText = $queryText <br /> <br /># execute the query <br />$resultTableColl = $query.Execute() <br /> <br /># get the results back <br />$resultTable = $resultTableColl.Item([Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults) <br /> <br /># make a DataTable from the results <br />$resDataTable = $resultTable.Table <br /> <br /># output the results, select the properties you want back, export to CSV file <br />$resDataTable.Rows | Select-Object -Property Path,Title | Export-Csv -Path $outputPath <br /> <br /></code></pre>]]></content:encoded>
    </item>
    <item>
      <title>What SharePoint version am I running?</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/what-sharepoint-version-am-i-running</link>
      <pubDate>Wed, 11 May 2011 08:04:33 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2011/05/11/what-sharepoint-version-am-i-running/</guid>
      <description><![CDATA[With every SharePoint cumulative update, the build number changes. Sometimes it's difficult to...]]></description>
      <content:encoded><![CDATA[<p>With every SharePoint cumulative update, the build number changes. Sometimes it's difficult to remember which build is which CU and here on my team, we pass around this excel document that someone maintains as a cheat sheet.</p>
<p>Well, Todd Carter (from my team) has decided to keep this information in one spot and published the information here.</p>
<p>Hope it helps someone!</p>
<p><a href="http://www.todd-carter.com/page/SharePointVersions.aspx">http://www.todd-carter.com/page/SharePointVersions.aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>PssCor4 for WinDBG now available on the web.</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/psscor4-for-windbg-now-available-on-the-web</link>
      <pubDate>Tue, 10 May 2011 14:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2011/05/10/psscor4-for-windbg-now-available-on-the-web/</guid>
      <description><![CDATA[For all you folks needing to do some .Net 4 debugging in Windbg, here you...]]></description>
      <content:encoded><![CDATA[<p>For all you folks needing to do some .Net 4 debugging in Windbg, here you go:</p>
<p>&nbsp;<a target="_blank" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a06a0fea-a4d4-434e-a527-d6afa2e552dd">http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a06a0fea-a4d4-434e-a527-d6afa2e552dd</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Creating custom proxy groups and adding members in SharePoint 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/creating-custom-proxy-groups-and-adding-members-in-sharepoint-2010</link>
      <pubDate>Tue, 10 May 2011 10:37:00 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2011/05/10/creating-custom-proxy-groups-and-adding-members-in-sharepoint-2010/</guid>
      <description><![CDATA[One of the many changes that SharePoint 2010 brings us is the ability to get granular with what...]]></description>
      <content:encoded><![CDATA[<p>One of the many changes that SharePoint 2010 brings us is the ability to get granular with what service application assignments to various web applications with the use of proxy groups. Out of the box, you have two choices: Default and Custom. </p>
<p>Default is&nbsp;a grouping that you can control what's in it by going into Central Admin | Application Management | Configure Service Application Associations and clicking the default Application Proxy Group. This will bring a dialog that allows you to select from the provisioned service applications and make your default group. Custom is the other one you get out of the box. Custom, however, is just a one-off custom selection of the provisioned service applications. It's not like applying a pre determined group setting, it's an ad-hoc choice of the provisioned applications.</p>
<p>This is fine and all if you just want a one-off set of assignments. But what if you wanted to have a couple of pre-canned groupings to select from in a repeatable manner? Enter, powershell.</p>
<p>Using powershell, you can create a custom proxy group and assign service application proxies into the group to be available as a drop down selection on your web applications in Central Admin. Interestingly enough, once you assign one of your web applications to use your new custom proxy group, you now have a link in Central Admin that is directly to your proxy group that gives you a nice UI to pick and choose what is associated with your custom proxy group. So, creating the group and adding at least one group member is just a one time activity per group you create. Once it's created and associated with a web application, it's back to the UI for you...unless you just really like powershell.</p>
<p>Below is the required powershell to create a custom proxy group and add a service application proxy to that group.</p>
<pre class="scroll"><code class="csharp">#Create new proxy group
<br />$newProxyGroup = Add-SPServiceApplicationProxyGroup -name "My Custom Proxy Group"
<br />
<br />#Get reference to the proxy of the service application
<br />$metaDataProxy = Get-SPServiceApplicationProxy | Where{$_.DisplayName.StartsWith("MetaData")}
<br />
<br />#Add proxy member to new proxy group
<br />Add-SPServiceApplicationProxyMember -identity $newProxyGroup -member $metaDataProxy</code></pre>]]></content:encoded>
    </item>
    <item>
      <title>Obligatory first blog posting</title>
      <link>https://docs.microsoft.com/archive/blogs/chadray/obligatory-first-blog-posting</link>
      <pubDate>Tue, 10 May 2011 09:33:00 GMT</pubDate>
      <dc:creator><![CDATA[Chad Ray]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/chadray/2011/05/10/obligatory-first-blog-posting/</guid>
      <description><![CDATA[Here it is...my first post. Yay me! I hope to use this space to share tidbits of information that I...]]></description>
      <content:encoded><![CDATA[<p>Here it is...my first post. Yay me! I hope to use this space to share tidbits of information that I come across in my day to day dealings with SharePoint. I'm new to blogging as a whole, and I'm not much of a writer, so I guess I'll just stick to the facts. My posts should get a little better and more descript with experience and I hope to figure out how to post cool little screen shots like all the rest of the world has figured out how to do. :)</p>
<p>Anyway...that's it for now. I'm sure it won't be too long before the information starts to roll in.</p>
<p>Stay tuned...</p>]]></content:encoded>
    </item>
  </channel>
</rss>