<?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/"
	>

<channel>
	<title>Ryan Ball</title>
	<atom:link href="http://ryanball.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://ryanball.co.uk</link>
	<description>A C# software developer in Cornwall, UK</description>
	<lastBuildDate>Wed, 02 Dec 2020 10:16:15 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.15</generator>
	<item>
		<title>PackageManagement\Install-Package : No match was found&#8230;</title>
		<link>http://ryanball.co.uk/2020/12/02/packagemanagementinstall-package-no-match-was-found/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Wed, 02 Dec 2020 10:10:40 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[PowerShell]]></category>
		<guid isPermaLink="false">http://ryanball.co.uk/?p=1321</guid>

					<description><![CDATA[As ever, creating this note as a reminder and to save me trawling Google the next time the problem occurs. When attempting to install a PowerShell module and the following error happens&#8230; &#8230; it can be resolved by running this command.]]></description>
										<content:encoded><![CDATA[
<p>As ever, creating this note as a reminder and to save me trawling Google the next time the problem occurs.</p>



<p>When attempting to install a PowerShell module and the following error happens&#8230;</p>



<pre class="wp-block-code"><code>PackageManagement\Install-Package : No match was found for the specified search criteria and module name 'AzureAD'. Try Get-PSRepository to see all available registered module repositories.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1809 char:21</code></pre>



<p>&#8230; it can be resolved by running this command.</p>



<pre class="wp-block-code"><code>&#91;Net.ServicePointManager]::SecurityProtocol = &#91;Net.SecurityProtocolType]::Tls12</code></pre>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Looping through SPList items</title>
		<link>http://ryanball.co.uk/2019/03/22/looping-through-splist-items/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Fri, 22 Mar 2019 21:18:24 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[PowerShell]]></category>
		<guid isPermaLink="false">http://www.cornflowerdesign.co.uk/?p=967</guid>

					<description><![CDATA[Now this is something I&#8217;m guilty of time and time again. Within my PowerShell scripts I quite often query SharePoint lists and loop through them in the following way&#8230; What I should be doing is this…]]></description>
										<content:encoded><![CDATA[<p>Now this is something I&#8217;m guilty of time and time again. Within my PowerShell scripts I quite often query SharePoint lists and loop through them in the following way&#8230;</p>


<pre class="wp-block-code"><code>$site = New-Object Microsoft.SharePoint.SPSite( $url )
$web = $site.OpenWeb()
$list = $web.List

for ( $i = 0; $i &lt; $list.Items.Count; $i++) {
   SPListItem listItem = activeList.Items[i];
   htmlWriter.Write(listItem["Title"]);
}</code></pre>



<p>What I should be doing is this…</p>



<pre class="wp-block-code"><code>SPListItemCollection items = SPContext.Current.List.Items;

for(int i=0;i&lt;100 &amp;&amp; i&lt;items.Count;i++) {
  SPListItem listItem = items[i];
  htmlWriter.Write(listItem["Title"]);
}</code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Invoke-SqlCommand</title>
		<link>http://ryanball.co.uk/2019/03/05/invoke-sqlcommand/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Tue, 05 Mar 2019 14:30:21 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[PowerShell]]></category>
		<guid isPermaLink="false">http://www.cornflowerdesign.co.uk/?p=1173</guid>

					<description><![CDATA[For whatever reason, sometimes you just can&#8217;t upgrade the installed version of PowerShell on a server. In this case, I wanted to make use of the&#160;Invoke-SqlCommand command. The most simple way around this limitation is to add a module to the server that includes a command that performs the same function. Jourdan Templeto&#8217;s Simple SQL [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>For whatever reason, sometimes you just can&#8217;t upgrade the installed version of PowerShell on a server. In this case, I wanted to make use of the&nbsp;<a href="https://docs.microsoft.com/en-us/powershell/module/sqlserver/invoke-sqlcmd?view=sqlserver-ps">Invoke-SqlCommand</a> command.</p>



<p>The most simple way around this limitation is to add a module to the server that includes a command that performs the same function.</p>



<p> Jourdan Templeto&#8217;s <a href="https://blog.jourdant.me/post/simple-sql-in-powershell">Simple SQL in PowerShell</a> post has a cmdlet that can be cut and pasted into a new PowerShell module file and then easily accessed from your own scripts. Simple.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Task Schedule: This task requires that the user account specified has Log on as batch job right</title>
		<link>http://ryanball.co.uk/2019/02/01/task-schedule-this-task-requires-that-the-user-account-specified-has-log-on-as-batch-job-right/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Fri, 01 Feb 2019 09:45:22 +0000</pubDate>
				<category><![CDATA[Server]]></category>
		<guid isPermaLink="false">http://www.cornflowerdesign.co.uk/?p=1168</guid>

					<description><![CDATA[When creating a new Task within Task Scheduler and attempting to set the &#8220;When running the task, use the following user account&#8221; option, you may receive the following error message: Task Schedule: This task requires that the user account specified has Log on as batch job rights This can be resolved by ensuring the user [&#8230;]]]></description>
										<content:encoded><![CDATA[
				
<p>When creating a new Task within Task Scheduler and attempting to set the &#8220;When running the task, use the following user account&#8221; option, you may receive the following error message:</p>



<p><strong>Task Schedule: This task requires that the user account specified has Log on as batch job rights</strong></p>



<p>This can be resolved by ensuring the user account has the correct permissions on the server.</p>



<ol>
	<li>Click the <strong>Start</strong> button.</li>
	<li>Within the Search field, type <strong>secpol</strong> and, when displayed, click <strong>Local Security Policy</strong>.</li>
	<li>Within the <strong>Local Security Policy</strong> window, expand the <strong>Local Policies</strong> node.</li>
	<li>Expand the <strong>User Rights Assignment</strong> node.</li>
	<li>In the right-hand panel, right-click <strong>Log on as a batch job</strong> and select the <strong>Properties</strong> option.</li>
	<li>In the <strong>Log on as batch job Properties</strong> window, click the <strong>Add User or Group</strong>&#8230; button and add the user or group you want to give access.</li>
	<li>Click the <strong>OK</strong> button to close the window.</li>
	<li>Click the <strong>OK</strong> button to close the <strong>Log on as batch job Properties</strong> window .</li>
</ol>



<p>Extra: <a href="https://docs.microsoft.com/en-us/windows/desktop/taskschd/task-scheduler-error-and-success-constants" isadding="false">Task Scheduler Error and Success Constants</a></p>
		]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Adding users to a Yammer group</title>
		<link>http://ryanball.co.uk/2018/11/09/adding-users-to-a-yammer-group/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Fri, 09 Nov 2018 08:59:20 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Yammer]]></category>
		<guid isPermaLink="false">http://www.cornflowerdesign.co.uk/?p=1162</guid>

					<description><![CDATA[I&#8217;m making a note of this blog post as I can foresee a future need to be able to subscribe specific subsets of users to Yammer groups. How To Add A User To Yammer Group Using PowerShell Also see the official documentation for /group_memberships.json]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m making a note of this <a href="https://www.c-sharpcorner.com/blogs/how-to-add-user-to-yammer-group-using-powershell">blog post</a> as I can foresee a future need to be able to subscribe specific subsets of users to Yammer groups.</p>



<p><a href="https://www.c-sharpcorner.com/blogs/how-to-add-user-to-yammer-group-using-powershell">How To Add A User To Yammer Group Using PowerShell</a></p>



<p>Also see the official documentation for <a href="https://developer.yammer.com/docs/group_membershipsjsongroup_idid" isadding="false">/group_memberships.json</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>XSL and dumping XML</title>
		<link>http://ryanball.co.uk/2018/10/24/xsl-and-dumping-xml/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Wed, 24 Oct 2018 09:59:47 +0000</pubDate>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XSL]]></category>
		<guid isPermaLink="false">http://www.cornflowerdesign.co.uk/?p=1157</guid>

					<description><![CDATA[When you&#8217;re attempting to construct an XSL template its always helpful to know the structure of the XML you&#8217;re transforming. When working with lists in SharePoint, this isn&#8217;t always obvious. One quick solution is simply to dump the XML to the page so you can review it. Simple.]]></description>
										<content:encoded><![CDATA[
<p>When you&#8217;re attempting to construct an XSL template its always helpful to know the structure of the XML you&#8217;re transforming. When working with lists in SharePoint, this isn&#8217;t always obvious.</p>



<p>One quick solution is simply to dump the XML to the page so you can review it.</p>



<pre class="wp-block-code"><code>&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
&lt;xsl:output method="xml" indent="yes" />
&lt;xsl:template match="/">
&lt;pre>
&lt;xsl:copy-of select="*"/>
&lt;/pre>
&lt;/xsl:template>
&lt;/xsl:stylesheet></code></pre>



<p>Simple.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Creating a SQL Server backup plan</title>
		<link>http://ryanball.co.uk/2018/10/19/creating-a-sql-server-backup-plan/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Fri, 19 Oct 2018 08:17:45 +0000</pubDate>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">http://www.cornflowerdesign.co.uk/?p=1154</guid>

					<description><![CDATA[This is something that is generally out of my area of responsibility but has to be done every now and then: creating and configuring a maintenance backup plan for a SQL database server. This post from Kyle Laffoon outlines the steps needed to create a plan that executes full and differential backups, as well as [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This is something that is generally out of my area of responsibility but has to be done every now and then: creating and configuring a maintenance backup plan for a SQL database server.</p>



<p>This <a href="https://support.rackspace.com/how-to/create-a-maintenance-backup-plan-in-sql-server-2008-r2-using-the-wizard/">post from Kyle Laffoon</a> outlines the steps needed to create a plan that executes full and differential backups, as well as looking after transaction logs and cleaning up after itself.</p>



<p><a href="https://support.rackspace.com/how-to/create-a-maintenance-backup-plan-in-sql-server-2008-r2-using-the-wizard/" isadding="false">Create a maintenance backup plan in SQL Server 2008 R2 using the wizard</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Bulks inserts and SSIS</title>
		<link>http://ryanball.co.uk/2018/09/07/bulks-inserts-and-ssis/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Fri, 07 Sep 2018 14:40:10 +0000</pubDate>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">http://www.cornflowerdesign.co.uk/?p=1146</guid>

					<description><![CDATA[SQL Server Integration Services (SSIS) really isn&#8217;t my thing. I like to get my hands dirty with code. But every now and then (not often enough for me to remember anything of what I&#8217;ve previously done) I have to bite the bullet and open an SSIS package in Visual Studio. Today has been one of [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://docs.microsoft.com/en-us/sql/integration-services/sql-server-integration-services?view=sql-server-2017">SQL Server Integration Services</a> (SSIS) really isn&#8217;t my thing. I like to get my hands dirty with code. But every now and then (not often enough for me to remember anything of what I&#8217;ve previously done) I have to bite the bullet and open an SSIS package in Visual Studio.</p>



<p>Today has been one of those days.</p>



<p>The goal of the package was simple: to import the contents of two CSV files from a network share into two database tables on a SQL Server. After a day of struggling to reason why I was getting various &#8220;Access is denied&#8221; and &#8220;The file &#8230; does not exist&#8221; error messages, I finally discovered <a href="https://www.anexinet.com/blog/ssis-error-cannot-bulk-load-the-file-cmyfile-csv-does-not-exist/">this blog post</a> that helped to clear the mist.</p>



<p>Bingo! I now have a package with two Sequence Containers with green execution results.</p>



<figure class="wp-block-image is-resized"><img loading="lazy" src="http://ryanball.co.uk/en-gb/wp-content/uploads/2018/09/ssis.png" alt="" class="wp-image-1150" width="629" height="300"/><figcaption>The final SSIS package</figcaption></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Task Scheduler &#038; PowerShell</title>
		<link>http://ryanball.co.uk/2018/06/25/task-scheduler-powershell/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Mon, 25 Jun 2018 09:49:05 +0000</pubDate>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[PowerShell]]></category>
		<guid isPermaLink="false">http://www.cornflowerdesign.co.uk/?p=1126</guid>

					<description><![CDATA[To manage repeating tasks, its common for us (the team I work with 9-5) to automate things with a PowerShell script and then schedule it to repeat at specific times using a scheduled task. When I create the task I use a specific set of parameters , which I always forget &#8211; so I&#8217;m noting [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>To manage repeating tasks, its common for us (the team I work with 9-5) to automate things with a PowerShell script and then schedule it to repeat at specific times using a scheduled task.</p>



<p>When I create the task I use a specific set of parameters , which I always forget &#8211; so I&#8217;m noting them here for future reference.</p>



<p><code>PowerShell.exe -NoProfile -ExecutionPolicy ByPass -File C:\PowerShell\Get-SomethingNice.ps1</code></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Semantic method naming</title>
		<link>http://ryanball.co.uk/2018/05/25/semantic-method-naming/</link>
		
		<dc:creator><![CDATA[Ryan]]></dc:creator>
		<pubDate>Fri, 25 May 2018 14:31:42 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<guid isPermaLink="false">http://www.cornflowerdesign.co.uk/?p=1121</guid>

					<description><![CDATA[An old post &#8211; but still relevant &#8211; about semantically naming methods within code.]]></description>
										<content:encoded><![CDATA[
				
<p>An <a href="http://codelegance.com/semantic-method-naming/" isadding="false">old post</a> &#8211; but still relevant &#8211; about semantically naming methods within code.</p>
		]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
