<?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>The Ryan and Jeff Show &#187; Computer Security</title>
	<atom:link href="http://www.ryanandjeffshow.com/blog/category/computer-security/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ryanandjeffshow.com/blog</link>
	<description>...Relax, we brought the towel (:P)</description>
	<lastBuildDate>Tue, 18 Aug 2015 05:23:28 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Finding Invalid/Nonexistent Service Paths</title>
		<link>http://www.ryanandjeffshow.com/blog/2013/04/12/finding-invalidnonexistent-service-paths/</link>
		<comments>http://www.ryanandjeffshow.com/blog/2013/04/12/finding-invalidnonexistent-service-paths/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 19:29:20 +0000</pubDate>
		<dc:creator><![CDATA[Jeff Liford]]></dc:creator>
				<category><![CDATA[Computer Security]]></category>
		<category><![CDATA[PowerShell]]></category>

		<guid isPermaLink="false">http://www.ryanandjeffshow.com/blog/?p=193</guid>
		<description><![CDATA[This was prompted by someone&#8217;s comment on one of my other scripts. This script accepts input from my .\Get-SVCPath script from the pipeline (get that script at the bottom of this post) and examines each valid imagepath to determine if<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.ryanandjeffshow.com/blog/2013/04/12/finding-invalidnonexistent-service-paths/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>This was prompted by someone&#8217;s comment on one of my other scripts.</p>
<p>This script accepts input from my .\Get-SVCPath script from the pipeline <a href="http://www.ryanandjeffshow.com/blog/2013/04/07/finding-and-fixing-unquoted-service-paths-pt1/">(get that script at the bottom of this post)</a> and examines each valid imagepath to determine if the executable it&#8217;s calling actually exists.  This can help you track down mangled path entries, as well as those that are left over and do not resolve to an executable anymore. (Maybe after an incomplete installation? or the installer simply didn&#8217;t remove it)</p>
<p>I reused some code from my .\Find-BADSVCPath <a href="http://www.ryanandjeffshow.com/blog/2013/04/07/finding-and-fixing-unquoted-service-paths-pt2/">(available here) </a>script to put this together.  You get the full objects back on the shell, so you can sort/filter on the new properties I&#8217;ve introduced to the object here using standard PowerShell syntax.</p>
<p>First thing, get input and start process loop</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008000;">#Validate-SVCPath.ps1</span>
<span style="color: #000000;">&#91;</span>cmdletbinding<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #0000FF;">Param</span> <span style="color: #000000;">&#40;</span> <span style="color: #008000;">#Define a Mandatory input</span>
	<span style="color: #000000;">&#91;</span>Parameter<span style="color: #000000;">&#40;</span>
	 ValueFromPipeline<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>
	 ValueFromPipelinebyPropertyName<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>
	 Position<span style="color: pink;">=</span><span style="color: #804000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: #800080;">$obj</span>
	<span style="color: #000000;">&#41;</span> <span style="color: #008000;">#End Param</span>
Process
<span style="color: #000000;">&#123;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Okay, now we add new object properties (so I can simply set them later) and create a string we can manipulate to test with.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> Invalid <span style="color: #008080; font-style: italic;">-value</span> <span style="color: #800000;">&quot;&quot;</span>
<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> ExePath <span style="color: #008080; font-style: italic;">-value</span> <span style="color: #800000;">&quot;&quot;</span>
<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$obj</span>.Imagepath</pre></td></tr></table></div>

<p>With that done, we test the path.  If it fails, we need to manipulate it to do things like remove quotes, arguments, flags, etc (basically everything we did in my .\Find-BADSVCPath but somewhat backwards)</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Test-Path</span> <span style="color: #800080;">$examine</span> <span style="color: #804000;">2</span><span style="color: pink;">&gt;</span><span style="color: #800080;">$nul</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008000;">#If path not found</span>
&nbsp;
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.StartsWith<span style="color: #000000;">&#40;</span><span style="color: #800000;">'&quot;'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.TrimStart<span style="color: #000000;">&#40;</span><span style="color: #800000;">'&quot;'</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">#drop leading quotes so I can strip out path</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: pink;">-</span>split <span style="color: #800000;">'&quot;'</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">&#125;</span><span style="color: #008000;">#Should be only the path</span>
&nbsp;
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;-&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-or</span> <span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;/&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #008000;">#found arguments</span>
		<span style="color: #008000;">#split out arguments</span>
		<span style="color: #800080;">$split</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; -&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
		<span style="color: #800080;">$split</span> <span style="color: pink;">=</span> <span style="color: #800080;">$split</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; /&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$split</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span>.Trim<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#125;</span> <span style="color: #008000;">#Path minus flagged args </span>
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #008000;">#check for unflagged argument</span>
		<span style="color: #800080;">$eval</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-Replace</span> <span style="color: #800000;">'&quot;.*&quot;'</span><span style="color: pink;">,</span> <span style="color: #800000;">''</span> <span style="color: #008000;">#drop all quoted arguments</span>
		<span style="color: #800080;">$eval</span> <span style="color: pink;">=</span> <span style="color: #800080;">$eval</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot;\&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span> <span style="color: #008000;">#split on foler delim</span>
			<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$eval</span><span style="color: #000000;">&#91;</span><span style="color: pink;">-</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008000;">#last elem is executable and any unquoted args</span>
				<span style="color: #800080;">$eval</span><span style="color: pink;">=</span> <span style="color: #800080;">$eval</span><span style="color: #000000;">&#91;</span><span style="color: pink;">-</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; &quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span> <span style="color: #008000;">#split out args</span>
				<span style="color: #800080;">$eval</span> <span style="color: pink;">=</span> <span style="color: #800080;">$eval</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: #008000;">#Get just the executable</span>
				<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;$eval.*&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$eval&quot;</span> <span style="color: #000000;">&#125;</span> <span style="color: #000000;">&#125;</span> <span style="color: #008000;">#path all else dropped </span>
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;\??\&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008000;">#remove funky windows preceding tag</span>
		<span style="color: #800080;">$examine</span><span style="color: pink;">=</span><span style="color: #800080;">$examine</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;\??\&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>With all that out of the way, we also need to check that path for variable names.  Things like %SystemRoot% are pretty common and PowerShell won&#8217;t interpret these directly, so I can exchange the names for actual paths using PowerShell&#8217;s environment variables</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;">	<span style="color: #008000;">#Test for and replace environmentals in paths</span>
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;system32&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;system32&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\system32&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;System32&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
	<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;System32&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\system32&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;\SystemRoot&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;\SystemRoot&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:systemroot&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%systemroot%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%systemroot%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%SystemRoot%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%SystemRoot%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%windir%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%windir%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:windir\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%ProgramFiles%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%ProgramFiles%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:ProgramFiles\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%PROGRAMFILES%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%PROGRAMFILES%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:ProgramFiles\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;SysWOW64&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;SysWOW64&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\SysWOW64&quot;</span><span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>And with that, we can test the path again.  If it resolved, mark it good and write down the full exe path we found.  If it&#8217;s still bad, mark it bad and write down the path we checked.  We can also close out our top If statement so that if the path is good immediately, we can just mark it so and move on.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;">	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Test-Path</span> <span style="color: #800080;">$examine</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><span style="color: #008000;">#Try Corrected Path, if still fails</span>
	<span style="color: #800080;">$obj</span>.exepath <span style="color: pink;">=</span> <span style="color: #800000;">&quot;$examine&quot;</span>
	<span style="color: #800080;">$obj</span>.invalid <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Yes&quot;</span> 
	<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span><span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end if</span>
	<span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #800080;">$obj</span>.exepath <span style="color: pink;">=</span> <span style="color: #800000;">&quot;$examine&quot;</span>
	<span style="color: #800080;">$obj</span>.invalid <span style="color: pink;">=</span> <span style="color: #800000;">&quot;No&quot;</span>
	<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span> <span style="color: #000000;">&#125;</span> <span style="color: #000000;">&#125;</span><span style="color: #008000;">#end else, end if (first test)</span>
&nbsp;
<span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #800080;">$obj</span>.exepath <span style="color: pink;">=</span> <span style="color: #800000;">&quot;$examine&quot;</span>
	<span style="color: #800080;">$obj</span>.invalid <span style="color: pink;">=</span> <span style="color: #800000;">&quot;No&quot;</span>
	<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span> <span style="color: #000000;">&#125;</span>	<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end else, end process</span></pre></td></tr></table></div>

<p>And that&#8217;s it.  I&#8217;ll get back every service obj on the shell, and I simply sort them out how I want to see them, or dump to file, whatever floats your boat really.</p>
<p><code>.\Get-BADSVCPath.ps1 | .\Validate-SVCPath.ps1 | Where {$_.invalid -eq "Yes"}</code></p>
<p>Here&#8217;s the whole thing:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008000;">#Validate-SVCPath.ps1</span>
<span style="color: #000000;">&#91;</span>cmdletbinding<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #0000FF;">Param</span> <span style="color: #000000;">&#40;</span> <span style="color: #008000;">#Define a Mandatory input</span>
	<span style="color: #000000;">&#91;</span>Parameter<span style="color: #000000;">&#40;</span>
	 ValueFromPipeline<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>
	 ValueFromPipelinebyPropertyName<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>
	 Position<span style="color: pink;">=</span><span style="color: #804000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: #800080;">$obj</span>
	<span style="color: #000000;">&#41;</span> <span style="color: #008000;">#End Param</span>
Process
<span style="color: #000000;">&#123;</span>
<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> Invalid <span style="color: #008080; font-style: italic;">-value</span> <span style="color: #800000;">&quot;&quot;</span>
<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> ExePath <span style="color: #008080; font-style: italic;">-value</span> <span style="color: #800000;">&quot;&quot;</span>
<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$obj</span>.Imagepath
<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Test-Path</span> <span style="color: #800080;">$examine</span> <span style="color: #804000;">2</span><span style="color: pink;">&gt;</span><span style="color: #800080;">$nul</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008000;">#If path not found</span>
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.StartsWith<span style="color: #000000;">&#40;</span><span style="color: #800000;">'&quot;'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.TrimStart<span style="color: #000000;">&#40;</span><span style="color: #800000;">'&quot;'</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">#drop leading quotes so I can strip out path</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: pink;">-</span>split <span style="color: #800000;">'&quot;'</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">&#125;</span><span style="color: #008000;">#Should be only the path</span>
&nbsp;
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;-&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-or</span> <span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;/&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #008000;">#found arguments</span>
		<span style="color: #008000;">#split out arguments</span>
		<span style="color: #800080;">$split</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; -&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
		<span style="color: #800080;">$split</span> <span style="color: pink;">=</span> <span style="color: #800080;">$split</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; /&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$split</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span>.Trim<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#125;</span> <span style="color: #008000;">#Path minus flagged args </span>
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #008000;">#check for unflagged argument</span>
		<span style="color: #800080;">$eval</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-Replace</span> <span style="color: #800000;">'&quot;.*&quot;'</span><span style="color: pink;">,</span> <span style="color: #800000;">''</span> <span style="color: #008000;">#drop all quoted arguments</span>
		<span style="color: #800080;">$eval</span> <span style="color: pink;">=</span> <span style="color: #800080;">$eval</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot;\&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span> <span style="color: #008000;">#split on foler delim</span>
			<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$eval</span><span style="color: #000000;">&#91;</span><span style="color: pink;">-</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008000;">#last elem is executable and any unquoted args</span>
				<span style="color: #800080;">$eval</span><span style="color: pink;">=</span> <span style="color: #800080;">$eval</span><span style="color: #000000;">&#91;</span><span style="color: pink;">-</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; &quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span> <span style="color: #008000;">#split out args</span>
				<span style="color: #800080;">$eval</span> <span style="color: pink;">=</span> <span style="color: #800080;">$eval</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: #008000;">#Get just the executable</span>
				<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;$eval.*&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$eval&quot;</span> <span style="color: #000000;">&#125;</span> <span style="color: #000000;">&#125;</span> <span style="color: #008000;">#path all else dropped </span>
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;\??\&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008000;">#remove funky windows preceding tag</span>
		<span style="color: #800080;">$examine</span><span style="color: pink;">=</span><span style="color: #800080;">$examine</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;\??\&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #008000;">#Test for and replace environmentals in paths</span>
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;system32&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;system32&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\system32&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;System32&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
	<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;System32&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\system32&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;\SystemRoot&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;\SystemRoot&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:systemroot&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%systemroot%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%systemroot%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%SystemRoot%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%SystemRoot%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.startswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%windir%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%windir%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:windir\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%ProgramFiles%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%ProgramFiles%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:ProgramFiles\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;%PROGRAMFILES%&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;%PROGRAMFILES%&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:ProgramFiles\&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">elseif</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;SysWOW64&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-replace</span> <span style="color: #800000;">&quot;SysWOW64&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;$ENV:SystemRoot\SysWOW64&quot;</span><span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span><span style="color: #008080; font-weight: bold;">Test-Path</span> <span style="color: #800080;">$examine</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><span style="color: #008000;">#Try Corrected Path, if still fails</span>
	<span style="color: #800080;">$obj</span>.exepath <span style="color: pink;">=</span> <span style="color: #800000;">&quot;$examine&quot;</span>
	<span style="color: #800080;">$obj</span>.invalid <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Yes&quot;</span> 
	<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span><span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end if</span>
	<span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #800080;">$obj</span>.exepath <span style="color: pink;">=</span> <span style="color: #800000;">&quot;$examine&quot;</span>
	<span style="color: #800080;">$obj</span>.invalid <span style="color: pink;">=</span> <span style="color: #800000;">&quot;No&quot;</span>
	<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span> <span style="color: #000000;">&#125;</span> <span style="color: #000000;">&#125;</span><span style="color: #008000;">#end else, end if (first test)</span>
&nbsp;
<span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #800080;">$obj</span>.exepath <span style="color: pink;">=</span> <span style="color: #800000;">&quot;$examine&quot;</span>
	<span style="color: #800080;">$obj</span>.invalid <span style="color: pink;">=</span> <span style="color: #800000;">&quot;No&quot;</span>
	<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span> <span style="color: #000000;">&#125;</span>	<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end else, end process</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.ryanandjeffshow.com/blog/2013/04/12/finding-invalidnonexistent-service-paths/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PowerShell: Fixing Unquoted Service Paths (Complete)</title>
		<link>http://www.ryanandjeffshow.com/blog/2013/04/11/powershell-fixing-unquoted-service-paths-complete/</link>
		<comments>http://www.ryanandjeffshow.com/blog/2013/04/11/powershell-fixing-unquoted-service-paths-complete/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 02:31:33 +0000</pubDate>
		<dc:creator><![CDATA[Jeff Liford]]></dc:creator>
				<category><![CDATA[Computer Security]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PowerShell]]></category>

		<guid isPermaLink="false">http://www.ryanandjeffshow.com/blog/?p=182</guid>
		<description><![CDATA[This post is a culmination for the previous 3 script posts. All three of the scripts are here, updated with progress output so you&#8217;re not staring at the blank screen for hours during runs against dozens or hundreds of computers,<span class="ellipsis">&#8230;</span><div class="read-more"><a href="http://www.ryanandjeffshow.com/blog/2013/04/11/powershell-fixing-unquoted-service-paths-complete/">Read more &#8250;</a></div><!-- end of .read-more -->]]></description>
				<content:encoded><![CDATA[<p>This post is a culmination for the previous 3 script posts.  All three of the scripts are here, updated with progress output so you&#8217;re not staring at the blank screen for hours during runs against dozens or hundreds of computers, or over low-quality connections.</p>
<p>In addition, I&#8217;ve included a custom Parallel wrapper that will take the longest part (Getting paths from machines) and allow it to run in configurable parallel.  All outputs are PSCustom Objects and can be sorted/manipulated/filtered by standard PowerShell cmdlets or exported to CSV/HTML as desired.</p>
<p><span id="more-182"></span></p>
<p><strong><em>Remember to check your results!</strong></em>  I cannot be liable for any damage caused by running these scripts.  It&#8217;s your environment and you ran them.  That said I am very confident this will correctly fix all but the most extreme cases.</p>
<p>I recommend:<br />
.\Get-SVCPath.ps1 | .\Find-BADSVCPath.ps1 | Export-CSV report.csv</p>
<p>Open in excel and sort on the column that says &#8220;BadKey&#8221;<br />
Make sure all &#8220;FixedKey&#8221; values look correct.  You can change any that do not look correct in Excel as long as you do not move the header.  Retain the CSV file type so Excel doesn&#8217;t feed additional garbage into your file.</p>
<p>When satisfied your results are good, actually run the fix:<br />
Import-CSV report.csv | .\Fix-BADSVCPath.ps1</p>
<p><strong>.\Get-SVCPath.ps1</strong><br />
This script will contact a remote machine via the network protocols built into REG.exe.  The remote host does not need to be running PowerShell, only the host this script is executed on does.  You must be respected as an administrator on the target machine.  It will create a custom PowerShell object for each key it locates.  Offline machines will have their fields marked &#8220;Unavailable&#8221;</p>
<p>Computername: Name<br />
Status: Retrieved<br />
Key: \Path\Name<br />
ImagePath: Ltr:\PathValue\Executable Argument(s)</p>
<p><em>Usage</em><br />
You can specify a collection of computers on the command line to interrogate, you can get-content from a text file, or you can pipe objects in that have name/computername parameters.  There is an optional parameter to turn progress bars off (-progress &#8220;No&#8221;), which is used by my parallel wrapper.  If you do not include any arguments, it assumes the computername environment variable on the host running the script and only runs locally.</p>
<p><code>.\Get-SVCPath.ps1 computer1,computer2,computer3<br />
.\Get-SVCPath.ps1 (Get-Content textfile)<br />
Get-ADComputer -filter * | .\Get-SVCPath.ps1</code></p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008000;">#GET-SVCpath.ps1</span>
<span style="color: #000000;">&#91;</span>cmdletbinding<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #0000FF;">Param</span> <span style="color: #000000;">&#40;</span> <span style="color: #008000;">#Define a Mandatory name input</span>
	<span style="color: #000000;">&#91;</span>Parameter<span style="color: #000000;">&#40;</span>
	ValueFromPipeline<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>
	ValueFromPipelinebyPropertyName<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span> 
	Position<span style="color: pink;">=</span><span style="color: #804000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #000000;">&#91;</span>Alias<span style="color: #000000;">&#40;</span><span style="color: #800000;">'Computer'</span><span style="color: pink;">,</span> <span style="color: #800000;">'ComputerName'</span><span style="color: pink;">,</span> <span style="color: #800000;">'Server'</span><span style="color: pink;">,</span> <span style="color: #800000;">'__ServerName'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
		<span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$name</span> <span style="color: pink;">=</span> <span style="color: #800080;">$ENV</span>:Computername<span style="color: pink;">,</span>
	<span style="color: #000000;">&#91;</span>Parameter<span style="color: #000000;">&#40;</span>Position<span style="color: pink;">=</span><span style="color: #804000;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
		<span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$progress</span> <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Yes&quot;</span>
	<span style="color: #000000;">&#41;</span> <span style="color: #008000;">#End Param</span>
&nbsp;
Process
<span style="color: #000000;">&#123;</span> <span style="color: #008000;">#Process Each object on Pipeline</span>
	<span style="color: #0000FF;">ForEach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$computer</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$name</span><span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span> <span style="color: #008000;">#ForEach for singular or arrayed input on the shell</span>
	  <span style="color: #008000;">#Try to get SVC Paths from $computer</span>
	<span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #008080; font-style: italic;">-Completed</span> <span style="color: #008000;">#clear progress bars inherited from the pipeline</span>
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$progress</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Yes&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-Id</span> <span style="color: #804000;">1</span> <span style="color: #008080; font-style: italic;">-Activity</span> <span style="color: #800000;">&quot;Getting keys for $computer&quot;</span> <span style="color: #008080; font-style: italic;">-Status</span> <span style="color: #800000;">&quot;Connecting...&quot;</span><span style="color: #000000;">&#125;</span>
	<span style="color: #800080;">$result</span> <span style="color: pink;">=</span> REG QUERY <span style="color: #800000;">&quot;\\$computer\HKLM\SYSTEM\CurrentControlSet\Services&quot;</span> <span style="color: pink;">/</span>v ImagePath <span style="color: pink;">/</span>s <span style="color: #804000;">2</span><span style="color: pink;">&gt;&amp;</span><span style="color: #804000;">1</span>
	<span style="color: #008000;">#Error output from this command doesn't catch, so we need to test for it...</span>
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: #FF0000;">-like</span> <span style="color: #800000;">&quot;*ERROR*&quot;</span> <span style="color: #FF0000;">-or</span> <span style="color: #800080;">$result</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: #FF0000;">-like</span> <span style="color: #800000;">&quot;*Denied*&quot;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#123;</span> <span style="color: #008000;">#Only evals true when return from reg is exception</span>
		<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$progress</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Yes&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-Id</span> <span style="color: #804000;">1</span> <span style="color: #008080; font-style: italic;">-Activity</span> <span style="color: #800000;">&quot;Getting keys for $computer&quot;</span> <span style="color: #008080; font-style: italic;">-Status</span> <span style="color: #800000;">&quot;Connection Failed&quot;</span><span style="color: #000000;">&#125;</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> <span style="color: #008080; font-style: italic;">-TypeName</span> PSObject
		<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> ComputerName <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800080;">$computer</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> Status <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800000;">&quot;REG Failed&quot;</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> Key <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800000;">&quot;Unavailable&quot;</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> ImagePath <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800000;">&quot;Unavailable&quot;</span>
		<span style="color: #000000;">&#91;</span><span style="color: #008080;">array</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$collection</span> <span style="color: pink;">+=</span> <span style="color: #800080;">$obj</span>
		<span style="color: #000000;">&#125;</span>	
	<span style="color: #0000FF;">else</span>
		<span style="color: #000000;">&#123;</span>
		<span style="color: #008000;">#Clean up the format of the results array</span>
		<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$progress</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Yes&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-Id</span> <span style="color: #804000;">1</span> <span style="color: #008080; font-style: italic;">-Activity</span> <span style="color: #800000;">&quot;Getting keys for $computer&quot;</span> <span style="color: #008080; font-style: italic;">-Status</span> <span style="color: #800000;">&quot;Connected&quot;</span><span style="color: #000000;">&#125;</span>
		<span style="color: #800080;">$result</span> <span style="color: pink;">=</span> <span style="color: #800080;">$result</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span>..<span style="color: #000000;">&#40;</span><span style="color: #800080;">$result</span>.length <span style="color: pink;">-</span><span style="color: #804000;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: #008000;">#remove last (blank line and REG Summary)</span>
		<span style="color: #800080;">$result</span> <span style="color: pink;">=</span> <span style="color: #800080;">$result</span> <span style="color: pink;">|</span> <span style="color: pink;">?</span> <span style="color: #000000;">&#123;</span><span style="color: #000080;">$_</span> <span style="color: #FF0000;">-ne</span> <span style="color: #800000;">&quot;&quot;</span><span style="color: #000000;">&#125;</span> <span style="color: #008000;">#Removes Blank Lines</span>
		<span style="color: #800080;">$count</span> <span style="color: pink;">=</span> <span style="color: #804000;">0</span>
		<span style="color: #0000FF;">While</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$count</span> <span style="color: #FF0000;">-lt</span> <span style="color: #800080;">$result</span>.length<span style="color: #000000;">&#41;</span>
			<span style="color: #000000;">&#123;</span>
 			<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$progress</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Yes&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-Id</span> <span style="color: #804000;">2</span> <span style="color: #008080; font-style: italic;">-Activity</span> <span style="color: #800000;">&quot;Processing keys...&quot;</span> <span style="color: #008080; font-style: italic;">-Status</span> <span style="color: #800000;">&quot;Formatting $computer\$($result[$count])&quot;</span><span style="color: #000000;">&#125;</span>
			<span style="color: #800080;">$obj</span> <span style="color: pink;">=</span> <span style="color: #008080; font-weight: bold;">New-Object</span> <span style="color: #008080; font-style: italic;">-Typename</span> PSObject
			<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-Membertype</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> ComputerName <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800080;">$computer</span>
			<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> Status <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800000;">&quot;Retrieved&quot;</span>
			<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> Key <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800080;">$result</span><span style="color: #000000;">&#91;</span><span style="color: #800080;">$count</span><span style="color: #000000;">&#93;</span>
			<span style="color: #800080;">$pathvalue</span> <span style="color: pink;">=</span> $<span style="color: #000000;">&#40;</span><span style="color: #800080;">$result</span><span style="color: #000000;">&#91;</span><span style="color: #800080;">$count</span><span style="color: pink;">+</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span>.Split<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">11</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">#split ImagePath return</span>
			<span style="color: #800080;">$pathvalue</span> <span style="color: pink;">=</span> <span style="color: #800080;">$pathvalue</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">10</span><span style="color: #000000;">&#93;</span>.Trim<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">#Trim out white space, left with just value data</span>
			<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> ImagePath <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800080;">$pathvalue</span>
&nbsp;
			<span style="color: #000000;">&#91;</span><span style="color: #008080;">array</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$collection</span> <span style="color: pink;">+=</span> <span style="color: #800080;">$obj</span>
&nbsp;
			<span style="color: #800080;">$count</span> <span style="color: pink;">=</span> <span style="color: #800080;">$count</span> <span style="color: pink;">+</span> <span style="color: #804000;">2</span>
			<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#End While</span>
		<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#End Else</span>
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$progress</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Yes&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-Id</span> <span style="color: #804000;">2</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #008080; font-style: italic;">-Completed</span><span style="color: #000000;">&#125;</span>
	<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$collection</span>
	<span style="color: #800080;">$collection</span> <span style="color: pink;">=</span> <span style="color: #800080;">$null</span> <span style="color: #008000;">#reset collection</span>
	<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#End ForEach</span>
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$progress</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Yes&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-Id</span> <span style="color: #804000;">1</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #008080; font-style: italic;">-Completed</span><span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#End Process</span></pre></td></tr></table></div>

<p><strong>.\Find-BADSVCPath.ps1</strong><br />
This script inspects the objects that result from .\Get-SVCPath for unquoted/improperly quoted service.  It will amend the object and mark it &#8220;Badkey = Yes&#8221; or &#8220;BadKey = No&#8221;.  If a bad key is detected, it will update the &#8220;FixedKey&#8221; field with the properly quoted path value.  This script accepts its input from the pipeline.  Values marked unavailable (by offline) are passed through the pipeline.</p>
<p><em>Useage</em></p>
<p>From the pipeline only:<br />
<em>.\Get-SVCPath.ps1 | .\Find-BADSVCPath.ps1<br />
-or<br />
$Var = .\Get-SVCPath.ps1<br />
$Var | .\Find-BADSVCPath.ps1</em></p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008000;">#Find-BADSVCPath.ps1</span>
<span style="color: #000000;">&#91;</span>cmdletbinding<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #0000FF;">Param</span> <span style="color: #000000;">&#40;</span> <span style="color: #008000;">#Define a Mandatory input</span>
	<span style="color: #000000;">&#91;</span>Parameter<span style="color: #000000;">&#40;</span>
	 ValueFromPipeline<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>
	 ValueFromPipelinebyPropertyName<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>
	 Position<span style="color: pink;">=</span><span style="color: #804000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: #800080;">$obj</span>
	<span style="color: #000000;">&#41;</span> <span style="color: #008000;">#End Param</span>
&nbsp;
Process
<span style="color: #000000;">&#123;</span> <span style="color: #008000;">#Process Each object on Pipeline</span>
	<span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-Activity</span> <span style="color: #800000;">&quot;Checking for bad keys: &quot;</span> <span style="color: #008080; font-style: italic;">-status</span> <span style="color: #800000;">&quot;Checking $($obj.computername)\$($obj.key)&quot;</span>
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$obj</span>.key <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Unavailable&quot;</span><span style="color: #000000;">&#41;</span>
	<span style="color: #000000;">&#123;</span> <span style="color: #008000;">#The keys were unavailable, I just append object and continue</span>
	<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> –MemberType NoteProperty –Name BadKey <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800000;">&quot;Unknown&quot;</span>
	<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> –MemberType NoteProperty –Name FixedKey <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800000;">&quot;Can't Fix&quot;</span>
	<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span>
	<span style="color: #800080;">$obj</span> <span style="color: pink;">=</span> <span style="color: #800080;">$nul</span> <span style="color: #008000;">#clear $obj</span>
&nbsp;
	<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end if</span>
	<span style="color: #0000FF;">else</span>
	<span style="color: #000000;">&#123;</span>
	<span style="color: #008000;">#If we get here, I have a key to examine and fix</span>
	<span style="color: #008000;">#We're looking for keys with spaces in the path and unquoted</span>
	<span style="color: #008000;">#the Path is always the first thing on the line, even with embedded arguments</span>
	<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$obj</span>.ImagePath
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.StartsWith<span style="color: #000000;">&#40;</span><span style="color: #800000;">'&quot;'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #008000;">#Doesn't start with a quote</span>
		<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: pink;">!</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.StartsWith<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;\??&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #008000;">#Some MS Services start with this but don't appear vulnerable</span>
			<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #008000;">#If contains space</span>
				<span style="color: #008000;">#when I get here, I can either have a good path with arguments, or a bad path</span>
				<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;-&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF0000;">-or</span> <span style="color: #800080;">$examine</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot;/&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span> <span style="color: #008000;">#found arguments, might still be bad</span>
					<span style="color: #008000;">#split out arguments</span>
					<span style="color: #800080;">$split</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; -&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
					<span style="color: #800080;">$split</span> <span style="color: pink;">=</span> <span style="color: #800080;">$split</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; /&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
					<span style="color: #800080;">$newpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$split</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span>.Trim<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">#Path minus flagged args</span>
					<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$newpath</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
						<span style="color: #008000;">#check for unflagged argument</span>
						<span style="color: #800080;">$eval</span> <span style="color: pink;">=</span> <span style="color: #800080;">$newpath</span> <span style="color: #FF0000;">-Replace</span> <span style="color: #800000;">'&quot;.*&quot;'</span><span style="color: pink;">,</span> <span style="color: #800000;">''</span> <span style="color: #008000;">#drop all quoted arguments</span>
						<span style="color: #800080;">$detunflagged</span> <span style="color: pink;">=</span> <span style="color: #800080;">$eval</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot;\&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span> <span style="color: #008000;">#split on foler delim</span>
							<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$detunflagged</span><span style="color: #000000;">&#91;</span><span style="color: pink;">-</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #008000;">#last elem is executable and any unquoted args</span>
								<span style="color: #800080;">$fixarg</span> <span style="color: pink;">=</span> <span style="color: #800080;">$detunflagged</span><span style="color: #000000;">&#91;</span><span style="color: pink;">-</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; &quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span> <span style="color: #008000;">#split out args</span>
								<span style="color: #800080;">$quoteexe</span> <span style="color: pink;">=</span> <span style="color: #800080;">$fixarg</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">+</span> <span style="color: #800000;">'&quot;'</span> <span style="color: #008000;">#quote that EXE and insert it back</span>
								<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.Replace<span style="color: #000000;">&#40;</span><span style="color: #800080;">$fixarg</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span><span style="color: pink;">,</span> <span style="color: #800080;">$quoteexe</span><span style="color: #000000;">&#41;</span>
								<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.Replace<span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span><span style="color: pink;">,</span> <span style="color: #800000;">'&quot;'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$examine</span><span style="color: #000000;">&#41;</span>
								<span style="color: #800080;">$badpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$true</span>
							<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end detect unflagged</span>
						<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.Replace<span style="color: #000000;">&#40;</span><span style="color: #800080;">$newpath</span><span style="color: pink;">,</span> <span style="color: #800000;">'&quot;'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$newpath</span> <span style="color: pink;">+</span> <span style="color: #800000;">'&quot;'</span><span style="color: #000000;">&#41;</span>
						<span style="color: #800080;">$badpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$true</span>
					<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end if newpath</span>
					<span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span> <span style="color: #008000;">#if newpath doesn't have spaces, it was just the argument tripping the check</span>
						<span style="color: #800080;">$badpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$false</span>
					<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end else</span>
				<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end if parameter</span>
				<span style="color: #0000FF;">else</span>
					<span style="color: #000000;">&#123;</span><span style="color: #008000;">#check for unflagged argument</span>
					<span style="color: #800080;">$eval</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span> <span style="color: #FF0000;">-Replace</span> <span style="color: #800000;">'&quot;.*&quot;'</span><span style="color: pink;">,</span> <span style="color: #800000;">''</span> <span style="color: #008000;">#drop all quoted arguments</span>
					<span style="color: #800080;">$detunflagged</span> <span style="color: pink;">=</span> <span style="color: #800080;">$eval</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot;\&quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
					<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$detunflagged</span><span style="color: #000000;">&#91;</span><span style="color: pink;">-</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span>.contains<span style="color: #000000;">&#40;</span><span style="color: #800000;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
						<span style="color: #800080;">$fixarg</span> <span style="color: pink;">=</span> <span style="color: #800080;">$detunflagged</span><span style="color: #000000;">&#91;</span><span style="color: pink;">-</span><span style="color: #804000;">1</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">-</span>split <span style="color: #800000;">&quot; &quot;</span><span style="color: pink;">,</span> <span style="color: #804000;">0</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;simplematch&quot;</span>
						<span style="color: #800080;">$quoteexe</span> <span style="color: pink;">=</span> <span style="color: #800080;">$fixarg</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span> <span style="color: pink;">+</span> <span style="color: #800000;">'&quot;'</span>
						<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.Replace<span style="color: #000000;">&#40;</span><span style="color: #800080;">$fixarg</span><span style="color: #000000;">&#91;</span><span style="color: #804000;">0</span><span style="color: #000000;">&#93;</span><span style="color: pink;">,</span> <span style="color: #800080;">$quoteexe</span><span style="color: #000000;">&#41;</span>
						<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.Replace<span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span><span style="color: pink;">,</span> <span style="color: #800000;">'&quot;'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$examine</span><span style="color: #000000;">&#41;</span>
						<span style="color: #800080;">$badpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$true</span>
					<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end detect unflagged</span>
					<span style="color: #0000FF;">else</span>
					<span style="color: #000000;">&#123;</span><span style="color: #008000;">#just a bad path</span>
						<span style="color: #008000;">#surround path in quotes</span>
						<span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span><span style="color: pink;">,</span> <span style="color: #800000;">'&quot;'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$examine</span> <span style="color: pink;">+</span> <span style="color: #800000;">'&quot;'</span><span style="color: #000000;">&#41;</span>
						<span style="color: #800080;">$badpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$true</span>
					<span style="color: #000000;">&#125;</span><span style="color: #008000;">#end else</span>
				<span style="color: #000000;">&#125;</span><span style="color: #008000;">#end else</span>
			<span style="color: #000000;">&#125;</span><span style="color: #008000;">#end if contains space</span>
			<span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span> <span style="color: #800080;">$badpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$false</span> <span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end if starts with \??</span>
		<span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span> <span style="color: #800080;">$badpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$false</span> <span style="color: #000000;">&#125;</span>
	<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end if startswith quote</span>
	<span style="color: #0000FF;">else</span> <span style="color: #000000;">&#123;</span> <span style="color: #800080;">$badpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$false</span> <span style="color: #000000;">&#125;</span>
	<span style="color: #008000;">#Update Objects</span>
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$badpath</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800080;">$false</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> BadKey <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800000;">&quot;No&quot;</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> FixedKey <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800000;">&quot;N/A&quot;</span>
		<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">=</span> <span style="color: #800080;">$nul</span> <span style="color: #008000;">#clear $obj</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$badpath</span> <span style="color: #FF0000;">-eq</span> <span style="color: #800080;">$true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> BadKey <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800000;">&quot;Yes&quot;</span>
		<span style="color: #008000;">#sometimes we catch doublequotes</span>
		<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$examine</span>.endswith<span style="color: #000000;">&#40;</span><span style="color: #800000;">'&quot;&quot;'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span> <span style="color: #800080;">$examine</span> <span style="color: pink;">=</span> <span style="color: #800080;">$examine</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800000;">'&quot;&quot;'</span><span style="color: pink;">,</span><span style="color: #800000;">'&quot;'</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#125;</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">|</span> <span style="color: #008080; font-weight: bold;">Add-Member</span> <span style="color: #008080; font-style: italic;">-MemberType</span> NoteProperty <span style="color: #008080; font-style: italic;">-Name</span> FixedKey <span style="color: #008080; font-style: italic;">-Value</span> <span style="color: #800080;">$examine</span>
		<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span>
		<span style="color: #800080;">$obj</span> <span style="color: pink;">=</span> <span style="color: #800080;">$nul</span> <span style="color: #008000;">#clear $obj</span>
		<span style="color: #000000;">&#125;</span>	
	<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#end top else</span>
<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#End Process</span></pre></td></tr></table></div>

<p><strong>.\Fix-BADSVCPath.ps1</strong><br />
This script accepts input on the pipeline from .\Find-BADSVCPath. The &#8220;FixedKey&#8221; value from the object is read, properly escaped, and fed to a forced REG ADD.  It then updates the object status to &#8220;Fixed.&#8221;    Values not marked bad are simply passed through the pipeline.</p>
<p><em>Useage</em></p>
<p>From the Pipeline only:<br />
<code>.\Get-SVCPath.ps1 | .\Find-BADSVCPath.ps1 | .\Fix-BADSVCPath.ps1<br />
-or-<br />
.\Get-SVCPath.ps1 | .\Find-BADSVCPath.ps1 | Export-CSV result.csv<br />
Import-CSV result.csv | .\Fix-BADSVCPath.ps1<br />
</code></p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008000;">#Fix-BADSVCPath.ps1</span>
<span style="color: #000000;">&#91;</span>cmdletbinding<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #0000FF;">Param</span> <span style="color: #000000;">&#40;</span> <span style="color: #008000;">#Define a Mandatory input</span>
	<span style="color: #000000;">&#91;</span>Parameter<span style="color: #000000;">&#40;</span>
	 ValueFromPipeline<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>
	 ValueFromPipelinebyPropertyName<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>
	 Position<span style="color: pink;">=</span><span style="color: #804000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span> <span style="color: #800080;">$obj</span>
	<span style="color: #000000;">&#41;</span> <span style="color: #008000;">#End Param</span>
&nbsp;
Process
<span style="color: #000000;">&#123;</span> <span style="color: #008000;">#Process Each object on Pipeline</span>
	<span style="color: #0000FF;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$obj</span>.badkey <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Yes&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
		<span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-Activity</span> <span style="color: #800000;">&quot;Fixing $($obj.computername)\$($obj.key)&quot;</span> <span style="color: #008080; font-style: italic;">-Status</span> <span style="color: #800000;">&quot;Working...&quot;</span>
		<span style="color: #800080;">$regpath</span> <span style="color: pink;">=</span> <span style="color: #800080;">$obj</span>.Fixedkey
		<span style="color: #800080;">$regpath</span> <span style="color: pink;">=</span> <span style="color: #800000;">'&quot;'</span> <span style="color: pink;">+</span> <span style="color: #800080;">$regpath</span>.replace<span style="color: #000000;">&#40;</span><span style="color: #800000;">'&quot;'</span><span style="color: pink;">,</span> <span style="color: #800000;">'\&quot;'</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">+</span> <span style="color: #800000;">'&quot;'</span> <span style="color: pink;">+</span> <span style="color: #800000;">' /f'</span>
		<span style="color: #800080;">$obj</span>.status <span style="color: pink;">=</span> <span style="color: #800000;">&quot;Fixed&quot;</span>
		REG ADD <span style="color: #800000;">&quot;\\$($obj.computername)\$($obj.key)&quot;</span> <span style="color: pink;">/</span>v ImagePath <span style="color: pink;">/</span>t REG_EXPAND_SZ <span style="color: pink;">/</span>d <span style="color: #800080;">$regpath</span>
		<span style="color: #000000;">&#125;</span>
	<span style="color: #008080; font-weight: bold;">Write-Output</span> <span style="color: #800080;">$obj</span>
&nbsp;
<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#End Process</span></pre></td></tr></table></div>

<p><strong>.\WrapParallel.ps1</strong><br />
This script is a parallel wrapped for the .\Get-SVCTag script, which is the longest running element of the workflow due to network constraints.  This wrapper is configurable, and can accept input either from the pipeline or from the shell directly.  The script is throttled by checking for configured number of running jobs, and sleeping for the configured interval.  It&#8217;s not a &#8220;true&#8221; throttle, but its close enough.  The Progress bar reflects which machine was last sent, the number of running jobs, and the number of jobs detected complete in the background.  This script could be used to wrap other scripts in parallel if you remove the &#8220;-progress No&#8221; argument from its start-job call.  It waits until all objects are jobs are completed before feeding the pipeline.</p>
<p><em>Parameters</em><br />
-scriptpath (Mandatory) The path to the script you want wrap parallel.  Can be local to the path of execution and dot sourced.</p>
<p>-name (Mandatory) Can be fed either directly, via (Get-Content textfile) or from the pipeline</p>
<p>-throttle (optional) Defaults to 10.  When the script encounters more than 10 jobs who are state running, it sleeps for the specified timer before sending another job.  It checks before each job is sent.</p>
<p>-sleep (optional) Defaults to 30 seconds.  When the throttle limit is hit, this parameter defines the sleep-interval before sending another job.</p>
<p><em>Useage</em><br />
<code><br />
.\WrapParallel.ps1 -scriptpath .\Get-SVCPath.ps1 -name (Get-Content textfile) -throttle 20 | .\Find.....<br />
-or-<br />
Get-ADComputer -filter * | .\WrapParallel.ps1 -scriptpath .\Get-SVCPath.ps1 -sleep 60 | .\Find.....<br />
</code></p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="powershell" style="font-family:monospace;"><span style="color: #008000;">###This is a parallel wrapper for script processes</span>
&nbsp;
<span style="color: #000000;">&#91;</span>cmdletbinding<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
	<span style="color: #0000FF;">Param</span> <span style="color: #000000;">&#40;</span> <span style="color: #008000;">#Define a Mandatory name input</span>
	<span style="color: #000000;">&#91;</span>Parameter<span style="color: #000000;">&#40;</span>ValueFromPipeline<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>ValueFromPipelinebyPropertyName<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: pink;">,</span>Position<span style="color: pink;">=</span><span style="color: #804000;">0</span><span style="color: pink;">,</span>Mandatory<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
		<span style="color: #000000;">&#91;</span>Alias<span style="color: #000000;">&#40;</span><span style="color: #800000;">'Computer'</span><span style="color: pink;">,</span> <span style="color: #800000;">'ComputerName'</span><span style="color: pink;">,</span> <span style="color: #800000;">'Server'</span><span style="color: pink;">,</span> <span style="color: #800000;">'__ServerName'</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
		<span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$name</span> <span style="color: pink;">=</span> <span style="color: #800080;">$ENV</span>:Computername<span style="color: pink;">,</span>
	<span style="color: #000000;">&#91;</span>Parameter<span style="color: #000000;">&#40;</span>Mandatory<span style="color: pink;">=</span><span style="color: #800080;">$true</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
		<span style="color: #000000;">&#91;</span><span style="color: #008080;">string</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$scriptpath</span><span style="color: pink;">,</span> 
	<span style="color: #000000;">&#91;</span><span style="color: #008080;">int</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$throttle</span> <span style="color: pink;">=</span> <span style="color: #804000;">10</span><span style="color: pink;">,</span> 
	<span style="color: #000000;">&#91;</span><span style="color: #008080;">int</span><span style="color: #000000;">&#93;</span><span style="color: #800080;">$sleep</span> <span style="color: pink;">=</span> <span style="color: #804000;">30</span>
	<span style="color: #000000;">&#41;</span> <span style="color: #008000;">#End Param</span>
&nbsp;
&nbsp;
<span style="color: #008000;">## Start Parallel Processing:</span>
<span style="color: #800080;">$jobcount</span> <span style="color: pink;">=</span> <span style="color: #804000;">0</span>
<span style="color: #800080;">$completecount</span> <span style="color: pink;">=</span> <span style="color: #804000;">0</span>
<span style="color: #800080;">$totaljobs</span> <span style="color: pink;">=</span> <span style="color: #800080;">$name</span>.count
<span style="color: #0000FF;">ForEach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$pc</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$name</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #0000FF;">If</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$jobcount</span> <span style="color: #FF0000;">-gt</span> <span style="color: #800080;">$throttle</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><span style="color: #008080; font-weight: bold;">Start-Sleep</span> <span style="color: #008080; font-style: italic;">-Seconds</span> <span style="color: #800080;">$sleep</span><span style="color: #000000;">&#125;</span>
&nbsp;
		Start<span style="color: pink;">-</span>Job <span style="color: #008080; font-style: italic;">-filepath</span> <span style="color: #800080;">$scriptpath</span> <span style="color: #008080; font-style: italic;">-ArgumentList</span> <span style="color: #800000;">&quot;$pc&quot;</span><span style="color: pink;">,</span> <span style="color: #800000;">&quot;-progress no&quot;</span> <span style="color: pink;">&gt;</span> <span style="color: #800080;">$nul</span>
&nbsp;
			<span style="color: #800080;">$jobs</span> <span style="color: pink;">=</span> Get<span style="color: pink;">-</span>Job <span style="color: pink;">|</span> <span style="color: #0000FF;">Where</span> <span style="color: #000000;">&#123;</span><span style="color: #000080;">$_</span>.state <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Running&quot;</span><span style="color: #000000;">&#125;</span>
			<span style="color: #800080;">$jobcount</span> <span style="color: pink;">=</span> <span style="color: #800080;">$jobs</span>.count
			<span style="color: #800080;">$jobs</span> <span style="color: pink;">=</span> Get<span style="color: pink;">-</span>Job <span style="color: pink;">|</span> <span style="color: #0000FF;">Where</span> <span style="color: #000000;">&#123;</span><span style="color: #000080;">$_</span>.state <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Completed&quot;</span><span style="color: #000000;">&#125;</span>
			<span style="color: #800080;">$completecount</span> <span style="color: pink;">=</span> <span style="color: #800080;">$jobs</span>.count
&nbsp;
			<span style="color: #800080;">$sentjobs</span> <span style="color: pink;">=</span> <span style="color: #000000;">&#40;</span>Get<span style="color: pink;">-</span>Job<span style="color: #000000;">&#41;</span>.count
&nbsp;
			<span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-id</span> <span style="color: #804000;">1</span> <span style="color: #008080; font-style: italic;">-Activity</span> <span style="color: #800000;">&quot;Sending Job to $pc&quot;</span> <span style="color: #008080; font-style: italic;">-Status</span> <span style="color: #800000;">&quot;Sent $sentjobs of $totaljobs ($jobcount jobs 'Running') ($completecount jobs 'Completed')&quot;</span> <span style="color: #008080; font-style: italic;">-PercentComplete</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$sentjobs</span><span style="color: #000000;">&#41;</span> <span style="color: pink;">/</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$totaljobs</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: pink;">*</span><span style="color: #804000;">100</span><span style="color: #000000;">&#41;</span>
			<span style="color: #000000;">&#125;</span> <span style="color: #008000;">#End ForEach</span>
&nbsp;
<span style="color: #008000;">#Wait for Jobs to finish</span>
<span style="color: #800080;">$jobcount</span> <span style="color: pink;">=</span> <span style="color: #800080;">$totaljobs</span>
<span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-id</span> <span style="color: #804000;">1</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #008080; font-style: italic;">-completed</span>
<span style="color: #0000FF;">While</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$jobcount</span> <span style="color: #FF0000;">-ne</span> <span style="color: #800080;">$null</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
<span style="color: #800080;">$countwait</span> <span style="color: pink;">=</span> <span style="color: #800080;">$totaljobs</span> <span style="color: pink;">-</span> <span style="color: #800080;">$jobcount</span>
<span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-id</span> <span style="color: #804000;">1</span> <span style="color: #008080; font-style: italic;">-Activity</span> <span style="color: #800000;">&quot;Jobs are still running...&quot;</span> <span style="color: #008080; font-style: italic;">-Status</span> <span style="color: #800000;">&quot;Waiting for $jobcount jobs&quot;</span> <span style="color: #008080; font-style: italic;">-PercentComplete</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #800080;">$countwait</span> <span style="color: pink;">/</span> <span style="color: #800080;">$totaljobs</span><span style="color: #000000;">&#41;</span><span style="color: pink;">*</span><span style="color: #804000;">100</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$jobs</span> <span style="color: pink;">=</span> Get<span style="color: pink;">-</span>Job <span style="color: pink;">|</span> <span style="color: #0000FF;">Where</span> <span style="color: #000000;">&#123;</span><span style="color: #000080;">$_</span>.state <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Running&quot;</span><span style="color: #000000;">&#125;</span>
<span style="color: #800080;">$jobcount</span> <span style="color: pink;">=</span> <span style="color: #800080;">$jobs</span>.Count
<span style="color: #008080; font-weight: bold;">Start-Sleep</span> <span style="color: #008080; font-style: italic;">-Seconds</span> <span style="color: #804000;">3</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-weight: bold;">Start-Sleep</span> <span style="color: #008080; font-style: italic;">-Seconds</span> <span style="color: #804000;">3</span>
&nbsp;
<span style="color: #008000;">#Get-Data</span>
<span style="color: #800080;">$Global</span>:TotalReport <span style="color: pink;">=</span> <span style="color: pink;">@</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #800080;">$jobs</span> <span style="color: pink;">=</span> Get<span style="color: pink;">-</span>Job <span style="color: pink;">|</span> <span style="color: #0000FF;">Where</span> <span style="color: #000000;">&#123;</span><span style="color: #000080;">$_</span>.state <span style="color: #FF0000;">-eq</span> <span style="color: #800000;">&quot;Completed&quot;</span><span style="color: #000000;">&#125;</span>
<span style="color: #0000FF;">ForEach</span> <span style="color: #000000;">&#40;</span><span style="color: #800080;">$job</span> <span style="color: #0000FF;">in</span> <span style="color: #800080;">$jobs</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #800080;">$result</span> <span style="color: pink;">=</span> Receive<span style="color: pink;">-</span>Job <span style="color: #800080;">$job</span>.id <span style="color: pink;">-</span>keep
	<span style="color: #800080;">$Global</span>:TotalReport <span style="color: pink;">+=</span> <span style="color: #800080;">$result</span>
	<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-weight: bold;">Write-Progress</span> <span style="color: #008080; font-style: italic;">-id</span> <span style="color: #804000;">1</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #800000;">&quot;Done&quot;</span> <span style="color: #008080; font-style: italic;">-completed</span>
&nbsp;
<span style="color: #800080;">$Global</span>:TotalReport
&nbsp;
<span style="color: #008000;">#Clean up jobs</span>
&nbsp;
Get<span style="color: pink;">-</span>Job <span style="color: pink;">|</span> Remove<span style="color: pink;">-</span>Job <span style="color: #008080; font-style: italic;">-force</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.ryanandjeffshow.com/blog/2013/04/11/powershell-fixing-unquoted-service-paths-complete/feed/</wfw:commentRss>
		<slash:comments>