<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>bits and bytes</title>
	<atom:link href="https://nibuthomas.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://nibuthomas.wordpress.com</link>
	<description>nibu&#039;s brain dump</description>
	<lastBuildDate>Wed, 11 Nov 2020 19:32:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<site xmlns="com-wordpress:feed-additions:1">1142778</site><cloud domain='nibuthomas.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://secure.gravatar.com/blavatar/367f73759880712ad1c48ab505a235133188f9ff81538b9653e5255de84a27ce?s=96&#038;d=https%3A%2F%2Fs2.wp.com%2Fi%2Fwebclip.png</url>
		<title>bits and bytes</title>
		<link>https://nibuthomas.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://nibuthomas.wordpress.com/osd.xml" title="bits and bytes" />
	<atom:link rel='hub' href='https://nibuthomas.wordpress.com/?pushpress=hub'/>
	<item>
		<title>SQL: Column metadata query</title>
		<link>https://nibuthomas.wordpress.com/2020/11/11/sql-column-metadata-query/</link>
					<comments>https://nibuthomas.wordpress.com/2020/11/11/sql-column-metadata-query/#respond</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Wed, 11 Nov 2020 19:32:47 +0000</pubDate>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[column metadata]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[Nested query]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3749</guid>

					<description><![CDATA[How to retrieve column metadata...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">A friend of mine asked a question on how to retrieve SQL column metadata, hence wrote this query with help from stack overflow. <br /><br />I had to make some adaptations; basically used a nested query to create temporary result set in order to apply a filter on a column alias.<br /><br />In order to use this query please remember to change value for the Where clause on column alias <strong>TableName</strong>. For e.g. &#8216;%MyTableName%&#8217; to filter any TableName containing string &#8216;MyTableName&#8217;. For exact results please remove %% from the where clause. For e.g. &#8216;MyTableName&#8217;.<br /><br />You can add more columns to this output by choosing columns from output of following query: <em>select * from sys.columns</em>. Then add the column to the nested query along with an appropriate column alias.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; highlight: [9]; title: ; notranslate">
Select * from 
(Select 
object_NAME(Columns.object_id) As TableName, 
Columns.name As 'ColumnName', 
Types.name As 'Type', 
Columns.max_length As 'Length/Size'
from sys.columns Columns INNER JOIN sys.types Types  ON Types.system_type_id = Columns.system_type_id) 
AllColumnMetaData
Where TableName like '%sysrscols%'
</pre></div>


<div class="wp-block-image is-style-default"><figure class="aligncenter size-large is-resized"><img data-attachment-id="3755" data-permalink="https://nibuthomas.wordpress.com/2020/11/11/sql-column-metadata-query/image/" data-orig-file="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/e4688-image.png" data-orig-size="392,413" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/e4688-image.png?w=392" src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/e4688-image.png" alt="Output Screenshot" class="wp-image-3755" width="378" height="398" srcset="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/e4688-image.png?w=378&amp;h=398 378w, https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/e4688-image.png?w=142&amp;h=150 142w, https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/e4688-image.png?w=285&amp;h=300 285w, https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/e4688-image.png 392w" sizes="(max-width: 378px) 100vw, 378px" /><figcaption>Column metadata query output screenshot.</figcaption></figure></div>



<p class="wp-block-paragraph">Hope this helps. Good day!</p>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container"></div></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2020/11/11/sql-column-metadata-query/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3749</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/e4688-image.png" medium="image">
			<media:title type="html">Output Screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShell: Working with System.Security.Claims.ClaimsIdentity to manage user identity</title>
		<link>https://nibuthomas.wordpress.com/2019/04/12/powershell-working-with-system-security-claims-claimsidentity-to-manage-user-identity/</link>
					<comments>https://nibuthomas.wordpress.com/2019/04/12/powershell-working-with-system-security-claims-claimsidentity-to-manage-user-identity/#respond</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Fri, 12 Apr 2019 13:41:09 +0000</pubDate>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[WindowsIdentity]]></category>
		<category><![CDATA[Claims]]></category>
		<category><![CDATA[ClaimsIdentity]]></category>
		<category><![CDATA[WIF]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3641</guid>

					<description><![CDATA[System.Security.Claims.ClaimsIdentity is the .Net class that helps management of a claims based user identity using which you can add claims to a .Net application for more granular user control based on the user claims provided by the issuer in your application. MSDN Link to class documentation: https://docs.microsoft.com/en-us/dotnet/api/system.security.claims.claimsidentity?view=netframework-4.7.2 For example&#8230;1. switch the UI to a different [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>System.Security.Claims.ClaimsIdentity</em> is the .Net class that helps management of a claims based user identity using which you can add claims to a .Net application for more granular user control based on the user claims provided by the issuer in your application.<br /><br />MSDN Link to class documentation:  <br /><a href="https://docs.microsoft.com/en-us/dotnet/api/system.security.claims.claimsidentity?view=netframework-4.7.2">https://docs.microsoft.com/en-us/dotnet/api/system.security.claims.claimsidentity?view=netframework-4.7.2</a> </p>



<p class="wp-block-paragraph">For example&#8230;<br />1. switch the UI to a different view if role of user logged in is the company CEO.<br />2. switch site theme based on users favorite color.<br />3. switch site locale based on user country or show a customized greeting.<br />4. restrict access to site based on user age.<br />5. etc&#8230;</p>



<p class="wp-block-paragraph">Here is a short script to assign claims to the current thread principal and verify user claims using PowerShell.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
# Add assembly for displaying message box
Add-Type –AssemblyName System.Windows.Forms

# Claims
$claims = New-Object System.Collections.Generic.List&#91;System.Security.Claims.Claim]

# Add claims to claims list
$claims.Add(((New-Object System.Security.Claims.Claim(&#91;System.Security.Claims.ClaimTypes]::Email, "nibu.bt@gmail.com"))))
$claims.Add(((New-Object System.Security.Claims.Claim("WebSite", "http://ntcoder.com"))))
$claims.Add(((New-Object System.Security.Claims.Claim("Primary Skill", "C++"))))
$claims.Add(((New-Object System.Security.Claims.Claim(&#91;System.Security.Claims.ClaimTypes]::Country, "India"))))
$claims.Add(((New-Object System.Security.Claims.Claim(&#91;System.Security.Claims.ClaimTypes]::Role, "CEO"))))


# Instantiate claims identity object
$cid = New-Object System.Security.Claims.ClaimsIdentity($claims, &#91;System.Security.Claims.AuthenticationTypes]::Password)

# Assign principal
&#91;System.Threading.Thread]::CurrentPrincipal =  New-Object System.Security.Claims.ClaimsPrincipal($cid)

Write-Host "Current Thread Principal: " -NoNewline
&#91;System.Threading.Thread]::CurrentPrincipal | Select-Object -ExpandProperty Claims | Select-Object Issuer, Type, value | Format-Table -AutoSize

# Write authentication status
Write-Host "Authenticated: $($cid.IsAuthenticated)"

$tp = &#91;System.Threading.Thread]::CurrentPrincipal

# Check if user is CEO, if yes then display a messagebox, check above role that we added 
if($tp.IsInRole("CEO"))
{
    $null = &#91;System.Windows.Forms.MessageBox]::Show("Welcome CEO, opening CEO view...", "User", &#91;System.Windows.Forms.MessageBoxButtons]::OK,&#91;System.Windows.Forms.MessageBoxIcon]::Information)
}

# Check country of user, if India then display an Indian greeting message.
if($tp.HasClaim(&#91;System.Security.Claims.ClaimTypes]::Country, "India"))
{
    $null = &#91;System.Windows.Forms.MessageBox]::Show("Namaskar!", "Greetings!", &#91;System.Windows.Forms.MessageBoxButtons]::OK,&#91;System.Windows.Forms.MessageBoxIcon]::Information)
}
</pre></div>


<p class="wp-block-paragraph"></p>



<pre class="wp-block-preformatted">Script output follows...<br /><br />PS C:\&gt; c:\NibuRoot\Powershell\powershellsnips\Claims.ps1<br /> Current Thread Principal:<br /> Issuer          Type                                                               Value<br /> ------          ----                                                               -----<br /> LOCAL AUTHORITY http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress email@gmail.com<br /> LOCAL AUTHORITY WebSite                                                            http://ntcoder.com<br /> LOCAL AUTHORITY Primary Skill                                                      C++<br /> LOCAL AUTHORITY http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country      India<br /> LOCAL AUTHORITY http://schemas.microsoft.com/ws/2008/06/identity/claims/role       CEO<br /><br /> Authenticated: True<br /></pre>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2019/04/12/powershell-working-with-system-security-claims-claimsidentity-to-manage-user-identity/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3641</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>
	</item>
		<item>
		<title>ActiveDirectory: PowerShell script to translate a Windows SecurityIdentifier (SIDs) to UserNames using System.Security.Principal.SecurityIdentifier.Translate</title>
		<link>https://nibuthomas.wordpress.com/2019/04/08/3615/</link>
					<comments>https://nibuthomas.wordpress.com/2019/04/08/3615/#respond</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Mon, 08 Apr 2019 17:34:41 +0000</pubDate>
				<category><![CDATA[ActiveDirectory]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[SID Translate]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3615</guid>

					<description><![CDATA[I was on a customer case where SharePoint requests were taking significant time to complete. The issue eventually turned out to be because of a low value for MaxConcurrentAPI which in turn caused incoming SID resolution calls to pile up at the DC. This post is not about MaxConcurrentAPI, if you want to know more [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I was on a customer case where SharePoint requests were taking significant time to complete. The issue eventually turned out to be because of a low value for MaxConcurrentAPI which in turn caused incoming SID resolution calls to pile up at the DC. This post is not about MaxConcurrentAPI, if you want to know more about MaxConcurrentAPI please read following article:  <br /><a href="https://blogs.msdn.microsoft.com/spatdsg/2006/01/05/maxconcurrentapi-or-how-fast-can-you-authenticate-users/">https://blogs.msdn.microsoft.com/spatdsg/2006/01/05/maxconcurrentapi-or-how-fast-can-you-authenticate-users/.</a></p>



<p class="wp-block-paragraph">But the reason I&#8217;m writing this post is because of a script that I wrote to reproduce the SID resolution issue with a DC. At the heart of this script is the following script block&#8230;.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; first-line: 1; title: ; notranslate">
#Script block which will be used by Powershell Jobs
$ADSidResolve = {
    param($sid)
    Write-Host "SID: $sid"
    $objSID = New-Object System.Security.Principal.SecurityIdentifier($sid)
    $objUser = $objSID.Translate( &#91;System.Security.Principal.NTAccount])
    $objUser.Value
}
</pre></div>


<p class="wp-block-paragraph">I&#8217;m using the System.Security.Principal.SecurityIdentifier.Translate API to translate a SID to username. To translate a username to its SID, use System.Security.Principal.NTAccount.Translate API instead. Here&#8217;s a sample script which accomplishes that&#8230;</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
#Script to translate currentuser's username to SID
$currentUser = &#91;System.Security.Principal.WindowsIdentity]::GetCurrent()
$currentUserName = $currentUser.User.Translate(&#91;System.Security.Principal.NTAccount])
$objSID = New-Object System.Security.Principal.NTAccount($currentUserName)
$objUser = $objSID.Translate( &#91;System.Security.Principal.SecurityIdentifier])

Write-Host "Current user: $currentUserName, SID: $($objUser.Value)"
</pre></div>


<p class="wp-block-paragraph">Here&#8217;s the full script to translate a file full of SIDs to username, I used this script to stress test DC. Note that this script executes SID resolution in parallel using PowerShell jobs so this script is a good tutorial for using PowerShell jobs as well.</p>



<p class="wp-block-paragraph">When running this script please make sure you&#8217;ve got C:\Sids.txt created with all the SIDs in it. Also note that there is a better way (using System.Security.Principal.IdentityReferenceCollection.Translate) for translating these SIDs but since I am simulating a customer scenario so I had to follow this route.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
#follow this script on github: https://github.com/nibubt/powershellsnips/blob/master/ADSIDResolve.ps1

$filePath = "C:\sids.txt" #make sure this file contains SIDs that needs to be resolved.

# Verify file status #
if((Test-Path $filePath) -eq $false)
{
    Write-Error -Message "File $filePath does not exist. Please correct file path before using this script. Exiting!"
    return
}

#Read in UserName and Password securely
$username = Read-Host -Prompt "Please enter username: "
$pwd = Read-Host -Prompt "Please enter your password: " -AsSecureString
$cred = New-Object System.Management.Automation.PSCredential($username,$pwdz
if($null -eq $cred)
{
    Write-Error -Message "Invalid credentials! Exiting!"
    return;
}

# Count of lines to show progress
$sidlines = Get-Content -Path $filePath | ForEach-Object{$_.Trim()}
$totalLines = ( $sidlines | Measure-Object -Line).Lines

if(0 -ge $totalLines)
{
    Write-Error -Message "File $filePath empty?! This file must contain the SIDs you're intending to resolve! Exiting!"
    return    
}


#Script block which will be used by Powershell Jobs
$ADSidResolve = {
    param($sid)
    Write-Host "SID: $sid"
    $objSID = New-Object System.Security.Principal.SecurityIdentifier($sid)
    $objUser = $objSID.Translate( &#91;System.Security.Principal.NTAccount])
    $objUser.Value
}

$alljobs = @()
$curLine = 0
foreach($line in $sidlines)
{
    ++$curLine;
    $JobName = "PSJOB-SIDResolve-$line"    
    $alljobs += Start-Job -ScriptBlock $ADSIDResolve -Name $JobName -Credential $cred -ArgumentList $line
  
    $PercentComplete = &#91;math]::round((($curLine/$totalLines)*100),0)
    Write-Progress -Activity "Progress resolving SID... (Current line: $curLine of $totalLines)" -Status "$PercentComplete% Complete:" -PercentComplete $PercentComplete
}

#Wait for jobs to finish, in the end print the output
Write-Host "Waiting on jobs to finish..."
Get-Job | Wait-Job | Receive-Job

Remove-Variable alljobs,sidlines
</pre></div>


<p class="wp-block-paragraph">Since output of this script is confidential, I&#8217;m skipping output but note that this does work :-). </p>



<p class="wp-block-paragraph">Also note that there is a SysInternals tool that does a similar job. Its called PsGetSid: <a href="https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid">https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid</a> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2019/04/08/3615/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3615</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>
	</item>
		<item>
		<title>SharePoint: Find an SPFeature by DisplayName</title>
		<link>https://nibuthomas.wordpress.com/2019/02/21/sharepoint-find-an-spfeature-by-displayname/</link>
					<comments>https://nibuthomas.wordpress.com/2019/02/21/sharepoint-find-an-spfeature-by-displayname/#respond</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Thu, 21 Feb 2019 14:45:26 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Find SPFeature]]></category>
		<category><![CDATA[Get-SPFeature]]></category>
		<category><![CDATA[PowerShell formatting]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3572</guid>

					<description><![CDATA[Here's a short PowerShell Script to find an installed feature across a SharePoint farm.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I needed to find a particular SPFeature across a SharePoint farm so wrote up this PowerShell script. Sharing with you all this PowerShell script, also this script has some neat formatting code which you could find useful.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; highlight: [16]; title: ; notranslate">
#Follow this script on GitHub: https://github.com/nibubt/powershellsnips/blob/master/FindFeature.ps1

Add-PSSnapin *SharePoint*

function WriteFeature($features, $tabs)
{
    if($features -ne $null)
    {
        ForEach($feature in $Features)
        {
            Write-Host $(&quot;`t&quot; * $tabs)&quot;-&gt; Found Feature: Title: $($feature.GetTitle(1033)), DisplayName: $($feature.DisplayName)&quot; -ForegroundColor Cyan
        }
    }
}

$FeatureDisplayName = &quot;SiteLevelPolicy&quot;

Write-Host -ForegroundColor Green &quot;Script output in DisplayName and Title format...&quot;
Write-Host &quot;Looking for feature: $FeatureDisplayName&quot; -ForegroundColor Yellow

$tab = 0
Write-Host $(&quot;`t&quot; * $tab)&quot;-&gt; Farm&quot;
$feature = Get-SPFeature -Farm -ErrorAction SilentlyContinue | Where-Object{$_.DisplayName -imatch $FeatureDisplayName}
WriteFeature $feature ($tab + 1)

ForEach($WebApp in Get-SPWebApplication)
{
    $tab = 1
    Write-Host $(&quot;`t&quot; * $tab)&quot;-&gt; WebApp: $($WebApp.Url)&quot;
    $feature = Get-SPFeature -WebApplication $WebApp.Url -ErrorAction SilentlyContinue | Where-Object{$_.DisplayName -imatch $FeatureDisplayName}
    WriteFeature $feature ($tab + 1)

    ForEach($Site in $WebApp.Sites)
    {
        $tab = 2
        Write-Host $(&quot;`t&quot; * $tab)&quot;-&gt; Site: $($Site.Url)&quot;
        $feature = Get-SPFeature -Site $Site.Url -ErrorAction SilentlyContinue | Where-Object{$_.DisplayName -imatch $FeatureDisplayName}
        WriteFeature $feature ($tab + 1)

        ForEach($Web in $Site.AllWebs)
        {
            $tab = 3
            Write-Host $(&quot;`t&quot; * $tab)&quot;-&gt; Web: $($Web.Url)&quot;
            $feature = Get-SPFeature -Web $Web.Url -ErrorAction SilentlyContinue | Where-Object{$_.DisplayName -imatch $FeatureDisplayName}
            WriteFeature $feature ($tab + 1)
        }#End ForEach
    }#End ForEach
}#End ForEach
</pre></div>


<figure class="wp-block-image"><img data-attachment-id="3576" data-permalink="https://nibuthomas.wordpress.com/2019/02/21/sharepoint-find-an-spfeature-by-displayname/outputfromfindfeaturescript/" data-orig-file="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/c4c96-outputfromfindfeaturescript.png" data-orig-size="850,208" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="OutputFromFindFeatureScript" data-image-description="" data-image-caption="" data-large-file="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/c4c96-outputfromfindfeaturescript.png?w=595" src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/c4c96-outputfromfindfeaturescript.png" alt="" class="wp-image-3576" /><figcaption>Script output from my local farm</figcaption></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2019/02/21/sharepoint-find-an-spfeature-by-displayname/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3572</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/c4c96-outputfromfindfeaturescript.png" medium="image" />
	</item>
		<item>
		<title>PowerShell TidBits: Creating Excel Workbook and filling out data into WorkSheets</title>
		<link>https://nibuthomas.wordpress.com/2018/01/18/powershell-tidbits-creating-excel-workbook-and-filling-out-data-into-worksheets/</link>
					<comments>https://nibuthomas.wordpress.com/2018/01/18/powershell-tidbits-creating-excel-workbook-and-filling-out-data-into-worksheets/#comments</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Fri, 19 Jan 2018 01:01:33 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Excel]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3431</guid>

					<description><![CDATA[PowerShell provides multiple ways to access Excel. My favorite so far is via COMObject Excel.Application. This object provides direct access to Excel workbooks, worksheets. In this short article we&#8217;ll see how to accomplish this using PowerShell and Excel&#8217;s COMObject. Instantiating Excel COM Object using New-Object PowerShell CmdLet Using following line of code to instantiate Excel [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PowerShell provides multiple ways to access Excel. My favorite so far is via COMObject Excel.Application. This object provides direct access to Excel workbooks, worksheets. In this short article we&#8217;ll see how to accomplish this using PowerShell and Excel&#8217;s COMObject.</p>
<h5>Instantiating Excel COM Object using New-Object PowerShell CmdLet</h5>
<p>Using following line of code to instantiate Excel COM object.</p>
<div>
<div id="highlighter_706002" class="syntaxhighlighter  ps">
<div class="toolbar"><a class="toolbar_item command_help help" href="#">?</a></div>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="ps variable">$excelObj</code> <code class="ps plain">= </code><code class="ps functions">New-Object</code> <code class="ps color1">-ComObject</code> <code class="ps plain">Excel.Application</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h5>Creating an Excel workbook</h5>
<div>
<div id="highlighter_366794" class="syntaxhighlighter  ps">
<div class="toolbar"><a class="toolbar_item command_help help" href="#">?</a></div>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="ps variable">$excelWB</code> <code class="ps plain">= </code><code class="ps variable">$excelObj</code><code class="ps plain">.WorkBooks.Add()</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h5>Get reference to a worksheet</h5>
<div>
<div id="highlighter_856020" class="syntaxhighlighter  ps">
<div class="toolbar"><a class="toolbar_item command_help help" href="#">?</a></div>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="ps variable">$excelWS</code> <code class="ps plain">= </code><code class="ps variable">$excelWB</code><code class="ps plain">.WorkSheets.Item(1)</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h5>Get reference to an excel worksheet cell</h5>
<p>Change attributes of a Cell using following code&#8230;</p>
<div>
<div id="highlighter_876549" class="syntaxhighlighter  ps">
<div class="toolbar"><a class="toolbar_item command_help help" href="#">?</a></div>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="ps variable">$excelWS</code><code class="ps plain">.Cells.Item(1, 1) = </code><code class="ps string">"Test"</code></div>
<div class="line number2 index1 alt1"><code class="ps variable">$excelWS</code><code class="ps plain">.Cells.Item(1, 1).Font.Bold = </code><code class="ps variable">$true</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h5>Sample code to fill out an Excel worksheet</h5>
<p>I&#8217;m here using Get-Process cmdlet to generate some data in tabular format. But basically, below script uses above logic to fill out the sheet…</p>
<div>
<div id="highlighter_469643" class="syntaxhighlighter  ps">
<div class="toolbar"><a class="toolbar_item command_help help" href="#">?</a></div>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="ps variable">$excelObj</code> <code class="ps plain">= </code><code class="ps functions">New-Object</code> <code class="ps color1">-ComObject</code> <code class="ps plain">Excel.Application</code></div>
<div class="line number2 index1 alt1"><code class="ps variable">$excelWB</code> <code class="ps plain">= </code><code class="ps variable">$excelObj</code><code class="ps plain">.workbooks.Add()</code></div>
<div class="line number3 index2 alt2"><code class="ps variable">$excelWS</code> <code class="ps plain">= </code><code class="ps variable">$excelWB</code><code class="ps plain">.WorkSheets.Item(1)</code></div>
<div class="line number4 index3 alt1"></div>
<div class="line number5 index4 alt2"><code class="ps comments">#Get processes running on my machine</code></div>
<div class="line number6 index5 alt1"><code class="ps variable">$procs</code> <code class="ps plain">= </code><code class="ps functions">Get-Process</code></div>
<div class="line number7 index6 alt2"></div>
<div class="line number8 index7 alt1"><code class="ps comments">#Get all column names, process class' property name</code></div>
<div class="line number9 index8 alt2"><code class="ps variable">$ColumnNames</code> <code class="ps plain">= </code><code class="ps variable">$procs</code><code class="ps plain">[0].GetType().GetMembers() | </code><code class="ps functions">Where-Object</code><code class="ps plain">{</code><code class="ps variable">$_</code><code class="ps plain">.MemberType </code><code class="ps operator value">-eq</code> <code class="ps string">"Property"</code> <code class="ps operator value">-and</code> <code class="ps variable">$_</code><code class="ps plain">.MemberType </code><code class="ps operator value">-ne</code> <code class="ps string">"Module"</code><code class="ps plain">} | %{</code><code class="ps variable">$_</code><code class="ps plain">.Name}</code></div>
<div class="line number10 index9 alt1"></div>
<div class="line number11 index10 alt2"><code class="ps comments">#Make main excel window visible</code></div>
<div class="line number12 index11 alt1"><code class="ps variable">$excelObj</code><code class="ps plain">.Visible = </code><code class="ps variable">$true</code></div>
<div class="line number13 index12 alt2"></div>
<div class="line number14 index13 alt1"><code class="ps comments">#Add excel column title</code></div>
<div class="line number15 index14 alt2"><code class="ps variable">$cIndex</code> <code class="ps plain">= 0; </code><code class="ps comments">#Column index</code></div>
<div class="line number16 index15 alt1"><code class="ps variable">$ColumnNames</code> <code class="ps plain">| %{</code><code class="ps variable">$cIndex</code><code class="ps plain">++;</code><code class="ps variable">$excelWS</code><code class="ps plain">.Cells.Item(1, </code><code class="ps variable">$cIndex</code><code class="ps plain">).Font.Bold=</code><code class="ps variable">$true</code><code class="ps plain">;</code><code class="ps variable">$excelWS</code><code class="ps plain">.Cells.Item(1, </code><code class="ps variable">$cIndex</code><code class="ps plain">)=</code><code class="ps variable">$_</code><code class="ps plain">}</code></div>
<div class="line number17 index16 alt2"></div>
<div class="line number18 index17 alt1"><code class="ps comments">#Add process information into excel rows</code></div>
<div class="line number19 index18 alt2"><code class="ps variable">$rIndex</code> <code class="ps plain">= 1;</code><code class="ps variable">$procs</code> <code class="ps plain">| %{</code><code class="ps variable">$cIndex</code> <code class="ps plain">= 0;</code><code class="ps variable">$rIndex</code><code class="ps plain">++;</code><code class="ps variable">$proc</code><code class="ps plain">=</code><code class="ps variable">$_</code><code class="ps plain">;</code><code class="ps variable">$ColumnNames</code> <code class="ps plain">| %{</code><code class="ps variable">$cIndex</code><code class="ps plain">++;</code><code class="ps variable">$excelWS</code><code class="ps plain">.Cells.Item(</code><code class="ps variable">$rIndex</code><code class="ps plain">, </code><code class="ps variable">$cIndex</code><code class="ps plain">) = </code><code class="ps string">"$($proc.$($_))"</code><code class="ps plain">}}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h5>Output</h5>
<p><img src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/55f3b-011818_2059_powershellt1.png" alt="" /></p>
<h5>Another option</h5>
<p>PowerShell now does come with built in Excel support if you&#8217;re ok to install following module&#8230;</p>
<div>
<div id="highlighter_71492" class="syntaxhighlighter  ps">
<div class="toolbar"><a class="toolbar_item command_help help" href="#">?</a></div>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="ps plain">Install-Module ImportExcel</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>With this module in place you can run commands like&#8230;</p>
<div>
<div id="highlighter_225433" class="syntaxhighlighter  ps">
<div class="toolbar"><a class="toolbar_item command_help help" href="#">?</a></div>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="ps functions">Get-Process</code> <code class="ps plain">| Where Company | </code><code class="ps functions">Export-Excel</code> <code class="ps plain">C:\Temp\ps.xlsx</code> <code class="ps color1">-Show</code> <code class="ps color1">-IncludePivotTable</code> <code class="ps color1">-PivotRows</code> <code class="ps plain">Company</code> <code class="ps color1">-PivotData</code> <code class="ps plain">@{Handles=”sum”}</code> <code class="ps color1">-IncludePivotChart</code> <code class="ps color1">-ChartType</code> <code class="ps plain">PieExploded3D</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>This will create an excel workbook with data in a pivot table. For this case we&#8217;ve set PivotData to sum of handles based on product company.</p>
<h5>References</h5>
<p><a href="https://blogs.technet.microsoft.com/heyscriptingguy/2015/11/25/introducing-the-powershell-excel-module-2/">https://blogs.technet.microsoft.com/heyscriptingguy/2015/11/25/introducing-the-powershell-excel-module-2/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2018/01/18/powershell-tidbits-creating-excel-workbook-and-filling-out-data-into-worksheets/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3431</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/55f3b-011818_2059_powershellt1.png" medium="image" />
	</item>
		<item>
		<title>PowerShell TidBits: How to get newest event log entries from all SharePoint servers</title>
		<link>https://nibuthomas.wordpress.com/2018/01/08/powershell-tidbits-how-to-get-newest-event-log-entries-from-all-sharepoint-servers/</link>
					<comments>https://nibuthomas.wordpress.com/2018/01/08/powershell-tidbits-how-to-get-newest-event-log-entries-from-all-sharepoint-servers/#respond</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Mon, 08 Jan 2018 19:07:55 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[Event Log]]></category>
		<category><![CDATA[Get-EventLog]]></category>
		<category><![CDATA[Get-SPServer]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3414</guid>

					<description><![CDATA[Why? While debugging a crash on a customer SharePoint farm, we had to do constant checks on all SharePoint servers for latest entries in the &#8216;System&#8217; eventlog. So wrote this PowerShell one-liner, using Get-EventLog, to help him out&#8230; How? Get-SPServer &#124; Where-Object{$_.Role -ne "Invalid" } &#124; %{ Write-Host "++++++++++++++++++ComputerName: $($_.Name.Split('.')[0])+++++++++++++++++++++++"; Get-EventLog -ComputerName $_.Name -LogName System [&#8230;]]]></description>
										<content:encoded><![CDATA[<h3>Why?</h3>
<p>While debugging a crash on a customer SharePoint farm, we had to do constant checks on all SharePoint servers for latest entries in the &#8216;System&#8217; eventlog. So wrote this PowerShell one-liner, using Get-EventLog, to help him out&#8230;</p>
<h3>How?</h3>
<pre class="brush: ps">Get-SPServer | Where-Object{$_.Role -ne "Invalid" } | %{ Write-Host "++++++++++++++++++ComputerName: $($_.Name.Split('.')[0])+++++++++++++++++++++++";
Get-EventLog -ComputerName $_.Name -LogName System -Newest 10} | ft -AutoSize
</pre>
<h3>Command explained</h3>
<ol>
<li>Get-SPServer: return all servers in the farm.</li>
<li>Checking role of each server to make sure we&#8217;re accessing just the SharePoint servers.</li>
<li>Drawing a header right before dumping out event log entries. If name is FQDN then we just take the first part, not necessary though.</li>
<li>Call Get-EventLog by passing in computer name and log category as &#8216;System&#8217;, we&#8217;re retrieving newest 10 entries. Feel free to change this.</li>
</ol>
<p>If you run into any issues or if you have any better way of doing this please let me know.</p>
<h3>Sample output</h3>
<pre>PS C:\Windows\system32&gt; Get-SPServer | Where-Object{$_.Role -ne "Invalid" } | %{ Write-Host "++++++++++++++++++ComputerName: $($_.Name.Split('.')[0])+++++++++++++++++++++++";
Get-EventLog -ComputerName $_.Name -LogName System -Newest 10} | ft -AutoSize
++++++++++++++++++ComputerName: SP+++++++++++++++++++++++

Index Time         EntryType   Source                  InstanceID Message                                                                 
----- ----         ---------   ------                  ---------- -------                                                                 
19665 Jan 08 12:00 Information Service Control Manager 1073748860 The Software Protection service entered the stopped state.              
19664 Jan 08 12:00 Information Service Control Manager 1073748860 The Software Protection service entered the running state.              
19663 Jan 08 12:00 Information EventLog                2147489661 The system uptime is 1026236 seconds.                                   
19662 Jan 08 10:21 Information Service Control Manager 1073748860 The Windows Modules Installer service entered the stopped state.        
19661 Jan 08 10:19 Information Service Control Manager 1073748860 The Windows Update service entered the stopped state.                   
19660 Jan 08 10:19 Information Service Control Manager 1073748860 The Windows Modules Installer service entered the running state.        
19659 Jan 08 10:14 Information Service Control Manager 1073748860 The Windows Store Service (WSService) service entered the stopped state.
19658 Jan 08 10:09 Information Service Control Manager 1073748860 The Windows Store Service (WSService) service entered the running state.
19657 Jan 08 10:07 Information Service Control Manager 1073748860 The Windows Update service entered the running state.                   
19656 Jan 08 07:18 Information Service Control Manager 1073748860 The Windows Modules Installer service entered the stopped state.</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2018/01/08/powershell-tidbits-how-to-get-newest-event-log-entries-from-all-sharepoint-servers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3414</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShell TidBits – How to list all printers installed on a computer?</title>
		<link>https://nibuthomas.wordpress.com/2017/12/23/powershell-tidbits-list-printers-installed-computer/</link>
					<comments>https://nibuthomas.wordpress.com/2017/12/23/powershell-tidbits-list-printers-installed-computer/#respond</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Sat, 23 Dec 2017 17:46:53 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerShell Tips]]></category>
		<category><![CDATA[Printer]]></category>
		<category><![CDATA[WMI]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3403</guid>

					<description><![CDATA[Use following PowerShell commands to list all printers installed on any machine… First command uses WMI (Windows Management Instrumentation)… Get-WmiObject -Class "Win32_Printer" -ComputerName "localhost" &#124; ft -Property Name, DriverName, SystemName, ShareName -AutoSize Command Output Name DriverName SystemName ShareName ---- ---------- ---------- --------- Send To OneNote 2016 Send to Microsoft OneNote 16 Driver MYMACHINE Microsoft XPS [&#8230;]]]></description>
										<content:encoded><![CDATA[<h3>Use following PowerShell commands to list all printers installed on any machine…</h3>
<p style="background:white;">First command uses WMI (Windows Management Instrumentation)…</p>
<pre class="brush: ps">Get-WmiObject -Class "Win32_Printer" -ComputerName "localhost" | ft -Property Name, DriverName, SystemName, ShareName -AutoSize</pre>
<h5>Command Output</h5>
<pre>Name                           DriverName                                  SystemName        ShareName   
----                           ----------                                  ----------        ---------   
Send To OneNote 2016           Send to Microsoft OneNote 16 Driver         MYMACHINE                    
Microsoft XPS Document Writer  Microsoft XPS Document Writer v4            MYMACHINE                    
Microsoft Print to PDF         Microsoft Print To PDF                      MYMACHINE                    
Fax                            Microsoft Shared Fax Driver                 MYMACHINE                     

</pre>
<p style="background:white;">The next command uses built-in PowerShell command <strong>Get-Printer</strong>…</p>
<pre class="brush: ps">Get-Printer -ComputerName mymachine</pre>
<h5>Command Output</h5>
<pre>Name                           ComputerName    Type         DriverName                PortName        Shared   Published  DeviceType     
----                           ------------    ----         ----------                --------        ------   ---------  ----------     
Send To OneNote 2016           mymachine       Local        Send to Microsoft OneN... xxx:            False    False      Print          
Microsoft XPS Document Writer  mymachine       Local        Microsoft XPS Document... xxxxxxxxxx:     False    False      Print          
Microsoft Print to PDF         mymachine       Local        Microsoft Print To PDF    xxxxxxxxxx:     False    False      Print          
Fax                            mymachine       Local        Microsoft Shared Fax D... xxxxxx:         False    False      Print</pre>
<h6>Please note that I&#8217;ve removed some printers from this list due to security issues.</h6>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2017/12/23/powershell-tidbits-list-printers-installed-computer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3403</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>
	</item>
		<item>
		<title>Why application crashing with HeapCorruption failure?</title>
		<link>https://nibuthomas.wordpress.com/2017/06/20/application-crashing-heapcorruption-failure/</link>
					<comments>https://nibuthomas.wordpress.com/2017/06/20/application-crashing-heapcorruption-failure/#comments</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Tue, 20 Jun 2017 20:39:58 +0000</pubDate>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[!address]]></category>
		<category><![CDATA[Heap]]></category>
		<category><![CDATA[HeapAlloc]]></category>
		<category><![CDATA[HeapCorruption]]></category>
		<category><![CDATA[HeapCreate]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3396</guid>

					<description><![CDATA[What&#8217;s a Heap? Before understanding HeapCorruption here&#8217;s a quick review of the Heap. The HeapCreate function creates a private heap object from which the calling process can allocate memory blocks by using the HeapAlloc function. HeapCreate specifies both an initial size and a maximum size for the heap. The initial size determines the number of committed, read/write pages initially allocated [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>What&#8217;s a Heap?</h2>
<p><span style="color:#454545;font-size:10pt;"><span style="font-family:Segoe UI;">Before understanding HeapCorruption here&#8217;s a quick review of the Heap. The </span><span style="color:#00188f;"><span style="font-family:Segoe UI Semibold;"><strong>HeapCreate</strong></span><span style="color:#454545;"><span style="font-family:Segoe UI;"> function creates a private heap object from which the calling process can allocate memory blocks by using the </span><span style="color:#00188f;"><span style="font-family:Segoe UI Semibold;"><strong>HeapAlloc</strong></span><span style="color:#454545;"><span style="font-family:Segoe UI;"> function. <strong>HeapCreate </strong>specifies both an initial size and a maximum size for the heap. The initial size determines the number of committed, read/write pages initially allocated for the heap. The maximum size determines the total number of reserved pages. These pages create a contiguous block in the virtual address space of a process into which the heap can grow. Additional pages are automatically committed from this reserved space if requests by <strong>HeapAlloc</strong> exceed the current size of committed pages, assuming that the physical storage for it is available. Once the pages are committed, they are not decommitted until the process is terminated or until the heap is destroyed by calling the </span><span style="color:#00188f;"><span style="font-family:Segoe UI Semibold;"><strong>HeapDestroy</strong></span><span style="color:#454545;font-family:Segoe UI;"> function.<br />
</span></span></span></span></span></span></span></p>
<p><span style="color:#454545;font-family:Segoe UI;font-size:10pt;">We don&#8217;t directly interact with this function but internally the boiler plate application code does this, for e.g. CRT heap. When we use &#8216;new&#8217;, &#8216;malloc&#8217;, internally somewhere there&#8217;s a call happening to HeapAlloc. When we call &#8216;delete&#8217; or &#8216;free&#8217; internally somewhere there&#8217;s a call happening to HeapFree.<br />
</span></p>
<h2>So what&#8217;s HeapCorruption?</h2>
<p>Any inconsistency that&#8217;s caused to a process heap because of application code can be called a HeapCorruption. For e.g. Since most of the time the heap memory blocks are in the form of a linked list, linked to each other, so if we end up overwriting these links then we call that a heap corruption because the heap cannot be traversed anymore from one linked list node to the other.</p>
<p>We could see an application crashing with following error…</p>
<p><span style="font-family:Courier New;">0:143&gt; .lastevent<br />
Last event: 616c.a550: Unknown exception &#8211; code <span style="background-color:yellow;">c0000374</span> (first/second chance not available)<br />
debugger time: Tue Jun 13 12:41:19.531 2017 (UTC &#8211; 5:00)<br />
</span></p>
<p><span style="font-family:Courier New;">0:143&gt; !error <span style="background-color:yellow;">c0000374</span><br />
Error code: (NTSTATUS) 0xc0000374 (3221226356) &#8211; A heap has been corrupted.<br />
</span></p>
<p>But in my case even though application crashed due to <span style="font-family:Lucida Sans Typewriter;font-size:10pt;">c0000374 and when I check the reason for HeapCorruption, I got the following…<br />
</span></p>
<p><span style="text-decoration:underline;">Error type: HEAP_FAILURE_INVALID_ARGUMENT<br />
</span></p>
<p>So essentially the heap is not corrupted but we passed an invalid argument for heap free function hence this failure. So how do I verify that this is indeed the reason? So, we pick up the address that was passed on to HeapFree function and then analyze it using the !address command…</p>
<p><span style="font-family:Courier New;">0:143&gt; !address 0x0000003c`5cec97a8</span></p>
<p><span style="font-family:Courier New;">Usage: <span style="color:red;background-color:yellow;">Stack</span><br />
Base Address: 0000003c`5ceae000<br />
End Address: 0000003c`5ced0000<br />
Region Size: 00000000`00022000 ( 136.000 kB)<br />
State: 00001000 MEM_COMMIT<br />
Protect: 00000004 PAGE_READWRITE<br />
Type: 00020000 MEM_PRIVATE<br />
Allocation Base: 0000003c`5ce50000<br />
Allocation Protect: 00000004 PAGE_READWRITE<br />
More info: ~143k<br />
Content source: 1 (target), length: 6858<br />
</span></p>
<p>If we look at above output, usage shows as stack memory, which should never be freed via Heap functions but instead they&#8217;re automatically released at the end of usage scope. Lets now look at another address which is located on the Heap…</p>
<p><span style="font-family:Courier New;">0:143&gt; !address 0x0000003c`6acbfc00</span></p>
<p><span style="font-family:Courier New;">Usage: <span style="color:red;background-color:yellow;">Heap</span><br />
Base Address: 0000003c`6a930000<br />
End Address: 0000003c`6af17000<br />
Region Size: 00000000`005e7000 ( 5.902 MB)<br />
State: 00001000 MEM_COMMIT<br />
Protect: 00000004 PAGE_READWRITE<br />
Type: 00020000 MEM_PRIVATE<br />
Allocation Base: 0000003c`6a220000<br />
Allocation Protect: 00000004 PAGE_READWRITE<br />
More info: <span style="color:red;background-color:yellow;">heap owning the address: !heap 0x3c74e70000</span><br />
More info: heap segment<br />
More info: heap entry containing the address: !heap -x 0x3c6acbfc00<br />
</span></p>
<p><span style="font-family:Courier New;">Content source: 1 (target), length: 257400<br />
</span></p>
<p>The above memory block is owned by a heap hence this can be freed via HeapFree Windows API and we should not get the <span style="text-decoration:underline;">HEAP_FAILURE_INVALID_ARGUMENT</span> error. The error  &#8216;<span style="text-decoration:underline;">HEAP_FAILURE_INVALID_ARGUMENT&#8217;</span> can be further proved by following output from an internal extension command output…</p>
<p><span style="font-family:Courier New;">**************************************************************<br />
</span><span style="font-family:'Courier New';">*                                                            *<br />
</span><span style="font-family:Courier New;">*                    HEAP ERROR DETECTED                     *<br />
</span><span style="font-family:'Courier New';">*                                                            *<br />
</span><span style="font-family:'Courier New';">**************************************************************</span></p>
<p><span style="font-family:Courier New;">Details:<br />
</span></p>
<p><span style="font-family:Courier New;">Heap address: 0000003c74e70000<br />
Error address: 0000003c5cec97a8<br />
Error type: HEAP_FAILURE_INVALID_ARGUMENT<br />
</span></p>
<p><span style="font-family:Courier New;">Details: The caller tried to a free a block at an <span style="background-color:yellow;">invalid (unaligned) address</span>.</span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2017/06/20/application-crashing-heapcorruption-failure/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3396</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>
	</item>
		<item>
		<title>How to configure SharePoint SearchCenter URL?</title>
		<link>https://nibuthomas.wordpress.com/2017/06/13/configure-sharepoint-searchcenter-url/</link>
					<comments>https://nibuthomas.wordpress.com/2017/06/13/configure-sharepoint-searchcenter-url/#respond</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Tue, 13 Jun 2017 20:47:57 +0000</pubDate>
				<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[SearchCenter]]></category>
		<category><![CDATA[SharePoint Search]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3372</guid>

					<description><![CDATA[What&#8217;s a SearchCenter? A Search Center site, or Search Center, provides an interface for users to submit search queries and view search results. A Search Center site is the top-level site of a site collection that a farm administrator creates by using the Enterprise Search Center template or Basic Search Center template. Sample search center [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>What&#8217;s a SearchCenter?</h2>
<p><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">A Search Center site, or Search Center, provides an interface for users to submit search queries and view search results. A Search Center site is the top-level site of a site collection that a farm administrator creates by using the Enterprise Search Center template or Basic Search Center template. Sample search center screenshot…<br />
</span></p>
<p><img class="alignnone" src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/f8c98-061317_2037_howtoconfig1.png" alt="Sample SearchCenter Shot" width="496" height="279" /></p>
<p><img class="alignnone" src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/84d6f-061317_2037_howtoconfig2.png" alt="Sample SearchCenter Shot" width="498" height="280" /></p>
<h2><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;"><br />
</span>How to Create a Search Center Site Collection… (from MSDN)</h2>
<ul>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">Verify that the user account that is performing this procedure is a member of the Farm Administrators group.<br />
</span></li>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">On the home page of the Central Administration website, in the <strong>Application Management</strong> section, click <strong>Create site collections</strong>.<br />
</span></li>
<li>
<div><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">On the Create Site Collection page, do the following:<br />
</span></div>
<ul>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">In the <strong>Web Application</strong> section, select a web application to contain the new site collection. To use a web application other than the one that is displayed, click the web application that is displayed, and then click <strong>Change Web Application</strong>.<br />
</span></li>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">In the <strong>Title and Description</strong> section, in the <strong>Title</strong> box, type the name for the new Search Center site. Optionally, type a description in the <strong>Description</strong> box.<br />
</span></li>
<li>
<div><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">In the <strong>Web Site Address</strong> section, for the part of the URL immediately after the web application address, select <strong>/sites/</strong>, or select a managed path that was previously defined, and then type the final part of the URL.<br />
</span></div>
<p><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">Note the address of the new Search Center for future reference.<br />
</span></li>
<li>
<div><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">In the <strong>Template Selection</strong> section, do the following:<br />
</span></div>
<ul>
<li>
<div><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">In the <strong>Select the experience version</strong> drop-down list, select <strong>2013</strong> to create a Search Center site that provides the SharePoint Server 2013 user experience, or select <strong>2010</strong> to create a Search Center site that provides the SharePoint 2010 Products user experience.<br />
</span></div>
<p><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">For more information, see <a href="https://technet.microsoft.com/en-us/library/7a033ef9-61cc-4c35-8054-0f47c68529ca"><span style="color:#00709f;text-decoration:underline;">Search user interface improvements</span></a> in <a href="https://technet.microsoft.com/en-us/library/ee667266.aspx"><span style="color:#00709f;text-decoration:underline;">What&#8217;s new in search in SharePoint Server 2013</span></a>.<br />
</span></li>
<li>
<div><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">In the <strong>Select a template</strong> subsection, click the <strong>Enterprise</strong> tab, and then do one of the following:<br />
</span></div>
<ul>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">If you are using SharePoint Foundation 2013, select the <strong>Basic Search Center</strong> template.<br />
</span></li>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">Otherwise, if you are using SharePoint Server 2013, select the <strong>Enterprise Search Center</strong> template.<br />
</span></li>
</ul>
</li>
</ul>
</li>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">In the <strong>Primary Site Collection Administrator</strong> section, in the <strong>User name</strong> box, type the user name of the primary site collection administrator for this site collection in the form <em>domain\user name</em>.<br />
</span></li>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">(Optional) In the <strong>Secondary Site Collection Administrator</strong> section, type the user name of a secondary site collection administrator in the form <em>domain\user name</em>.<br />
</span></li>
<li>
<div><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">In the <strong>Quota Template</strong> section, select <strong>No Quota</strong>.<br />
</span></div>
<p><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">A Search Center site is not intended to be a data repository. Therefore, you do not have to select a quota template.<br />
</span></li>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">Click <strong>OK</strong>.<br />
</span></li>
</ul>
</li>
<li><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">On the Top-Level Site Successfully Created page, click the link to the Search Center site that you created.<br />
</span></li>
</ul>
<h2>How to configure the Global SharePoint SearchCenter URL?</h2>
<p><span style="color:#2a2a2a;font-family:Segoe UI;font-size:10pt;">Once this site is created we need to tell SharePoint SSA to use this site to submit search queries and view search results. Please note that even UPA uses this SearchCenter for user profile look up so it is important that we set this up the right way to be consumed by UPA as well. From what I know there are couple of ways to do this.<br />
</span></p>
<h3>Via PowerShell</h3>
<p><em>$ssa = Get-SPEnterpriseSearchServiceApplication</em><br />
<em> $ssa.SearchCenterUrl = &#8220;SearchCenterURL/pages&#8221;</em><br />
<em> $ssa.Update()<br />
iisreset</em></p>
<p>Note that you might have to IISReset after this. If you&#8217;re doing this via PowerShell I&#8217;ve noticed that change will take effect faster than via UI.</p>
<h3>Via UI</h3>
<p>Open search service application (SSA). Click on value of &#8220;Global Search Center URL&#8221; to enter new URL….</p>
<p><img src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/d14e8-061317_2037_howtoconfig3.png" alt="" /></p>
<p>You should see a popup similar to following dialog popup. Enter new search center URL here.</p>
<p><img src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/be22f-061317_2037_howtoconfig4.png" alt="" /></p>
<h2>How to configure the SharePoint SearchCenter URL for a site/site collection?</h2>
<p>Please note that above is for global search center URL but you can have site collection or site level search center URL which will override the global search center settings from what I know so far. For setting site collection level SearchCenter URL, access Site Settings-&gt;Site Collection Administration-&gt;Search Settings, you should see following popup…</p>
<p><img src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/6fed3-061317_2037_howtoconfig5.png" alt="" /></p>
<p>For setting site level SearchCenter URL access Site Settings-&gt;Search-&gt;Search Settings, a dialog similar to the one above should pop up. Once you&#8217;ve filled out necessary values you&#8217;re good to go.</p>
<h2>SearchCenter setting for UPA</h2>
<p>So if SearchCenter is not setup, my site settings for your UPA service application will be empty, but if you set it via above powershell or via UI you should following empty field get populated, manually populating this field doesn&#8217;t stick.</p>
<p><img src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/41271-061317_2037_howtoconfig6.png" alt="" /></p>
<p>Once the following PowerShell executes, we see following screenshot now…</p>
<p><em>$ssa=Get-SPEnterpriseSearchServiceApplication</em><br />
<em> $ssa.SearchCenterUrl=&#8221;searchcenterurl/pages&#8221;</em><br />
<em> $ssa.Update()</em><br />
<em> iisreset</em><br />
<img src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/3e4ab-061317_2037_howtoconfig7.png" alt="" /></p>
<p>This time the field is filled out, so when you&#8217;re viewing user profile and when clicking on user name and other things pertaining to a user you&#8217;ll land on the above SearchCenter page.</p>
<h2>&#8216;/Pages&#8217; is important</h2>
<p>Remember to append /Pages to the end of the SearchCenter URL. Reason being if you browse to the SearchCenter site and look at SiteContents. You&#8217;ll see a pages library which contains all the pages you&#8217;ll see as part of the SearchCenter. So if &#8216;/pages/&#8217; is not appended to the end of the URL you&#8217;re bound to get a 404.</p>
<p>Ideally a SearchCenter URL should look as follows: <a href="http://sp:port/sites/searchcenter">http://sp:port/sites/searchcenter</a><span style="background-color:yellow;">/pages</span></p>
<p><img src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/3f48e-061317_2037_howtoconfig8.png" alt="" /></p>
<h2>References…</h2>
<p><a href="https://msdn.microsoft.com/hu-hu/jj851144" rel="nofollow">https://msdn.microsoft.com/hu-hu/jj851144</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2017/06/13/configure-sharepoint-searchcenter-url/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3372</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/f8c98-061317_2037_howtoconfig1.png" medium="image">
			<media:title type="html">Sample SearchCenter Shot</media:title>
		</media:content>

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/84d6f-061317_2037_howtoconfig2.png" medium="image">
			<media:title type="html">Sample SearchCenter Shot</media:title>
		</media:content>

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/d14e8-061317_2037_howtoconfig3.png" medium="image" />

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/be22f-061317_2037_howtoconfig4.png" medium="image" />

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/6fed3-061317_2037_howtoconfig5.png" medium="image" />

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/41271-061317_2037_howtoconfig6.png" medium="image" />

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/3e4ab-061317_2037_howtoconfig7.png" medium="image" />

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/3f48e-061317_2037_howtoconfig8.png" medium="image" />
	</item>
		<item>
		<title>How to set ServerRender property of a SharePoint WebPart via Powershell?</title>
		<link>https://nibuthomas.wordpress.com/2016/06/24/how-to-set-serverrender-property-of-a-sharepoint-webpart-via-powershell/</link>
					<comments>https://nibuthomas.wordpress.com/2016/06/24/how-to-set-serverrender-property-of-a-sharepoint-webpart-via-powershell/#respond</comments>
		
		<dc:creator><![CDATA[Nibu Thomas]]></dc:creator>
		<pubDate>Fri, 24 Jun 2016 23:36:36 +0000</pubDate>
				<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[ServerRender]]></category>
		<category><![CDATA[SharePoint WebPart]]></category>
		<guid isPermaLink="false">http://ntcoder.com/bab/?p=3348</guid>

					<description><![CDATA[What’s ServerRender? ServerRender is a property of a webpart which disables client-side rendering for a webpart. You’ll lose some cool features of a webpart once you enable this feature for e.g. Inline editing of a list item, or in other words “Quick Edit”. Look and feel of the list changes to the traditional view, from [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>What’s ServerRender?</h1>
<p>ServerRender is a property of a webpart which disables client-side rendering for a webpart. You’ll lose some cool features of a webpart once you enable this feature for e.g.</p>
<ol>
<li>Inline editing of a list item, or in other words “Quick Edit”.  </li>
<li>Look and feel of the list changes to the traditional view, from a excel like view.</li>
</ol>
<p>But this feature is quite handy when it comes to workaround some bugs related to client-side JavaScript.</p>
<h1>&nbsp;</h1>
<h1>How do we enable this feature via SharePoint UI?</h1>
<ol>
<li>GoTo Site settings-&gt;Edit page<br /><a href="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/cb474-clip_image001.jpg"><img loading="lazy" title="clip_image001" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="clip_image001" src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/ade8d-clip_image001_thumb.jpg" width="234" height="158"/></a>  </li>
<li>Select list web part and then select WEB PART on the ribbon bar, then select the list web parts “Web Part Properties” on this ribbon.<br /><a href="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/5ce9b-clip_image003.jpg"><img loading="lazy" title="clip_image003" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="clip_image003" src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/dd345-clip_image003_thumb.jpg" width="244" height="114"/></a>  </li>
<li>On the properties window that pops out on the right side, enable “Server Render”, at the bottom of this screenshot…<br /><a href="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/69792-clip_image005.jpg"><img loading="lazy" title="clip_image005" style="background-image:none;padding-top:0;padding-left:0;display:inline;padding-right:0;border-width:0;" border="0" alt="clip_image005" src="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/a3de4-clip_image005_thumb.jpg" width="154" height="244"/></a></li>
</ol>
<h1>&nbsp;</h1>
<h1>How do we enable this feature via PowerShell?</h1>
<p>I had to dig around a bit to figure this out. Here’s how we do this via PowerShell…</p>
<pre class="brush: ps; highlight: [8, 13, 14]">#Web URL, change to your web's URL
$WebUrl = "http://sp/sites/TaskList"
#ListName, change to your list's name
$ListName = "MyTasks"
$web = Get-SPWeb $webUrl

#Get all web parts in this collection, please note this is for default view, if you've got other views please use URL for that view
$WebParts = $web.GetWebPartCollection($web.Lists[$ListName].DefaultViewUrl, [Microsoft.SharePoint.WebPartPages.Storage]::Shared)
#Dump names of all web parts on this page
$WebParts.DisplayName

#Assuming you just have one web part on this page.
$WebParts[0].ServerRender=$true
$WebParts.SaveChanges($WebParts[0].ViewGuid)

$web.Dispose()</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://nibuthomas.wordpress.com/2016/06/24/how-to-set-serverrender-property-of-a-sharepoint-webpart-via-powershell/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3348</post-id>
		<media:content url="https://0.gravatar.com/avatar/6a0696f8bb0fd1ec54913edf8725f0866099bd33d33238b60752a02e6e26cfec?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">NT</media:title>
		</media:content>

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/ade8d-clip_image001_thumb.jpg" medium="image">
			<media:title type="html">clip_image001</media:title>
		</media:content>

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/dd345-clip_image003_thumb.jpg" medium="image">
			<media:title type="html">clip_image003</media:title>
		</media:content>

		<media:content url="https://nibuthomas.wordpress.com/wp-content/uploads/2021/05/a3de4-clip_image005_thumb.jpg" medium="image">
			<media:title type="html">clip_image005</media:title>
		</media:content>
	</item>
	</channel>
</rss>
