<?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>Michael Phillips Blog &#187; Updates</title>
	<atom:link href="http://nukeitmike.com/blog/tag/updates/feed" rel="self" type="application/rss+xml" />
	<link>http://nukeitmike.com/blog</link>
	<description>My place to speak about things</description>
	<lastBuildDate>Thu, 29 Jul 2010 20:57:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Follow up to the DPM recovery point expiration issues</title>
		<link>http://nukeitmike.com/blog/2009/08/07/follow-up-to-the-dpm-recovery-point-expiration-issues/</link>
		<comments>http://nukeitmike.com/blog/2009/08/07/follow-up-to-the-dpm-recovery-point-expiration-issues/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 13:15:58 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Data Protection Manager]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[System Center]]></category>
		<category><![CDATA[DPM]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://nukeitmike.com/blog/2009/08/07/follow-up-to-the-dpm-recovery-point-expiration-issues/</guid>
		<description><![CDATA[Previously, I blogged about issues I was having where old recovery points were not being expired/removed from my DPM servers.&#160; I had to open a ticket with Microsoft, and worked with them to determine the cause, and since then, they have released a fix. The fix that Microsoft developed is here: http://www.microsoft.com/downloads/details.aspx?FamilyID=aee949aa-d3e7-4b0f-b718-00b7c20f1257&#38;displayLang=en A few people [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, I blogged about issues I was having where old recovery points were not being expired/removed from my DPM servers.&#160; I had to open a ticket with Microsoft, and worked with them to determine the cause, and since then, they have released a fix.</p>
<p>The fix that Microsoft developed is here: <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=aee949aa-d3e7-4b0f-b718-00b7c20f1257&amp;displayLang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=aee949aa-d3e7-4b0f-b718-00b7c20f1257&amp;displayLang=en</a></p>
<p>A few people have asked for the PowerShell script “show-pruneshadowcopies.ps1” that Microsoft provided and I mentioned in my previous post <a href="http://nukeitmike.com/blog/2009/04/12/dpm-does-not-remove-expired-recovery-points/" target="_blank">(here)</a>.&#160; The script looks like this:</p>
<blockquote><p>#displays all RP for data sources and shows which RP&#8217;s would be deleted by the regular pruneshadowcopies.ps1      <br /># Outputs to a logfile:&#160; C:\Program Files\Microsoft DPM\DPM\bin\SHOW-PRUNESHADOWCOPIES.LOG </p>
<p>#Author&#160;&#160;&#160; : Mike J     <br />#Date&#160;&#160;&#160; : 02/24/2009      <br />$version=&quot;V1.0&quot; </p>
<p>$date=get-date     <br />$logfile=&quot;SHOW-PRUNESHADOWCOPIES.LOG.txt&quot; </p>
<p>function GetDistinctDays([Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.ProtectionGroup] $group,      <br />[Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.Datasource] $ds)      <br />{&#160;&#160;&#160; <br />&#160;&#160;&#160; if($group.ProtectionType -eq [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.ProtectionType]::DiskToTape)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 0      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; $scheduleList = get-policyschedule -ProtectionGroup $group -ShortTerm      <br />&#160;&#160;&#160; if($ds -is [Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.FileSystem.FsDataSource])      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $jobType = [Microsoft.Internal.EnterpriseStorage.Dls.Intent.JobTypeType]::ShadowCopy      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; else      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $jobType = [Microsoft.Internal.EnterpriseStorage.Dls.Intent.JobTypeType]::FullReplicationForApplication      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if($ds.ProtectionType -eq [Microsoft.Internal.EnterpriseStorage.Dls.Intent.ReplicaProtectionType]::ProtectFromDPM)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 2      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; write-host&#160;&#160; &quot;Look for jobType $jobType&quot; </p>
<p>&#160;&#160;&#160; foreach($schedule in $scheduleList)     <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host(&quot;schedule jobType {0}&quot; -f $schedule.JobType)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if($schedule.JobType -eq $jobType)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return [Math]::Ceiling(($schedule.WeekDays.Length * $ds.RecoveryRangeinDays) / 7)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160; return 0     <br />} </p>
<p>function IsShadowCopyExternal($id)     <br />{      <br />&#160;&#160;&#160; $result = $false; </p>
<p>&#160;&#160;&#160; $ctx = New-Object -Typename Microsoft.Internal.EnterpriseStorage.Dls.DB.SqlContext      <br />&#160;&#160;&#160; $ctx.Open() </p>
<p>&#160;&#160;&#160; $cmd = $ctx.CreateCommand()     <br />&#160;&#160;&#160; $cmd.CommandText = &quot;select COUNT(*) from tbl_RM_ShadowCopy where shadowcopyid = &#8216;$id&#8217;&quot;&#160;&#160; <br />&#160;&#160;&#160; write-host $cmd.CommandText      <br />&#160;&#160;&#160; $countObj = $cmd.ExecuteScalar()      <br />&#160;&#160;&#160; write-host $countObj      <br />&#160;&#160;&#160; if ($countObj -eq 0)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $result = $true      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; $cmd.Dispose()      <br />&#160;&#160;&#160; $ctx.Close() </p>
<p>&#160;&#160;&#160; return $result     <br />} </p>
<p>function IsShadowCopyInUse($id)     <br />{      <br />&#160;&#160;&#160; $result = $true; </p>
<p>&#160;&#160;&#160; $ctx = New-Object -Typename Microsoft.Internal.EnterpriseStorage.Dls.DB.SqlContext      <br />&#160;&#160;&#160; $ctx.Open() </p>
<p>&#160;&#160;&#160; $cmd = $ctx.CreateCommand()     <br />&#160;&#160;&#160; $cmd.CommandText = &quot;select ArchiveTaskId, RecoveryJobId from tbl_RM_ShadowCopy where ShadowCopyId = &#8216;$id&#8217;&quot;&#160;&#160; <br />&#160;&#160;&#160; write-host $cmd.CommandText      <br />&#160;&#160;&#160; $reader = $cmd.ExecuteReader()      <br />&#160;&#160;&#160; while($reader.Read())      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ($reader.IsDBNull(0) -and $reader.IsDBNull(1))      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $result = $false      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; $cmd.Dispose()      <br />&#160;&#160;&#160; $ctx.Close() </p>
<p>&#160;&#160;&#160; return $result     <br />} </p>
<p>&quot;**********************************&quot; &gt; $logfile     <br />&quot;Version $version&quot; &gt;&gt; $logfile      <br />get-date &gt;&gt; $logfile </p>
<p>$dpmservername = &amp;&quot;hostname&quot; </p>
<p>$dpmsrv = connect-dpmserver $dpmservername </p>
<p>if (!$dpmsrv)     <br />{      <br />&#160;&#160;&#160; write-host &quot;Unable to connect to $dpmservername&quot;      <br />&#160;&#160;&#160; exit 1      <br />} </p>
<p>write-host $dpmservername     <br />&quot;Selected DPM server = $DPMservername&quot; &gt;&gt; $logfile      <br />$pgList = get-protectiongroup $dpmservername      <br />if (!$pgList)      <br />{      <br />&#160;&#160;&#160; write-host&#160;&#160; &quot;No PGs found&quot;      <br />&#160;&#160;&#160; disconnect-dpmserver $dpmservername      <br />&#160;&#160;&#160; exit 2      <br />} </p>
<p>write-host(&quot;Number of ProtectionGroups = {0}&quot; -f $pgList.Length)     <br />$replicaList = @{}      <br />$latestScDateList = @{} </p>
<p>foreach($pg in $pgList)     <br />{      <br />&#160;&#160;&#160; $dslist = get-datasource $pg      <br />&#160;&#160;&#160; if ($dslist.length -gt 0)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160; write-host(&quot;Number of datasources in this PG = {0}&quot; -f $dslist.length)      <br />&#160;&#160;&#160; (&quot;Number of datasources in this PG = {0}&quot; -f $dslist.length) &gt;&gt; $logfile      <br />&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160; Foreach ($ds in $dslist)      <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160; write-host(&quot;DS NAME=&#160; $ds&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160; (&quot;DS NAME=&#160; $ds&quot;) &gt;&gt;$logfile      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; foreach ($ds in $dslist)      <br />&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $rplist = get-recoverypoint $ds | where { $_.DataLocation -eq &#8216;Disk&#8217; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host(&quot;Number of recovery points for $ds {0}&quot; -f $rplist.length)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; (&quot;Number of recovery points for $ds {0}&quot; -f $rplist.length) &gt;&gt;$logfile&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $countDistinctDays = GetDistinctDays $pg $ds      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host(&quot;Number of days with fulls = $countDistinctDays&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; (&quot;Number of days with fulls = $countDistinctDays&quot;) &gt;&gt;$logfile      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; if($countDistinctDays -eq 0)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host&#160;&#160; &quot;D2T PG. No recovery points to delete&quot;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;D2T PG. No recovery points to delete&quot; &gt;&gt;$logfile       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; continue;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $replicaList[$ds.ReplicaPath] = $ds.RecoveryRangeinDays      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $latestScDateList[$ds.ReplicaPath] = new-object DateTime 0,0      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $lastDayOfRetentionRange = ([DateTime]::UtcNow).AddDays($ds.RecoveryRangeinDays * -1);&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host(&quot;Distinct days to count = {0}. LastDayOfRetentionRange = {1} &quot; -f $countDistinctDays, $lastDayOfRetentionRange)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; (&quot;Distinct days to count = {0}. LastDayOfRetentionRange = {1} &quot; -f $countDistinctDays, $lastDayOfRetentionRange) &gt;&gt;$logfile      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $distinctDays = 0;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $lastDistinctDay = (get-Date).Date      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; $numberOfRecoveryPointsDeleted = 0 </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ($rplist)     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach ($rp in ($rplist | sort-object -property UtcRepresentedPointInTime -descending))      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ($rp)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ($rp.UtcRepresentedPointInTime.Date -lt $lastDistinctDay)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $distinctDays += 1      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $lastDistinctDay = $rp.UtcRepresentedPointInTime.Date      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host(&quot; $ds&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (&quot; $ds&quot;) &gt;&gt;$logfile      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host(&quot;&#160; Recovery Point #$distinctdays RPtime={0}&quot; -f $rp.UtcRepresentedPointInTime)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (&quot;&#160; Recovery Point #$distinctdays RPtime={0}&quot; -f $rp.UtcRepresentedPointInTime) &gt;&gt;$logfile       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (($distinctDays -gt $countDistinctDays) -and ($rp.UtcRepresentedPointInTime -lt $lastDayOfRetentionRange))      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host (&quot;Recovery Point would be deleted ! &#8211; RPtime={0}&quot; -f $rp.UtcRepresentedPointInTime)&#160; -foregroundcolor red      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (&quot;Recovery Point would be deleted ! &#8211; RPtime={0} &lt;&lt;&lt;&lt;&lt;&lt;&lt;&quot; -f $rp.UtcRepresentedPointInTime) &gt;&gt;$logfile      <br />#remove-recoverypoint $rp -ForceDeletion -confirm:$true | out-null      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $numberOfRecoveryPointsDeleted += 1      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host &quot;&#160;&#160;&#160; Recovery point not expired yet&quot;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&#160;&#160;&#160; Recovery point not yet expired&quot; &gt;&gt;$logfile      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host &quot;Got a NULL rp&quot;      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;Got a NULL rp&quot; &gt;&gt;$logfile       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; write-host &quot;Number of RPs that would be deleted = $numberOfRecoveryPointsDeleted&quot;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;Number of RPs that would be deleted = $numberOfRecoveryPointsDeleted&quot; &gt;&gt;$logfile&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }      <br />&#160;&#160;&#160; }      <br />} </p>
<p>disconnect-dpmserver $dpmservername     <br />write-host &quot;Exiting from script&quot; </p>
<p>exit </p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://nukeitmike.com/blog/2009/08/07/follow-up-to-the-dpm-recovery-point-expiration-issues//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just my luck</title>
		<link>http://nukeitmike.com/blog/2009/07/31/just-my-luck/</link>
		<comments>http://nukeitmike.com/blog/2009/07/31/just-my-luck/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 20:26:46 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://nukeitmike.com/blog/2009/07/31/just-my-luck/</guid>
		<description><![CDATA[I haven’t even had my iPhone a week and there is already a major security update: AppleInsider &#124; Apple releases iPhone 3.0.1 software to fix SMS exploit Apple releases iPhone 3.0.1 software to fix SMS exploit By Slash Lane &#160; Responding to a dangerous security exploit unveiled this week, Apple released an update to its [...]]]></description>
			<content:encoded><![CDATA[<p>I haven’t even had my iPhone a week and there is already a major security update:</p>
<blockquote><p>AppleInsider | Apple releases iPhone 3.0.1 software to fix SMS exploit </p>
</blockquote>
<blockquote><p>Apple releases iPhone 3.0.1 software to fix SMS exploit</p>
<p>By <a href="mailto:news@appleinsider.com">Slash Lane</a></p>
<p><a href="http://ad.doubleclick.net/click%3Bh=v8/387b/3/0/%2a/k%3B216115128%3B0-0%3B1%3B27362436%3B4307-300/250%3B32402059/32419935/1%3B%3B%7Eokv%3D%3Bsz%3D300x250%3Bfmzid%3D1546%3Bkw%3Dmain%3Btile%3D2%3B%7Eaopt%3D2/0/ff/0%3B%7Esscs%3D%3fhttp%3A%2F%2Fad.adlegend.com/click?spacedesc=1131466_1099620_300x250_1158013_1131466&amp;ML_NIF=Y">&#160;</a></p>
<ul></ul>
<p><strong>Responding to a dangerous security exploit unveiled this week, Apple released an update to its iPhone operating system Friday to patch the security hole.</strong>      <br />Firmware 3.0.1 is now available for the iPhone, iPhone 3G and iPhone 3GS through iTunes. The update is around 300MB. There is no indication that there are any new features or fixes other than the text message exploit patch.      <br />Earlier Friday, it was reported that Apple would release a fix for the exploit Saturday, but the iPhone maker beat that deadline Friday afternoon.      <br />Security researcher Charlie Miller, co-author of The Mac Hacker’s Handbook, demonstrated the hack Thursday at the Black Hat 2009 conference in Las Vegas. The attack takes advantage of a vulnerability in the phone’s short messaging service, or SMS, feature, allowing an outside party into the phone’s root access without the owner’s knowledge.      <br />The exploit takes advantage of the fact that SMS can send binary code to a phone. That code is automatically processed without user interaction, and can be compiled from multiple messages, allowing larger programs to be sent to a phone. The exploit supposedly exposes the iPhone completely, giving hackers access to the camera, dialer, messaging and Safari. It occurs regardless of hardware revision or which version of the iPhone OS is running.</p>
</blockquote>
<p><a href="http://www.appleinsider.com/articles/09/07/31/apple_releases_iphone_3_0_1_software_to_fix_sms_exploit.html">AppleInsider | Apple releases iPhone 3.0.1 software to fix SMS exploit</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nukeitmike.com/blog/2009/07/31/just-my-luck//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error installing update for Microsoft Forefront</title>
		<link>http://nukeitmike.com/blog/2009/03/25/error-installing-update-for-microsoft-forefront/</link>
		<comments>http://nukeitmike.com/blog/2009/03/25/error-installing-update-for-microsoft-forefront/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 19:47:34 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Forefront Client Security]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Windows Updates]]></category>
		<category><![CDATA[Forefront]]></category>
		<category><![CDATA[Updates]]></category>

		<guid isPermaLink="false">http://nukeitmike.com/blog/2009/03/25/error-installing-update-for-microsoft-forefront/</guid>
		<description><![CDATA[I have a server that is Server 2008 x64.&#160; It has the client for Microsoft Forefront Client Security installed.&#160; It has been showing that it needed to update the client, but every time I told it to run, it would fail. I found this in the Application log: Application &#8216;C:\Program Files\Microsoft Forefront\Client Security\Client\Antimalware\MSASCui.exe&#8217; (pid 3304) [...]]]></description>
			<content:encoded><![CDATA[<p>I have a server that is Server 2008 x64.&#160; It has the client for Microsoft Forefront Client Security installed.&#160; It has been showing that it needed to update the client, but every time I told it to run, it would fail.</p>
<p>I found this in the Application log:</p>
<p><em>Application &#8216;C:\Program Files\Microsoft Forefront\Client Security\Client\Antimalware\MSASCui.exe&#8217; (pid 3304) cannot be restarted &#8211; Application SID does not match Conductor SID..</em></p>
<p>&#160;</p>
<p>And this in the update history:</p>
<p><em>Update for Microsoft Forefront Client Security (KB956280)      <br /></em><em>Installation date: ‎3/‎25/‎2009 2:23 PM      <br /></em><em>Installation status: <strong>Failed </strong>      <br /></em><em>Error details: Code 643      <br /></em><em>Update type: Important      <br /></em><em>This patch&#160; updates the Microsoft Forefront Client Security Anti-Malware Agent.</em> </p>
<p>&#160;</p>
<p>I started to do a little bit of searching on the “Application SID does not match Conductor SID..” and saw that it comes from the restart manager.&#160; With that nugget of info, I went and stopped all the Forefront services, and ran the update again:</p>
<p><em>Update for Microsoft Forefront Client Security (KB956280)      <br /></em><em>Installation date: ‎3/‎25/‎2009 2:33 PM      <br /></em><em>Installation status: <strong>Successful</strong>       <br /></em><em>Update type: Important      <br /></em><em>This patch&#160; updates the Microsoft Forefront Client Security Anti-Malware Agent.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://nukeitmike.com/blog/2009/03/25/error-installing-update-for-microsoft-forefront//feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
