<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>endregion &amp;mdash; cruisinit</title>
    <link>https://wordsmith.social/cruisinit/tag:endregion</link>
    <description>Sample work, IT tools self-made, IT tools usage. There&#39;s more to collect and publish. PGP Fingerprint 3E2A EC6D A0D4 214B EC3E 6593 4AC3 784F D6A4 25F4</description>
    <pubDate>Wed, 13 May 2026 23:10:47 +0000</pubDate>
    <item>
      <title>ApplicationBasisMonitor.ps1</title>
      <link>https://wordsmith.social/cruisinit/applicationbasismonitor-ps1</link>
      <description>&lt;![CDATA[!-- &lt;a rel=&#34;me&#34; href=&#34;https://digitalcourage.social/@mupan&#34;Mastodon/a --  a class=&#34;sourceLine&#34; id=&#34;cb1-1&#34; title=&#34;1&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-2&#34; title=&#34;2&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;﻿span class=&#34;co&#34; style=&#34;color:#60a0b0; font-style:italic&#34;# ApplicationBasisMonitor.ps1. Monitoring activity status of an application: host ping, check log write, check output. To be run from distant host. Audience: Informed IT basis./span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-3&#34; title=&#34;3&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;co&#34; style=&#34;color:#60a0b0; font-style:italic&#34;# A Scheduled Task trigger interval, if you want unattended runs, should adapt to the timespan here./span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-4&#34; title=&#34;4&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-5&#34; title=&#34;5&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-6&#34; title=&#34;6&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-7&#34; title=&#34;7&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;co&#34; style=&#34;color:#60a0b0; font-style:italic&#34;#region Literals/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-8&#34; title=&#34;8&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[span class=&#34;dt&#34; style=&#34;color:#902000&#34;string/span]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strApplicationHostIP/span = span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;192.168.0.0&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-9&#34; title=&#34;9&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[span class=&#34;dt&#34; style=&#34;color:#902000&#34;string/span]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strApplicationLog/span = span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;\\server\share\Log&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-10&#34; title=&#34;10&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[span class=&#34;dt&#34; style=&#34;color:#902000&#34;string/span]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strApplicationOutput/span = span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;\\server\share\output&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-11&#34; title=&#34;11&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[span class=&#34;dt&#34; style=&#34;color:#902000&#34;string/span]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strTransferShare/span = span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;\\server2\share\&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-12&#34; title=&#34;12&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;co&#34; style=&#34;color:#60a0b0; font-style:italic&#34;# [int]$intInterval = 2 # hours/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-13&#34; title=&#34;13&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-14&#34; title=&#34;14&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[span class=&#34;dt&#34; style=&#34;color:#902000&#34;string/span]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strSmtp/span = span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;smtp.org.org&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-15&#34; title=&#34;15&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[span class=&#34;dt&#34; style=&#34;color:#902000&#34;string/span[]]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strMailTo/span = span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;me@org.org&#34;/span, span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;servicedesk@org.org&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-16&#34; title=&#34;16&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[span class=&#34;dt&#34; style=&#34;color:#902000&#34;string/span]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strMailFrom/span = span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;me@org.org&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-17&#34; title=&#34;17&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[span class=&#34;dt&#34; style=&#34;color:#902000&#34;string/span]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strMailSubject/span = span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Org: Application: Basis monitor alert.&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-18&#34; title=&#34;18&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;co&#34; style=&#34;color:#60a0b0; font-style:italic&#34;#endregion/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-19&#34; title=&#34;19&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-20&#34; title=&#34;20&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-21&#34; title=&#34;21&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;co&#34; style=&#34;color:#60a0b0; font-style:italic&#34;#region Body/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-22&#34; title=&#34;22&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[boolean]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$blnSuccess/span = span class=&#34;va&#34; style=&#34;color:#19177c&#34;$True/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-23&#34; title=&#34;23&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-24&#34; title=&#34;24&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span = span class=&#34;fu&#34; style=&#34;color:#06287e&#34;New-Object/span PSObject/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-25&#34; title=&#34;25&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Test time&#34;/span (span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Get-Date/span).span class=&#34;fu&#34; style=&#34;color:#06287e&#34;ToString/span()/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-26&#34; title=&#34;26&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;HostPing&#34;/span (span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Test-Connection/span span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strApplicationHostIP/span)/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-27&#34; title=&#34;27&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-28&#34; title=&#34;28&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;kw&#34; style=&#34;color:#007020; font-weight:bold&#34;if/span (span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Test-Connection/span -Quiet -Count 1 span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strApplicationHostIP/span)/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-29&#34; title=&#34;29&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;{/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-30&#34; title=&#34;30&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Ping&#34;/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;OK&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-31&#34; title=&#34;31&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;}/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-32&#34; title=&#34;32&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-33&#34; title=&#34;33&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;kw&#34; style=&#34;color:#007020; font-weight:bold&#34;else/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-34&#34; title=&#34;34&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;{/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-35&#34; title=&#34;35&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Ping&#34;/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Failed&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-36&#34; title=&#34;36&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$blnSuccess/span = span class=&#34;va&#34; style=&#34;color:#19177c&#34;$false/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-37&#34; title=&#34;37&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;}/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-38&#34; title=&#34;38&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-39&#34; title=&#34;39&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-40&#34; title=&#34;40&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[DateTime]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$datLastLogWrite/span = (span class=&#34;fu&#34; style=&#34;color:#06287e&#34;dir/span span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strApplicationLog/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Sort-Object/span LastWriteTime -Descending | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;select/span -First 1).span class=&#34;fu&#34; style=&#34;color:#06287e&#34;LastWriteTime/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-41&#34; title=&#34;41&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;LastLogWrite&#34;/span span class=&#34;va&#34; style=&#34;color:#19177c&#34;$datLastLogWrite/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-42&#34; title=&#34;42&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-43&#34; title=&#34;43&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;kw&#34; style=&#34;color:#007020; font-weight:bold&#34;if/span ((span class=&#34;fu&#34; style=&#34;color:#06287e&#34;get-date/span).span class=&#34;fu&#34; style=&#34;color:#06287e&#34;AddHours/span(-2) -gt span class=&#34;va&#34; style=&#34;color:#19177c&#34;$datLastLogWrite/span)/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-44&#34; title=&#34;44&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;{/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-45&#34; title=&#34;45&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Log&#34;/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;no write for 2 hours&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-46&#34; title=&#34;46&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$blnSuccess/span = span class=&#34;va&#34; style=&#34;color:#19177c&#34;$false/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-47&#34; title=&#34;47&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;}/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-48&#34; title=&#34;48&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-49&#34; title=&#34;49&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;kw&#34; style=&#34;color:#007020; font-weight:bold&#34;else/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-50&#34; title=&#34;50&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;{/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-51&#34; title=&#34;51&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Log&#34;/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Active in last 2 hours&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-52&#34; title=&#34;52&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;}/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-53&#34; title=&#34;53&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-54&#34; title=&#34;54&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-55&#34; title=&#34;55&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[DateTime]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$datLastOutputWrite/span = (span class=&#34;fu&#34; style=&#34;color:#06287e&#34;dir/span span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strApplicationOutput/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Sort-Object/span LastWriteTime -Descending | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;select/span -First 1).span class=&#34;fu&#34; style=&#34;color:#06287e&#34;LastWriteTime/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-56&#34; title=&#34;56&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;LastOutputWrite&#34;/span span class=&#34;va&#34; style=&#34;color:#19177c&#34;$datLastOutputWrite/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-57&#34; title=&#34;57&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-58&#34; title=&#34;58&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-59&#34; title=&#34;59&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;kw&#34; style=&#34;color:#007020; font-weight:bold&#34;if/span ((span class=&#34;fu&#34; style=&#34;color:#06287e&#34;get-date/span).span class=&#34;fu&#34; style=&#34;color:#06287e&#34;AddHours/span(-2) -gt span class=&#34;va&#34; style=&#34;color:#19177c&#34;$datLastOutputWrite/span)/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-60&#34; title=&#34;60&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;{/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-61&#34; title=&#34;61&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Output&#34;/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;no write for 2 hours&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-62&#34; title=&#34;62&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$blnSuccess/span = span class=&#34;va&#34; style=&#34;color:#19177c&#34;$false/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-63&#34; title=&#34;63&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;}/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-64&#34; title=&#34;64&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-65&#34; title=&#34;65&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;kw&#34; style=&#34;color:#007020; font-weight:bold&#34;else/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-66&#34; title=&#34;66&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;{/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-67&#34; title=&#34;67&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Output&#34;/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Active in last 2 hours&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-68&#34; title=&#34;68&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;}/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-69&#34; title=&#34;69&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-70&#34; title=&#34;70&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-71&#34; title=&#34;71&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;[DateTime]span class=&#34;va&#34; style=&#34;color:#19177c&#34;$datLastTransferWrite/span = (span class=&#34;fu&#34; style=&#34;color:#06287e&#34;dir/span span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strTransferShare/span -Recurse | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Sort-Object/span LastWriteTime -Descending | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;select/span -First 1).span class=&#34;fu&#34; style=&#34;color:#06287e&#34;LastWriteTime/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-72&#34; title=&#34;72&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;LastTransferWrite&#34;/span span class=&#34;va&#34; style=&#34;color:#19177c&#34;$datLastTransferWrite/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-73&#34; title=&#34;73&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-74&#34; title=&#34;74&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-75&#34; title=&#34;75&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;kw&#34; style=&#34;color:#007020; font-weight:bold&#34;if/span ((span class=&#34;fu&#34; style=&#34;color:#06287e&#34;get-date/span).span class=&#34;fu&#34; style=&#34;color:#06287e&#34;AddHours/span(-2) -gt span class=&#34;va&#34; style=&#34;color:#19177c&#34;$datLastTransferWrite/span)/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-76&#34; title=&#34;76&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;{/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-77&#34; title=&#34;77&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Transfer&#34;/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;no write for 2 hours&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-78&#34; title=&#34;78&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$blnSuccess/span = span class=&#34;va&#34; style=&#34;color:#19177c&#34;$false/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-79&#34; title=&#34;79&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;}/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-80&#34; title=&#34;80&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-81&#34; title=&#34;81&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;kw&#34; style=&#34;color:#007020; font-weight:bold&#34;else/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-82&#34; title=&#34;82&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;{/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-83&#34; title=&#34;83&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Add-Member/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Transfer&#34;/span span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Active in last 2 hours&#34;/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-84&#34; title=&#34;84&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;}/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-85&#34; title=&#34;85&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-86&#34; title=&#34;86&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;kw&#34; style=&#34;color:#007020; font-weight:bold&#34;if/span (span class=&#34;va&#34; style=&#34;color:#19177c&#34;$blnSuccess/span -eq span class=&#34;va&#34; style=&#34;color:#19177c&#34;$false/span)/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-87&#34; title=&#34;87&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;{/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-88&#34; title=&#34;88&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strMailSubject/span = span class=&#34;st&#34; style=&#34;color:#4070a0&#34;&#34;Application inactive? &#34;/span + span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strMailSubject/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-89&#34; title=&#34;89&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;}/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-90&#34; title=&#34;90&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-91&#34; title=&#34;91&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Send-MailMessage/span -SmtpServer span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strSmtp/span \`/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-92&#34; title=&#34;92&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    -From span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strMailFrom/span \`/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-93&#34; title=&#34;93&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    -Subject span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strMailSubject/span \`/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-94&#34; title=&#34;94&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    -body (span class=&#34;va&#34; style=&#34;color:#19177c&#34;$objResults/span | span class=&#34;fu&#34; style=&#34;color:#06287e&#34;Out-String/span) \`/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-95&#34; title=&#34;95&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;    -To span class=&#34;va&#34; style=&#34;color:#19177c&#34;$strMailTo/span/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-96&#34; title=&#34;96&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;/a&#xA;a class=&#34;sourceLine&#34; id=&#34;cb1-97&#34; title=&#34;97&#34; style=&#34;{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}&#34;span class=&#34;co&#34; style=&#34;color:#60a0b0; font-style:italic&#34;#endregion/span/a/pre]]&gt;</description>
      <content:encoded><![CDATA[

<p><a class="sourceLine" id="cb1-1" id="cb1-1" title="1" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-2" id="cb1-2" title="2" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">﻿<span class="co" style="color:#60a0b0; font-style:italic"># ApplicationBasisMonitor.ps1. Monitoring activity status of an application: host ping, check log write, check output. To be run from distant host. Audience: Informed IT basis.</span></a>
<a class="sourceLine" id="cb1-3" id="cb1-3" title="3" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="co" style="color:#60a0b0; font-style:italic"># A Scheduled Task trigger interval, if you want unattended runs, should adapt to the timespan here.</span></a>
<a class="sourceLine" id="cb1-4" id="cb1-4" title="4" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-5" id="cb1-5" title="5" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-6" id="cb1-6" title="6" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-7" id="cb1-7" title="7" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="co" style="color:#60a0b0; font-style:italic"><a href="/cruisinit/tag:region" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">region</span></a> Literals</span></a>
<a class="sourceLine" id="cb1-8" id="cb1-8" title="8" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[<span class="dt" style="color:#902000">string</span>]<span class="va" style="color:#19177c">$strApplicationHostIP</span> = <span class="st" style="color:#4070a0">“192.168.0.0”</span></a>
<a class="sourceLine" id="cb1-9" id="cb1-9" title="9" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[<span class="dt" style="color:#902000">string</span>]<span class="va" style="color:#19177c">$strApplicationLog</span> = <span class="st" style="color:#4070a0">“\server\share\Log”</span></a>
<a class="sourceLine" id="cb1-10" id="cb1-10" title="10" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[<span class="dt" style="color:#902000">string</span>]<span class="va" style="color:#19177c">$strApplicationOutput</span> = <span class="st" style="color:#4070a0">“\server\share\output”</span></a>
<a class="sourceLine" id="cb1-11" id="cb1-11" title="11" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[<span class="dt" style="color:#902000">string</span>]<span class="va" style="color:#19177c">$strTransferShare</span> = <span class="st" style="color:#4070a0">“\server2\share\”</span></a>
<a class="sourceLine" id="cb1-12" id="cb1-12" title="12" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="co" style="color:#60a0b0; font-style:italic"># [int]$intInterval = 2 # hours</span></a>
<a class="sourceLine" id="cb1-13" id="cb1-13" title="13" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-14" id="cb1-14" title="14" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[<span class="dt" style="color:#902000">string</span>]<span class="va" style="color:#19177c">$strSmtp</span> = <span class="st" style="color:#4070a0">“smtp.org.org”</span></a>
<a class="sourceLine" id="cb1-15" id="cb1-15" title="15" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[<span class="dt" style="color:#902000">string</span>[]]<span class="va" style="color:#19177c">$strMailTo</span> = <span class="st" style="color:#4070a0">“me@org.org”</span>, <span class="st" style="color:#4070a0">“servicedesk@org.org”</span></a>
<a class="sourceLine" id="cb1-16" id="cb1-16" title="16" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[<span class="dt" style="color:#902000">string</span>]<span class="va" style="color:#19177c">$strMailFrom</span> = <span class="st" style="color:#4070a0">“me@org.org”</span></a>
<a class="sourceLine" id="cb1-17" id="cb1-17" title="17" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[<span class="dt" style="color:#902000">string</span>]<span class="va" style="color:#19177c">$strMailSubject</span> = <span class="st" style="color:#4070a0">“Org: Application: Basis monitor alert.”</span></a>
<a class="sourceLine" id="cb1-18" id="cb1-18" title="18" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="co" style="color:#60a0b0; font-style:italic"><a href="/cruisinit/tag:endregion" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">endregion</span></a></span></a>
<a class="sourceLine" id="cb1-19" id="cb1-19" title="19" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-20" id="cb1-20" title="20" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-21" id="cb1-21" title="21" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="co" style="color:#60a0b0; font-style:italic"><a href="/cruisinit/tag:region" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">region</span></a> Body</span></a>
<a class="sourceLine" id="cb1-22" id="cb1-22" title="22" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[boolean]<span class="va" style="color:#19177c">$blnSuccess</span> = <span class="va" style="color:#19177c">$True</span></a>
<a class="sourceLine" id="cb1-23" id="cb1-23" title="23" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-24" id="cb1-24" title="24" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="va" style="color:#19177c">$objResults</span> = <span class="fu" style="color:#06287e">New-Object</span> PSObject</a>
<a class="sourceLine" id="cb1-25" id="cb1-25" title="25" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“Test time”</span> (<span class="fu" style="color:#06287e">Get-Date</span>).<span class="fu" style="color:#06287e">ToString</span>()</a>
<a class="sourceLine" id="cb1-26" id="cb1-26" title="26" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“HostPing”</span> (<span class="fu" style="color:#06287e">Test-Connection</span> <span class="va" style="color:#19177c">$strApplicationHostIP</span>)</a>
<a class="sourceLine" id="cb1-27" id="cb1-27" title="27" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-28" id="cb1-28" title="28" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="kw" style="color:#007020; font-weight:bold">if</span> (<span class="fu" style="color:#06287e">Test-Connection</span> -Quiet -Count 1 <span class="va" style="color:#19177c">$strApplicationHostIP</span>)</a>
<a class="sourceLine" id="cb1-29" id="cb1-29" title="29" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">{</a>
<a class="sourceLine" id="cb1-30" id="cb1-30" title="30" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“Ping”</span> <span class="st" style="color:#4070a0">“OK”</span></a>
<a class="sourceLine" id="cb1-31" id="cb1-31" title="31" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">}</a>
<a class="sourceLine" id="cb1-32" id="cb1-32" title="32" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-33" id="cb1-33" title="33" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="kw" style="color:#007020; font-weight:bold">else</span></a>
<a class="sourceLine" id="cb1-34" id="cb1-34" title="34" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">{</a>
<a class="sourceLine" id="cb1-35" id="cb1-35" title="35" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“Ping”</span> <span class="st" style="color:#4070a0">“Failed”</span></a>
<a class="sourceLine" id="cb1-36" id="cb1-36" title="36" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$blnSuccess</span> = <span class="va" style="color:#19177c">$false</span></a>
<a class="sourceLine" id="cb1-37" id="cb1-37" title="37" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">}</a>
<a class="sourceLine" id="cb1-38" id="cb1-38" title="38" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-39" id="cb1-39" title="39" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-40" id="cb1-40" title="40" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[DateTime]<span class="va" style="color:#19177c">$datLastLogWrite</span> = (<span class="fu" style="color:#06287e">dir</span> <span class="va" style="color:#19177c">$strApplicationLog</span> | <span class="fu" style="color:#06287e">Sort-Object</span> LastWriteTime -Descending | <span class="fu" style="color:#06287e">select</span> -First 1).<span class="fu" style="color:#06287e">LastWriteTime</span></a>
<a class="sourceLine" id="cb1-41" id="cb1-41" title="41" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“LastLogWrite”</span> <span class="va" style="color:#19177c">$datLastLogWrite</span></a>
<a class="sourceLine" id="cb1-42" id="cb1-42" title="42" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-43" id="cb1-43" title="43" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="kw" style="color:#007020; font-weight:bold">if</span> ((<span class="fu" style="color:#06287e">get-date</span>).<span class="fu" style="color:#06287e">AddHours</span>(-2) -gt <span class="va" style="color:#19177c">$datLastLogWrite</span>)</a>
<a class="sourceLine" id="cb1-44" id="cb1-44" title="44" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">{</a>
<a class="sourceLine" id="cb1-45" id="cb1-45" title="45" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“Log”</span> <span class="st" style="color:#4070a0">“no write for 2 hours”</span></a>
<a class="sourceLine" id="cb1-46" id="cb1-46" title="46" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$blnSuccess</span> = <span class="va" style="color:#19177c">$false</span></a>
<a class="sourceLine" id="cb1-47" id="cb1-47" title="47" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">}</a>
<a class="sourceLine" id="cb1-48" id="cb1-48" title="48" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-49" id="cb1-49" title="49" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="kw" style="color:#007020; font-weight:bold">else</span></a>
<a class="sourceLine" id="cb1-50" id="cb1-50" title="50" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">{</a>
<a class="sourceLine" id="cb1-51" id="cb1-51" title="51" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“Log”</span> <span class="st" style="color:#4070a0">“Active in last 2 hours”</span></a>
<a class="sourceLine" id="cb1-52" id="cb1-52" title="52" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">}</a>
<a class="sourceLine" id="cb1-53" id="cb1-53" title="53" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-54" id="cb1-54" title="54" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-55" id="cb1-55" title="55" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[DateTime]<span class="va" style="color:#19177c">$datLastOutputWrite</span> = (<span class="fu" style="color:#06287e">dir</span> <span class="va" style="color:#19177c">$strApplicationOutput</span> | <span class="fu" style="color:#06287e">Sort-Object</span> LastWriteTime -Descending | <span class="fu" style="color:#06287e">select</span> -First 1).<span class="fu" style="color:#06287e">LastWriteTime</span></a>
<a class="sourceLine" id="cb1-56" id="cb1-56" title="56" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“LastOutputWrite”</span> <span class="va" style="color:#19177c">$datLastOutputWrite</span></a>
<a class="sourceLine" id="cb1-57" id="cb1-57" title="57" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-58" id="cb1-58" title="58" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-59" id="cb1-59" title="59" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="kw" style="color:#007020; font-weight:bold">if</span> ((<span class="fu" style="color:#06287e">get-date</span>).<span class="fu" style="color:#06287e">AddHours</span>(-2) -gt <span class="va" style="color:#19177c">$datLastOutputWrite</span>)</a>
<a class="sourceLine" id="cb1-60" id="cb1-60" title="60" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">{</a>
<a class="sourceLine" id="cb1-61" id="cb1-61" title="61" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“Output”</span> <span class="st" style="color:#4070a0">“no write for 2 hours”</span></a>
<a class="sourceLine" id="cb1-62" id="cb1-62" title="62" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$blnSuccess</span> = <span class="va" style="color:#19177c">$false</span></a>
<a class="sourceLine" id="cb1-63" id="cb1-63" title="63" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">}</a>
<a class="sourceLine" id="cb1-64" id="cb1-64" title="64" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-65" id="cb1-65" title="65" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="kw" style="color:#007020; font-weight:bold">else</span></a>
<a class="sourceLine" id="cb1-66" id="cb1-66" title="66" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">{</a>
<a class="sourceLine" id="cb1-67" id="cb1-67" title="67" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“Output”</span> <span class="st" style="color:#4070a0">“Active in last 2 hours”</span></a>
<a class="sourceLine" id="cb1-68" id="cb1-68" title="68" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">}</a>
<a class="sourceLine" id="cb1-69" id="cb1-69" title="69" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-70" id="cb1-70" title="70" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-71" id="cb1-71" title="71" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">[DateTime]<span class="va" style="color:#19177c">$datLastTransferWrite</span> = (<span class="fu" style="color:#06287e">dir</span> <span class="va" style="color:#19177c">$strTransferShare</span> -Recurse | <span class="fu" style="color:#06287e">Sort-Object</span> LastWriteTime -Descending | <span class="fu" style="color:#06287e">select</span> -First 1).<span class="fu" style="color:#06287e">LastWriteTime</span></a>
<a class="sourceLine" id="cb1-72" id="cb1-72" title="72" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“LastTransferWrite”</span> <span class="va" style="color:#19177c">$datLastTransferWrite</span></a>
<a class="sourceLine" id="cb1-73" id="cb1-73" title="73" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-74" id="cb1-74" title="74" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-75" id="cb1-75" title="75" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="kw" style="color:#007020; font-weight:bold">if</span> ((<span class="fu" style="color:#06287e">get-date</span>).<span class="fu" style="color:#06287e">AddHours</span>(-2) -gt <span class="va" style="color:#19177c">$datLastTransferWrite</span>)</a>
<a class="sourceLine" id="cb1-76" id="cb1-76" title="76" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">{</a>
<a class="sourceLine" id="cb1-77" id="cb1-77" title="77" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“Transfer”</span> <span class="st" style="color:#4070a0">“no write for 2 hours”</span></a>
<a class="sourceLine" id="cb1-78" id="cb1-78" title="78" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$blnSuccess</span> = <span class="va" style="color:#19177c">$false</span></a>
<a class="sourceLine" id="cb1-79" id="cb1-79" title="79" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">}</a>
<a class="sourceLine" id="cb1-80" id="cb1-80" title="80" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-81" id="cb1-81" title="81" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="kw" style="color:#007020; font-weight:bold">else</span></a>
<a class="sourceLine" id="cb1-82" id="cb1-82" title="82" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">{</a>
<a class="sourceLine" id="cb1-83" id="cb1-83" title="83" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Add-Member</span> <span class="st" style="color:#4070a0">“Transfer”</span> <span class="st" style="color:#4070a0">“Active in last 2 hours”</span></a>
<a class="sourceLine" id="cb1-84" id="cb1-84" title="84" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">}</a>
<a class="sourceLine" id="cb1-85" id="cb1-85" title="85" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-86" id="cb1-86" title="86" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="kw" style="color:#007020; font-weight:bold">if</span> (<span class="va" style="color:#19177c">$blnSuccess</span> -eq <span class="va" style="color:#19177c">$false</span>)</a>
<a class="sourceLine" id="cb1-87" id="cb1-87" title="87" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">{</a>
<a class="sourceLine" id="cb1-88" id="cb1-88" title="88" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="va" style="color:#19177c">$strMailSubject</span> = <span class="st" style="color:#4070a0">“Application inactive? “</span> + <span class="va" style="color:#19177c">$strMailSubject</span></a>
<a class="sourceLine" id="cb1-89" id="cb1-89" title="89" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">}</a>
<a class="sourceLine" id="cb1-90" id="cb1-90" title="90" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-91" id="cb1-91" title="91" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    <span class="fu" style="color:#06287e">Send-MailMessage</span> -SmtpServer <span class="va" style="color:#19177c">$strSmtp</span> `</a>
<a class="sourceLine" id="cb1-92" id="cb1-92" title="92" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    -From <span class="va" style="color:#19177c">$strMailFrom</span> `</a>
<a class="sourceLine" id="cb1-93" id="cb1-93" title="93" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    -Subject <span class="va" style="color:#19177c">$strMailSubject</span> `</a>
<a class="sourceLine" id="cb1-94" id="cb1-94" title="94" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    -body (<span class="va" style="color:#19177c">$objResults</span> | <span class="fu" style="color:#06287e">Out-String</span>) `</a>
<a class="sourceLine" id="cb1-95" id="cb1-95" title="95" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}">    -To <span class="va" style="color:#19177c">$strMailTo</span></a>
<a class="sourceLine" id="cb1-96" id="cb1-96" title="96" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"></a>
<a class="sourceLine" id="cb1-97" id="cb1-97" title="97" style="{display:inline-block; line-height:1.25; color:inherit; pointer-events:none; text-decoration:inherit} :empty{height:1.2em}"><span class="co" style="color:#60a0b0; font-style:italic"><a href="/cruisinit/tag:endregion" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">endregion</span></a></span></a></pre></p>
]]></content:encoded>
      <guid>https://wordsmith.social/cruisinit/applicationbasismonitor-ps1</guid>
      <pubDate>Mon, 04 Jan 2021 13:35:12 +0000</pubDate>
    </item>
    <item>
      <title>ProgramUpdater.ps1, Teil 2</title>
      <link>https://wordsmith.social/cruisinit/programupdater-ps1-teil-2</link>
      <description>&lt;![CDATA[span style=&#34;color:#007020; font-weight:bold&#34;Function/span EnsureGuiName (span style=&#34;color:#19177c&#34;$strFolder/span)&#xA;{&#xA;    span style=&#34;color:#19177c&#34;$strFolder/span = BackslashTrailToFolder(span style=&#34;color:#19177c&#34;$strFolder/span)&#xA;    [span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strFolderGui/span = span style=&#34;color:#4070a0&#34;&#34;Company.Program.Gui\&#34;/span&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;if/span (span style=&#34;color:#19177c&#34;$strFolder/span.span style=&#34;color:#06287e&#34;Length/span -lt span style=&#34;color:#19177c&#34;$strFolderGui/span.span style=&#34;color:#06287e&#34;Length/span)&#xA;    {&#xA;        [span style=&#34;color:#902000&#34;int/span]span style=&#34;color:#19177c&#34;$intStartIx/span = 0&#xA;    }&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;else/span&#xA;    {&#xA;        [span style=&#34;color:#902000&#34;int/span]span style=&#34;color:#19177c&#34;$intStartIx/span = span style=&#34;color:#19177c&#34;$strFolder/span.span style=&#34;color:#06287e&#34;Length/span - span style=&#34;color:#19177c&#34;$strFolderGui/span.span style=&#34;color:#06287e&#34;Length/span&#xA;    }&#xA;    &#xA;    span style=&#34;color:#007020; font-weight:bold&#34;if/span (span style=&#34;color:#19177c&#34;$strFolder/span.span style=&#34;color:#06287e&#34;Substring/span(span style=&#34;color:#19177c&#34;$intStartIx/span) -ne span style=&#34;color:#19177c&#34;$strFolderGui/span)&#xA;    {&#xA;        span style=&#34;color:#19177c&#34;$strFolder/span += span style=&#34;color:#19177c&#34;$strFolderGui/span&#xA;    }&#xA;&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;if/span (span style=&#34;color:#19177c&#34;$strFolder/span.span style=&#34;color:#06287e&#34;Substring/span(0, span style=&#34;color:#4070a0&#34;&#34;D:\Websites\&#34;/span.span style=&#34;color:#06287e&#34;Length/span) -ne span style=&#34;color:#4070a0&#34;&#34;D:\Websites\&#34;/span)&#xA;    {&#xA;        span style=&#34;color:#19177c&#34;$strFolder/span = span style=&#34;color:#4070a0&#34;&#34;D:\Websites\&#34;/span + span style=&#34;color:#19177c&#34;$strFolder/span&#xA;    }&#xA;    &#xA;    span style=&#34;color:#007020; font-weight:bold&#34;return/span span style=&#34;color:#19177c&#34;$strFolder/span&#xA;}&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;function/span Expand-File(span style=&#34;color:#19177c&#34;$file/span, span style=&#34;color:#19177c&#34;$destination/span)&#xA;{&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;if/span ((span style=&#34;color:#06287e&#34;Test-Path/span span style=&#34;color:#19177c&#34;$destination/span) -eq span style=&#34;color:#19177c&#34;$false/span)&#xA;        { span style=&#34;color:#06287e&#34;New-Item/span -Path (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$destination/span -Parent) -Name (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$destination/span -Leaf) -ItemType directory | span style=&#34;color:#06287e&#34;Out-Null/span }&#xA;&#xA;    span style=&#34;color:#19177c&#34;$shell/span = span style=&#34;color:#06287e&#34;new-object/span -com shell.span style=&#34;color:#06287e&#34;application/span&#xA;    span style=&#34;color:#19177c&#34;$zip/span = span style=&#34;color:#19177c&#34;$shell/span.span style=&#34;color:#06287e&#34;NameSpace/span(span style=&#34;color:#19177c&#34;$file/span)&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;foreach/span(span style=&#34;color:#19177c&#34;$item/span span style=&#34;color:#007020; font-weight:bold&#34;in/span span style=&#34;color:#19177c&#34;$zip/span.span style=&#34;color:#06287e&#34;items/span())&#xA;    {&#xA;        span style=&#34;color:#19177c&#34;$shell/span.span style=&#34;color:#06287e&#34;Namespace/span(span style=&#34;color:#19177c&#34;$destination/span).span style=&#34;color:#06287e&#34;copyhere/span(span style=&#34;color:#19177c&#34;$item/span)&#xA;    }&#xA;}&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;function/span TestRequirementFilesys(span style=&#34;color:#19177c&#34;$astrFileList/span, span style=&#34;color:#19177c&#34;$strLog/span)&#xA;{&#xA;    [span style=&#34;color:#902000&#34;bool/span]span style=&#34;color:#19177c&#34;$blnResult/span = span style=&#34;color:#19177c&#34;$true/span&#xA;    &#xA;    span style=&#34;color:#007020; font-weight:bold&#34;For/span (span style=&#34;color:#19177c&#34;$i/span=0; span style=&#34;color:#19177c&#34;$i/span -lt (span style=&#34;color:#19177c&#34;$astrFileList/span.span style=&#34;color:#06287e&#34;Count/span); span style=&#34;color:#19177c&#34;$i/span++)&#xA;    {&#xA;        span style=&#34;color:#06287e&#34;Write-Host/span span style=&#34;color:#4070a0&#34;&#34;Testing &#34;/span span style=&#34;color:#19177c&#34;$astrFileList/span[span style=&#34;color:#19177c&#34;$i/span] span style=&#34;color:#4070a0&#34;&#34; ... &#34;/span -NoNewline&#xA;        span style=&#34;color:#007020; font-weight:bold&#34;if/span ((span style=&#34;color:#06287e&#34;Test-Path/span span style=&#34;color:#19177c&#34;$astrFileList/span[span style=&#34;color:#19177c&#34;$i/span]) -eq span style=&#34;color:#19177c&#34;$false/span)&#xA;        {&#xA;            span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#19177c&#34;$astrFileList/span[span style=&#34;color:#19177c&#34;$i/span] + span style=&#34;color:#4070a0&#34;&#34; missing&#34;/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;            span style=&#34;color:#06287e&#34;Write-Host/span span style=&#34;color:#4070a0&#34;&#34;`n&#34;/span&#xA;            span style=&#34;color:#007020; font-weight:bold&#34;Throw/span (span style=&#34;color:#19177c&#34;$astrFileList/span[span style=&#34;color:#19177c&#34;$i/span] + span style=&#34;color:#4070a0&#34;&#34; missing&#34;/span)&#xA;            span style=&#34;color:#19177c&#34;$blnResult/span = span style=&#34;color:#19177c&#34;$false/span&#xA;        }&#xA;        span style=&#34;color:#007020; font-weight:bold&#34;else/span&#xA;        {&#xA;            span style=&#34;color:#06287e&#34;Write-Host/span span style=&#34;color:#4070a0&#34;&#34;OK&#34;/span&#xA;        }&#xA;    }&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;if/span (span style=&#34;color:#19177c&#34;$PSVersionTable/span.span style=&#34;color:#06287e&#34;PSVersion/span.span style=&#34;color:#06287e&#34;Major/span -lt 4)&#xA;    {&#xA;        span style=&#34;color:#06287e&#34;Add-Content/span -Value span style=&#34;color:#4070a0&#34;&#34;This script requires at least version 4 of PowerShell (in WMF 4, http://www.microsoft.com/en-us/download/details.aspx?id=40855).&#34;/span -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;        span style=&#34;color:#19177c&#34;$blnResult/span = span style=&#34;color:#19177c&#34;$false/span&#xA;    }&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;return/span span style=&#34;color:#19177c&#34;$blnResult/span&#xA;}&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;function/span GetDevExpressVersionFromProgramVersion(span style=&#34;color:#19177c&#34;$strNewVersion/span)&#xA;{&#xA;    [span style=&#34;color:#902000&#34;int/span]span style=&#34;color:#19177c&#34;$intProgMainVersion/span = (span style=&#34;color:#19177c&#34;$strNewVersion/span.span style=&#34;color:#06287e&#34;Split/span(span style=&#34;color:#4070a0&#34;&#34;.&#34;/span))[0]&#xA;    &#xA;    span style=&#34;color:#007020; font-weight:bold&#34;switch/span (span style=&#34;color:#19177c&#34;$intProgMainVersion/span)&#xA;&#xA;    {&#xA;        2 {&#xA;            span style=&#34;color:#007020; font-weight:bold&#34;return/span 9&#xA;          }&#xA;        3 {&#xA;            span style=&#34;color:#007020; font-weight:bold&#34;return/span 15&#xA;          }&#xA;    }&#xA;}&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;function/span GetFilePropTags([span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strPath/span)&#xA;{&#xA;    span style=&#34;color:#19177c&#34;$objShell/span = span style=&#34;color:#06287e&#34;New-Object/span -COMObject Shell.span style=&#34;color:#06287e&#34;Application/span&#xA;    [span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strFolder/span = span style=&#34;color:#06287e&#34;Split-Path/span span style=&#34;color:#19177c&#34;$strPath/span&#xA;    [span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strFile/span = span style=&#34;color:#06287e&#34;Split-Path/span span style=&#34;color:#19177c&#34;$strPath/span -Leaf&#xA;    span style=&#34;color:#19177c&#34;$objShellfolder/span = span style=&#34;color:#19177c&#34;$objShell/span.span style=&#34;color:#06287e&#34;Namespace/span(span style=&#34;color:#19177c&#34;$strFolder/span)&#xA;    span style=&#34;color:#19177c&#34;$objShellfile/span = span style=&#34;color:#19177c&#34;$objShellfolder/span.span style=&#34;color:#06287e&#34;ParseName/span(span style=&#34;color:#19177c&#34;$strFile/span)&#xA;&#xA;    span style=&#34;color:#60a0b0; font-style:italic&#34;# To get a list of index numbers and their meaning, use this:/span&#xA;    span style=&#34;color:#60a0b0; font-style:italic&#34;# 0..287 | Foreach-Object { &#39;{0} = {1}&#39; -f $, $shellfolder.GetDetailsOf($null, $) }/span&#xA;&#xA;    [span style=&#34;color:#902000&#34;int/span]span style=&#34;color:#19177c&#34;$intExtFilePropsTags/span = 18&#xA;    span style=&#34;color:#19177c&#34;$objShellfolder/span.span style=&#34;color:#06287e&#34;GetDetailsOf/span(span style=&#34;color:#19177c&#34;$objShellfile/span, span style=&#34;color:#19177c&#34;$intExtFilePropsTags/span)&#xA;}&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;function/span GetMsiProdVer([span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strPath/span)&#xA;{&#xA;    span style=&#34;color:#19177c&#34;$strTagsFromMsi/span = GetFilePropTags(span style=&#34;color:#19177c&#34;$strPath/span)&#xA;    [span style=&#34;color:#902000&#34;string/span[]]span style=&#34;color:#19177c&#34;$astrFileTags/span = span style=&#34;color:#19177c&#34;$strTagsFromMsi/span.span style=&#34;color:#06287e&#34;Split/span(span style=&#34;color:#4070a0&#34;&#34;,&#34;/span)&#xA;    [span style=&#34;color:#902000&#34;int/span[]]span style=&#34;color:#19177c&#34;$aintVno/span = (span style=&#34;color:#19177c&#34;$astrFileTags/span[1]).span style=&#34;color:#06287e&#34;split/span(span style=&#34;color:#4070a0&#34;&#34;.&#34;/span)&#xA;    [span style=&#34;color:#902000&#34;string/span]::Join(span style=&#34;color:#4070a0&#34;&#34;.&#34;/span, span style=&#34;color:#19177c&#34;$aintVno/span)&#xA;}&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;function/span GetDevExpressVersion([span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strDevExpressFolder/span)&#xA;{&#xA;    span style=&#34;color:#19177c&#34;$dirDevExpress/span = span style=&#34;color:#06287e&#34;Get-ChildItem/span span style=&#34;color:#19177c&#34;$strDevExpressFolder/span .span style=&#34;color:#06287e&#34;dll/span&#xA;    ((span style=&#34;color:#06287e&#34;Get-ItemProperty/span (span style=&#34;color:#19177c&#34;$dirDevExpress/span[0].span style=&#34;color:#06287e&#34;FullName/span)).span style=&#34;color:#06287e&#34;VersionInfo/span).span style=&#34;color:#06287e&#34;FileVersion/span&#xA;}&#xA;&#xA;span style=&#34;color:#60a0b0; font-style:italic&#34;#endregion/span&#xA;&#xA;span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/span = Get-IniContent span style=&#34;color:#19177c&#34;$IniFileUser/span&#xA;span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/span += Get-IniContent span style=&#34;color:#19177c&#34;$IniFileWebConfig/span&#xA;&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strDeploymentFolder/span = span style=&#34;color:#4070a0&#34;&#34;D:\Websites\Deploy\&#34;/span&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strLogFolder/span = span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;UpdateLogs\&#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMdd.HHmm&#34;/span) + span style=&#34;color:#4070a0&#34;&#34;h\&#34;/span&#xA;span style=&#34;color:#007020; font-weight:bold&#34;if/span ((span style=&#34;color:#06287e&#34;Test-Path/span span style=&#34;color:#19177c&#34;$strLogFolder/span) -eq span style=&#34;color:#19177c&#34;$false/span)&#xA;    { span style=&#34;color:#06287e&#34;New-Item/span -Path (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$strLogFolder/span -Parent) -Name (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$strLogFolder/span -Leaf) -ItemType directory | span style=&#34;color:#06287e&#34;Out-Null/span }&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strLog/span = span style=&#34;color:#19177c&#34;$strLogFolder/span + span style=&#34;color:#4070a0&#34;&#34;ProgramUpdater&#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span) + span style=&#34;color:#4070a0&#34;&#34;h.log&#34;/span&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;if/span ( ( span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/spanspan style=&#34;color:#4070a0&#34;&#34;HeaderUser&#34;/span -ne span style=&#34;color:#19177c&#34;$strIniVersion/span ) -or ( span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/spanspan style=&#34;color:#4070a0&#34;&#34;HeaderWebConfig&#34;/span -ne span style=&#34;color:#19177c&#34;$strIniVersion/span ) )&#xA;{&#xA;    span style=&#34;color:#06287e&#34;Add-Content/span -Value span style=&#34;color:#4070a0&#34;&#34;Wrong version of at least 1 .ini.&#34;/span -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;Exit/span&#xA;}&#xA;&#xA;span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strVerMsSql/span = span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/span[span style=&#34;color:#4070a0&#34;&#34;MssqlVersionen&#34;/span&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strHostname/span = span style=&#34;color:#19177c&#34;$env/span:COMPUTERNAME&#xA;span style=&#34;color:#007020; font-weight:bold&#34;if/span (span style=&#34;color:#19177c&#34;$null/span -ne span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/spanspan style=&#34;color:#4070a0&#34;&#34;MssqlVersionen&#34;/span)&#xA;    { span style=&#34;color:#19177c&#34;$strVerMsSql/span = span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/spanspan style=&#34;color:#4070a0&#34;&#34;MssqlVersionen&#34;/span }&#xA;&#xA;span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strWebsiteFolder/span = span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/span[span style=&#34;color:#4070a0&#34;&#34;Website folder to Upgrade&#34;/span&#xA;span style=&#34;color:#60a0b0; font-style:italic&#34;# $strWebsiteFolder.Trim(&#34; &#34;)/span&#xA;span style=&#34;color:#007020; font-weight:bold&#34;while/span ( span style=&#34;color:#19177c&#34;$strWebsiteFolder/span.span style=&#34;color:#06287e&#34;EndsWith/span(span style=&#34;color:#4070a0&#34;&#34; &#34;/span) ) { span style=&#34;color:#19177c&#34;$strWebsiteFolder/span = span style=&#34;color:#19177c&#34;$strWebsiteFolder/span.span style=&#34;color:#06287e&#34;Substring/span( 0, (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span.span style=&#34;color:#06287e&#34;Length/span - 1) ) }&#xA;span style=&#34;color:#19177c&#34;$strWebsiteFolder/span = EnsureGuiName(span style=&#34;color:#19177c&#34;$strWebsiteFolder/span)&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strIISWebsiteName/span = (Get-Website | span style=&#34;color:#06287e&#34;Where-Object/span -Property span style=&#34;color:#4070a0&#34;&#34;PhysicalPath&#34;/span -EQ -Value (FolderNameWoTrailingBackslash(span style=&#34;color:#19177c&#34;$strWebsiteFolder/span))).span style=&#34;color:#06287e&#34;Name/span&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strIISAppPool/span = (span style=&#34;color:#06287e&#34;Get-Item/span (span style=&#34;color:#4070a0&#34;&#34;IIS:\Sites\&#34;/span + span style=&#34;color:#19177c&#34;$strIISWebsiteName/span) | span style=&#34;color:#06287e&#34;Select-Object/span applicationPool).span style=&#34;color:#06287e&#34;applicationPool/span&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strDeployZipFile/span = span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;Company.Program.CC.Web.Gui.&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.zip&#34;/span&#xA;&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strOldVersion/span = ((span style=&#34;color:#06287e&#34;Get-ItemProperty/span (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;bin\Company.Program.BusinessLogik.dll&#34;/span)).span style=&#34;color:#06287e&#34;VersionInfo/span).span style=&#34;color:#06287e&#34;ProductVersion/span&#xA;span style=&#34;color:#19177c&#34;$msidir/span = span style=&#34;color:#06287e&#34;Get-Item/span (span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;Company.Program.Nb.Setup.&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;..msi&#34;/span)&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strFirstMsiNewVer/span = span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + (span style=&#34;color:#19177c&#34;$msidir/span[0].span style=&#34;color:#06287e&#34;Name/span)&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strNewVersion/span = GetMsiProdVer(span style=&#34;color:#19177c&#34;$strFirstMsiNewVer/span)&#xA;span style=&#34;color:#007020; font-weight:bold&#34;while/span (span style=&#34;color:#19177c&#34;$null/span -eq span style=&#34;color:#19177c&#34;$strNewVersion/span -or span style=&#34;color:#19177c&#34;$strNewVersion/span -eq span style=&#34;color:#4070a0&#34;&#34;&#34;/span)&#xA;{&#xA;    span style=&#34;color:#06287e&#34;Write-Host/span span style=&#34;color:#4070a0&#34;&#34;Die Zielversion konnte nicht aus $strFirstMsiNewVer ermittelt werden, bitte hier eingeben (&#39;3.xx.x.xxxxx&#39;):&#34;/span -ForegroundColor Red&#xA;    span style=&#34;color:#19177c&#34;$strNewVersion/span = span style=&#34;color:#06287e&#34;Read-Host/span&#xA;}&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strDevExpressFolder/span = span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;DevExpress\{0}\&#34;/span -f (GetDevExpressVersionFromProgramVersion(span style=&#34;color:#19177c&#34;$strNewVersion/span))&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strBackupFolder/span = FolderNameWoTrailingBackslash(span style=&#34;color:#19177c&#34;$strWebsiteFolder/span)&#xA;span style=&#34;color:#19177c&#34;$strBackupFolder/span += span style=&#34;color:#4070a0&#34;&#34;&#34;/span&#xA;span style=&#34;color:#19177c&#34;$strBackupFolder/span += span style=&#34;color:#19177c&#34;$strOldVersion/span&#xA;span style=&#34;color:#19177c&#34;$strBackupFolder/span += span style=&#34;color:#4070a0&#34;&#34;&#34;/span&#xA;span style=&#34;color:#19177c&#34;$strBackupFolder/span += (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMdd.HHmm&#34;/span)&#xA;span style=&#34;color:#19177c&#34;$strBackupFolder/span += span style=&#34;color:#4070a0&#34;&#34;h\&#34;/span&#xA;&#xA;span style=&#34;color:#06287e&#34;Write-Host/span -BackgroundColor Gray -ForegroundColor Blue -Object span style=&#34;color:#4070a0&#34;&#34;nnEffective Parameters for current run of this script&#34;/span&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strThisScriptVersion/span = (span style=&#34;color:#06287e&#34;Get-Help/span span style=&#34;color:#19177c&#34;$PSCommandPath/span -Full).span style=&#34;color:#06287e&#34;alertSet/span.span style=&#34;color:#06287e&#34;alert/span[0] -split(span style=&#34;color:#4070a0&#34;&#34;`n&#34;/span) -match span style=&#34;color:#4070a0&#34;&#34;Version: &#34;/span -replace(span style=&#34;color:#4070a0&#34;&#34;}&#34;/span,span style=&#34;color:#4070a0&#34;&#34;&#34;/span)&#xA;&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span = span style=&#34;color:#06287e&#34;New-Object/span PSObject&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;Ini Files&#34;/span (span style=&#34;color:#19177c&#34;$IniFileUser/span + span style=&#34;color:#4070a0&#34;&#34;, &#34;/span + span style=&#34;color:#19177c&#34;$IniFileWebConfig/span + span style=&#34;color:#4070a0&#34;&#34; -- optional command line parameters&#34;/span)&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;Website folder&#34;/span span style=&#34;color:#19177c&#34;$strWebsiteFolder/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;This script&#39;s version&#34;/span span style=&#34;color:#19177c&#34;$strThisScriptVersion/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;IIS website name&#34;/span span style=&#34;color:#19177c&#34;$strIISWebsiteName/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;IIS application pool name&#34;/span span style=&#34;color:#19177c&#34;$strIISAppPool/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;Old version&#34;/span span style=&#34;color:#19177c&#34;$strOldVersion/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;New version&#34;/span span style=&#34;color:#19177c&#34;$strNewVersion/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;MS SQL version&#34;/span span style=&#34;color:#19177c&#34;$strVerMsSql/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;Deploy folder&#34;/span span style=&#34;color:#19177c&#34;$strDeploymentFolder/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;Deploy zip file&#34;/span span style=&#34;color:#19177c&#34;$strDeployZipFile/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;DevExpress folder&#34;/span span style=&#34;color:#19177c&#34;$strDevExpressFolder/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;Backup folder&#34;/span span style=&#34;color:#19177c&#34;$strBackupFolder/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Add-Member/span span style=&#34;color:#4070a0&#34;&#34;Log folder&#34;/span span style=&#34;color:#19177c&#34;$strLogFolder/span&#xA;span style=&#34;color:#19177c&#34;$objParamTable/span | span style=&#34;color:#06287e&#34;Format-List/span&#xA;&#xA;[span style=&#34;color:#902000&#34;string/span[]]span style=&#34;color:#19177c&#34;$astrFileList/span = (span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;.msi&#34;/span)&#xA;span style=&#34;color:#19177c&#34;$astrFileList/span += (span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;UpgradeTool-&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.exe&#34;/span)&#xA;span style=&#34;color:#19177c&#34;$astrFileList/span += span style=&#34;color:#19177c&#34;$strDeployZipFile/span&#xA;span style=&#34;color:#19177c&#34;$astrFileList/span += (span style=&#34;color:#19177c&#34;$strDevExpressFolder/span + span style=&#34;color:#4070a0&#34;&#34;&#34;/span)&#xA;span style=&#34;color:#19177c&#34;$astrFileList/span += (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;&#34;/span)&#xA;[span style=&#34;color:#902000&#34;bool/span]span style=&#34;color:#19177c&#34;$blnResult/span = TestRequirementFilesys span style=&#34;color:#19177c&#34;$astrFileList/span span style=&#34;color:#19177c&#34;$strLog/span&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;if/span (span style=&#34;color:#19177c&#34;$blnResult/span -eq span style=&#34;color:#19177c&#34;$false/span)&#xA;{&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;Exit/span&#xA;}&#xA;&#xA;span style=&#34;color:#06287e&#34;Write-Host/span -BackgroundColor Gray -ForegroundColor Blue -Object span style=&#34;color:#4070a0&#34;&#34;If necessary, stop and run script again. Run &#39;.\ProgramUpdater.ps1 -?&#39; for more details.&#34;/span&#xA;span style=&#34;color:#06287e&#34;Write-Host/span -BackgroundColor Gray -ForegroundColor Red -Object span style=&#34;color:#4070a0&#34;&#34;If you don&#39;t understand what this script does read the &amp;lt;Program&amp;gt; installation guides.&#34;/span&#xA;&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strTitle/span = span style=&#34;color:#4070a0&#34;&#34;ProgramUpdater&#34;/span&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strMessage/span = span style=&#34;color:#4070a0&#34;&#34;Do you want to go on?&#34;/span&#xA;span style=&#34;color:#19177c&#34;$yes/span = span style=&#34;color:#06287e&#34;New-Object/span System.span style=&#34;color:#06287e&#34;Management/span.span style=&#34;color:#06287e&#34;Automation/span.span style=&#34;color:#06287e&#34;Host/span.span style=&#34;color:#06287e&#34;ChoiceDescription/span span style=&#34;color:#4070a0&#34;&#34;&amp;amp;Yes&#34;/span, `&#xA;    span style=&#34;color:#4070a0&#34;&#34;Go on.&#34;/span&#xA;span style=&#34;color:#19177c&#34;$no/span = span style=&#34;color:#06287e&#34;New-Object/span System.span style=&#34;color:#06287e&#34;Management/span.span style=&#34;color:#06287e&#34;Automation/span.span style=&#34;color:#06287e&#34;Host/span.span style=&#34;color:#06287e&#34;ChoiceDescription/span span style=&#34;color:#4070a0&#34;&#34;&amp;amp;No&#34;/span, `&#xA;    span style=&#34;color:#4070a0&#34;&#34;Exit the script.&#34;/span&#xA;span style=&#34;color:#19177c&#34;$options/span = System.span style=&#34;color:#06287e&#34;Management/span.span style=&#34;color:#06287e&#34;Automation/span.span style=&#34;color:#06287e&#34;Host/span.span style=&#34;color:#06287e&#34;ChoiceDescription/span[]&#xA;[span style=&#34;color:#902000&#34;int/span]span style=&#34;color:#19177c&#34;$intResult/span = span style=&#34;color:#19177c&#34;$host/span.span style=&#34;color:#06287e&#34;ui/span.span style=&#34;color:#06287e&#34;PromptForChoice/span(span style=&#34;color:#19177c&#34;$strTitle/span, span style=&#34;color:#19177c&#34;$strMessage/span, span style=&#34;color:#19177c&#34;$options/span, 1)&#xA;span style=&#34;color:#007020; font-weight:bold&#34;switch/span (span style=&#34;color:#19177c&#34;$intResult/span)&#xA;    {&#xA;        1 {span style=&#34;color:#007020; font-weight:bold&#34;Exit/span}&#xA;    }&#xA;&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strFQDNThisMachine/span = [System.span style=&#34;color:#06287e&#34;Net/span.span style=&#34;color:#06287e&#34;Dns/span]::GetHostByName((hostname)).span style=&#34;color:#06287e&#34;HostName/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Computer name (FQDN): &#34;/span + span style=&#34;color:#19177c&#34;$strFQDNThisMachine/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Script starter: &#34;/span + span style=&#34;color:#19177c&#34;$env/span:USERDOMAIN + span style=&#34;color:#4070a0&#34;&#34;\&#34;/span + span style=&#34;color:#19177c&#34;$env/span:USERNAME) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Website folder: &#34;/span + span style=&#34;color:#19177c&#34;$strWebsiteFolder/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Deploy folder: &#34;/span + span style=&#34;color:#19177c&#34;$strDeploymentFolder/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Dev express folder: &#34;/span + span style=&#34;color:#19177c&#34;$strDevExpressFolder/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Backup folder: &#34;/span + span style=&#34;color:#19177c&#34;$strBackupFolder/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;New version: &#34;/span + span style=&#34;color:#19177c&#34;$strNewVersion/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;IIS website name: &#34;/span + span style=&#34;color:#19177c&#34;$strIISWebsiteName/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;IIS application pool name: &#34;/span + span style=&#34;color:#19177c&#34;$strIISAppPool/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;MS SQL version: &#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;nn&#34;/span) -Path span style=&#34;color:#19177c&#34;$strLog/span&#xA;&#xA;span style=&#34;color:#60a0b0; font-style:italic&#34;# Out-Null: Do not continue before this line has been completely executed/span&#xA;Stop-Website -Name span style=&#34;color:#19177c&#34;$strIISWebsiteName/span | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;Stop-WebAppPool -Name span style=&#34;color:#19177c&#34;$strIISAppPool/span | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Attempted to stop IIS website &#34;/span + span style=&#34;color:#19177c&#34;$strIISWebsiteName/span + span style=&#34;color:#4070a0&#34;&#34;&#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Attempted to stop IIS application pool &#34;/span + span style=&#34;color:#19177c&#34;$strIISAppPool/span + span style=&#34;color:#4070a0&#34;&#34;&#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Attempting to ensure apppool&#34;/span + span style=&#34;color:#19177c&#34;$strIISAppPool/span + span style=&#34;color:#4070a0&#34;&#34; and website &#34;/span + span style=&#34;color:#19177c&#34;$strIISWebsiteName/span + span style=&#34;color:#4070a0&#34;&#34; are stopped.  &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Apppool &#34;/span + span style=&#34;color:#19177c&#34;$strIISAppPool/span + span style=&#34;color:#4070a0&#34;&#34; status: &#34;/span + (Get-WebAppPoolState span style=&#34;color:#19177c&#34;$strIISAppPool/span).span style=&#34;color:#06287e&#34;Value/span + span style=&#34;color:#4070a0&#34;&#34;.  &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Website &#34;/span + span style=&#34;color:#19177c&#34;$strIISWebsiteName/span + span style=&#34;color:#4070a0&#34;&#34; status: &#34;/span + (Get-WebsiteState span style=&#34;color:#19177c&#34;$strIISWebsiteName/span).span style=&#34;color:#06287e&#34;Value/span + span style=&#34;color:#4070a0&#34;&#34;.  &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#4070a0&#34;&#34;Waiting&#34;/span | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;&#xA;[span style=&#34;color:#902000&#34;int/span]span style=&#34;color:#19177c&#34;$intSec/span = 0&#xA;span style=&#34;color:#007020; font-weight:bold&#34;while/span ( ( (Get-WebAppPoolState span style=&#34;color:#19177c&#34;$strIISAppPool/span).span style=&#34;color:#06287e&#34;Value/span -ne span style=&#34;color:#4070a0&#34;&#34;Stopped&#34;/span ) -and ( (Get-WebsiteState span style=&#34;color:#19177c&#34;$strIISWebsiteName/span).span style=&#34;color:#06287e&#34;Value/span -ne span style=&#34;color:#4070a0&#34;&#34;Stopped&#34;/span ) )&#xA;{&#xA;    span style=&#34;color:#06287e&#34;Start-Sleep/span 2&#xA;    span style=&#34;color:#19177c&#34;$intSec/span += 2&#xA;    span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Waited &#34;/span + span style=&#34;color:#19177c&#34;$intSec/span + span style=&#34;color:#4070a0&#34;&#34; of 60 seconds.  &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;if/span (span style=&#34;color:#19177c&#34;$intSec/span -eq 60)&#xA;    {&#xA;        span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;apppool and website apparently still running, exiting.  &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;        span style=&#34;color:#007020; font-weight:bold&#34;Exit/span&#xA;    }&#xA;}&#xA;&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strNewVerFolder/span = FolderNameWoTrailingBackslash(span style=&#34;color:#19177c&#34;$strWebsiteFolder/span)&#xA;span style=&#34;color:#19177c&#34;$strNewVerFolder/span  += span style=&#34;color:#4070a0&#34;&#34;New\&#34;/span&#xA;&#xA;Expand-File -file span style=&#34;color:#19177c&#34;$strDeployZipFile/span -destination span style=&#34;color:#19177c&#34;$strNewVerFolder/span | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Unzipped &#34;/span + span style=&#34;color:#19177c&#34;$strDeployZipFile/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Remove-Item/span -Path (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;bin\DevExpress&#34;/span) -Force -Recurse | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Deleted &#34;/span + span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;bin\DevExpress &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;if/span ((span style=&#34;color:#06287e&#34;Test-Path/span span style=&#34;color:#19177c&#34;$strNewVerFolder/span) -eq span style=&#34;color:#19177c&#34;$false/span)&#xA;    { span style=&#34;color:#06287e&#34;New-Item/span -Path (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$strNewVerFolder/span -Parent) -Name (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$strNewVerFolder/span -Leaf) -ItemType directory | span style=&#34;color:#06287e&#34;Out-Null/span }&#xA;span style=&#34;color:#007020; font-weight:bold&#34;if/span ((span style=&#34;color:#06287e&#34;Test-Path/span span style=&#34;color:#19177c&#34;$strBackupFolder/span) -eq span style=&#34;color:#19177c&#34;$false/span)&#xA;    { span style=&#34;color:#06287e&#34;New-Item/span -Path (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$strBackupFolder/span -Parent) -Name (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$strBackupFolder/span -Leaf) -ItemType directory | span style=&#34;color:#06287e&#34;Out-Null/span }&#xA;&#xA;span style=&#34;color:#06287e&#34;Copy-Item/span -Path (span style=&#34;color:#19177c&#34;$strDevExpressFolder/span + span style=&#34;color:#4070a0&#34;&#34;&#34;/span) -Destination (span style=&#34;color:#19177c&#34;$strNewVerFolder/span + span style=&#34;color:#4070a0&#34;&#34;bin&#34;/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Copied &#34;/span + span style=&#34;color:#19177c&#34;$strDevExpressFolder/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;try/span&#xA;{&#xA;    span style=&#34;color:#06287e&#34;Move-Item/span -Path (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;&#34;/span) -Destination span style=&#34;color:#19177c&#34;$strBackupFolder/span -Exclude span style=&#34;color:#4070a0&#34;&#34;Log&#34;/span,span style=&#34;color:#4070a0&#34;&#34;Setup&#34;/span,span style=&#34;color:#4070a0&#34;&#34;Temp&#34;/span,span style=&#34;color:#4070a0&#34;&#34;logo&#34;/span -Force -ErrorAction SilentlyContinue | span style=&#34;color:#06287e&#34;Out-Null/span  &#xA;}&#xA;span style=&#34;color:#007020; font-weight:bold&#34;catch/span&#xA;{&#xA;} &#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Moved &#34;/span + span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34; except Log\, Setup\, Temp\, logo\ &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Copy-Item/span -Path (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;&#34;/span) -Destination span style=&#34;color:#19177c&#34;$strBackupFolder/span -Force -Recurse | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Copied &#34;/span + span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;\Log\, ...\Setup\, ...\Temp\, ...\logo\ &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;AdaptWebConfig span style=&#34;color:#19177c&#34;$strNewVerFolder/span span style=&#34;color:#19177c&#34;$strBackupFolder/span span style=&#34;color:#19177c&#34;$strNewVersion/span span style=&#34;color:#19177c&#34;$strLog/span span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/span&#xA;&#xA;span style=&#34;color:#06287e&#34;Remove-Item/span -Path (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\Company.Program.Nb.Setup..msi&#34;/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Deleted &#34;/span + span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\Company.Program.Nb.Setup..msi &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strMsiCopyPath/span = span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\msi&#34;/span&#xA;span style=&#34;color:#007020; font-weight:bold&#34;if/span ((span style=&#34;color:#06287e&#34;Test-Path/span span style=&#34;color:#19177c&#34;$strMsiCopyPath/span) -eq span style=&#34;color:#19177c&#34;$false/span)&#xA;{&#xA;    span style=&#34;color:#06287e&#34;New-Item/span -Path (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$strMsiCopyPath/span -Parent) -Name (span style=&#34;color:#06287e&#34;Split-Path/span -Path span style=&#34;color:#19177c&#34;$strMsiCopyPath/span -Leaf) -ItemType directory | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;}&#xA;span style=&#34;color:#007020; font-weight:bold&#34;else/span&#xA;{&#xA;    span style=&#34;color:#06287e&#34;Remove-Item/span -Path (span style=&#34;color:#19177c&#34;$strMsiCopyPath/span + span style=&#34;color:#4070a0&#34;&#34;\Company.Program.Nb.Setup..msi&#34;/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;}&#xA;&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strWebConfigMsiPath/span = span style=&#34;color:#19177c&#34;$strMsiCopyPath/span + span style=&#34;color:#4070a0&#34;&#34;\web.config&#34;/span&#xA;span style=&#34;color:#007020; font-weight:bold&#34;if/span ((span style=&#34;color:#06287e&#34;Test-Path/span span style=&#34;color:#19177c&#34;$strWebConfigMsiPath/span) -eq span style=&#34;color:#19177c&#34;$false/span)&#xA;{&#xA;    span style=&#34;color:#19177c&#34;$strWebConfigMsiContent/span | span style=&#34;color:#06287e&#34;Out-File/span span style=&#34;color:#19177c&#34;$strWebConfigMsiPath/span -Force -Encoding utf8&#xA;    [span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strWebConfigMsiAttr/span = (span style=&#34;color:#06287e&#34;Get-Item/span -Force span style=&#34;color:#19177c&#34;$strWebConfigMsiPath/span).span style=&#34;color:#06287e&#34;Attributes/span -join(span style=&#34;color:#4070a0&#34;&#34;,&#34;/span)&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;if/span (span style=&#34;color:#19177c&#34;$strWebConfigMsiAttr/span -notmatch(span style=&#34;color:#4070a0&#34;&#34;Hidden&#34;/span))&#xA;    {&#xA;        (span style=&#34;color:#06287e&#34;Get-Item/span -Force span style=&#34;color:#19177c&#34;$strWebConfigMsiPath/span).span style=&#34;color:#06287e&#34;Attributes/span = span style=&#34;color:#19177c&#34;$strWebConfigMsiAttr/span + span style=&#34;color:#4070a0&#34;&#34;,Hidden&#34;/span&#xA;    }&#xA;    span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Created &#34;/span + span style=&#34;color:#19177c&#34;$strWebConfigMsiPath/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;}&#xA;&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Deleted &#34;/span + span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\msi\Company.Program.Nb.Setup..msi &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Remove-Item/span -Path (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\UpgradeLog.txt&#34;/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Deleted &#34;/span + span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\UpgradeLog.txt &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Remove-Item/span -Path (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\UpgradeTool-&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.exe&#34;/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Deleted &#34;/span + span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\UpgradeTool-&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.exe &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Remove-Item/span -Path (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Log\.&#34;/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Deleted &#34;/span + span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Log\. &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#007020; font-weight:bold&#34;while/span ((span style=&#34;color:#06287e&#34;Get-ChildItem/span span style=&#34;color:#19177c&#34;$strNewVerFolder/span).span style=&#34;color:#06287e&#34;Length/span -gt 0)&#xA;{&#xA;    span style=&#34;color:#06287e&#34;Move-Item/span -Path (span style=&#34;color:#19177c&#34;$strNewVerFolder/span + span style=&#34;color:#4070a0&#34;&#34;&#34;/span) -Destination span style=&#34;color:#19177c&#34;$strWebsiteFolder/span -Force -ErrorAction SilentlyContinue | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;}&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Moved &#34;/span + span style=&#34;color:#19177c&#34;$strNewVerFolder/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Remove-Item/span -Path (span style=&#34;color:#19177c&#34;$strNewVerFolder/span) -Force -Recurse | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Deleted &#34;/span + span style=&#34;color:#19177c&#34;$strNewVerFolder/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Copy-Item/span -Path (span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;Company.Program.Nb.Setup.&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.msi&#34;/span) -Destination (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup&#34;/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Copied &#34;/span + span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;Company.Program.Nb.Setup.&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.msi to Setup\&#34;/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Copy-Item/span -Path (span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;Company.Program.Nb.Setup.&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.msi&#34;/span) -Destination (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\msi&#34;/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Copied &#34;/span + span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;Company.Program.Nb.Setup.&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.msi to Setup\msi\&#34;/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#06287e&#34;Copy-Item/span -Path (span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;UpgradeTool-&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.exe&#34;/span) -Destination (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup&#34;/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Copied &#34;/span + span style=&#34;color:#19177c&#34;$strDeploymentFolder/span + span style=&#34;color:#4070a0&#34;&#34;UpgradeTool-&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.exe&#34;/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strTitle/span = span style=&#34;color:#4070a0&#34;&#34;ProgramUpdater&#34;/span&#xA;[span style=&#34;color:#902000&#34;string/span]span style=&#34;color:#19177c&#34;$strMessage/span = span style=&#34;color:#4070a0&#34;&#34;Do you want the script to copy the path to the web.config to clipboard, for UpgradeTool? &#34;/span&#xA;span style=&#34;color:#19177c&#34;$strMessage/span += span style=&#34;color:#4070a0&#34;&#34;This will overwrite current contents of clipboard.&#34;/span&#xA;span style=&#34;color:#19177c&#34;$yes/span = span style=&#34;color:#06287e&#34;New-Object/span System.span style=&#34;color:#06287e&#34;Management/span.span style=&#34;color:#06287e&#34;Automation/span.span style=&#34;color:#06287e&#34;Host/span.span style=&#34;color:#06287e&#34;ChoiceDescription/span span style=&#34;color:#4070a0&#34;&#34;&amp;amp;Yes&#34;/span, `&#xA;    span style=&#34;color:#4070a0&#34;&#34;Copy the path, overwrite the clipboard contents.&#34;/span&#xA;span style=&#34;color:#19177c&#34;$no/span = span style=&#34;color:#06287e&#34;New-Object/span System.span style=&#34;color:#06287e&#34;Management/span.span style=&#34;color:#06287e&#34;Automation/span.span style=&#34;color:#06287e&#34;Host/span.span style=&#34;color:#06287e&#34;ChoiceDescription/span span style=&#34;color:#4070a0&#34;&#34;&amp;amp;No&#34;/span, `&#xA;    span style=&#34;color:#4070a0&#34;&#34;Do not copy anything, just start the UpgradeTool.&#34;/span&#xA;span style=&#34;color:#19177c&#34;$options/span = System.span style=&#34;color:#06287e&#34;Management/span.span style=&#34;color:#06287e&#34;Automation/span.span style=&#34;color:#06287e&#34;Host/span.span style=&#34;color:#06287e&#34;ChoiceDescription/span[]&#xA;[span style=&#34;color:#902000&#34;int/span]span style=&#34;color:#19177c&#34;$intResult/span = span style=&#34;color:#19177c&#34;$host/span.span style=&#34;color:#06287e&#34;ui/span.span style=&#34;color:#06287e&#34;PromptForChoice/span(span style=&#34;color:#19177c&#34;$strTitle/span, span style=&#34;color:#19177c&#34;$strMessage/span, span style=&#34;color:#19177c&#34;$options/span, 0)&#xA;span style=&#34;color:#007020; font-weight:bold&#34;switch/span (span style=&#34;color:#19177c&#34;$intResult/span)&#xA;    {&#xA;        0 { [Windows.span style=&#34;color:#06287e&#34;Forms/span.span style=&#34;color:#06287e&#34;Clipboard/span]::SetText(span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;web.config&#34;/span) }&#xA;    }&#xA;&#xA;span style=&#34;color:#19177c&#34;$UpgradeToolPid/span = (span style=&#34;color:#06287e&#34;Start-Process/span -FilePath (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\UpgradeTool-&#34;/span + span style=&#34;color:#19177c&#34;$strVerMsSql/span + span style=&#34;color:#4070a0&#34;&#34;.exe&#34;/span) -Wait -PassThru).span style=&#34;color:#06287e&#34;Id/span&#xA;span style=&#34;color:#007020; font-weight:bold&#34;try/span&#xA;{&#xA;    span style=&#34;color:#06287e&#34;Wait-Process/span -Id span style=&#34;color:#19177c&#34;$UpgradeToolPid/span -ErrorAction SilentlyContinue&#xA;}&#xA;span style=&#34;color:#007020; font-weight:bold&#34;catch/span&#xA;{    &#xA;}&#xA;&#xA;span style=&#34;color:#06287e&#34;Copy-Item/span -Path (span style=&#34;color:#19177c&#34;$strWebsiteFolder/span + span style=&#34;color:#4070a0&#34;&#34;Setup\UpgradeLog.txt&#34;/span) -Destination (span style=&#34;color:#19177c&#34;$strLogFolder/span) -Force | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;&#xA;Start-Website -Name span style=&#34;color:#19177c&#34;$strIISWebsiteName/span&#xA;Start-WebAppPool -Name span style=&#34;color:#19177c&#34;$strIISAppPool/span | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#60a0b0; font-style:italic&#34;# &#34;Started IIS website &#34; + $strIISWebsiteName + &#34; &#34; + (Get-Date -format &#34;yyyyMMddHHmm&#34;) -&amp;gt; PassThru/span&#xA;span style=&#34;color:#60a0b0; font-style:italic&#34;# &#34;Started IIS application pool &#34; + $strIISAppPool + &#34; &#34; + (Get-Date -format &#34;yyyyMMddHHmm&#34;)/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Attempting to start IIS website &#34;/span + span style=&#34;color:#19177c&#34;$strIISWebsiteName/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Attempting to start IIS application pool &#34;/span + span style=&#34;color:#19177c&#34;$strIISAppPool/span + span style=&#34;color:#4070a0&#34;&#34; &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;&#xA;span style=&#34;color:#4070a0&#34;&#34;Waiting&#34;/span | span style=&#34;color:#06287e&#34;Out-Null/span&#xA;&#xA;[span style=&#34;color:#902000&#34;int/span]span style=&#34;color:#19177c&#34;$intSec/span = 0&#xA;span style=&#34;color:#007020; font-weight:bold&#34;while/span ( ( (Get-WebAppPoolState span style=&#34;color:#19177c&#34;$strIISAppPool/span).span style=&#34;color:#06287e&#34;Value/span -ne span style=&#34;color:#4070a0&#34;&#34;Started&#34;/span ) -and ( (Get-WebsiteState span style=&#34;color:#19177c&#34;$strIISWebsiteName/span).span style=&#34;color:#06287e&#34;Value/span -ne span style=&#34;color:#4070a0&#34;&#34;Started&#34;/span ) )&#xA;{&#xA;    span style=&#34;color:#06287e&#34;Start-Sleep/span 2&#xA;    span style=&#34;color:#19177c&#34;$intSec/span += 2&#xA;    span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Waited &#34;/span + span style=&#34;color:#19177c&#34;$intSec/span + span style=&#34;color:#4070a0&#34;&#34; of 60 seconds.  &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;    span style=&#34;color:#007020; font-weight:bold&#34;if/span (span style=&#34;color:#19177c&#34;$intSec/span -eq 60)&#xA;    {&#xA;        span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;apppool and website not running, upgrader failed, result mail might fail.  &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;        span style=&#34;color:#007020; font-weight:bold&#34;break/span&#xA;    }&#xA;}&#xA;&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Apppool &#34;/span + span style=&#34;color:#19177c&#34;$strIISAppPool/span + span style=&#34;color:#4070a0&#34;&#34; status: &#34;/span + (Get-WebAppPoolState span style=&#34;color:#19177c&#34;$strIISAppPool/span).span style=&#34;color:#06287e&#34;Value/span + span style=&#34;color:#4070a0&#34;&#34;.  &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMddHHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;span style=&#34;color:#06287e&#34;Add-Content/span -Value (span style=&#34;color:#4070a0&#34;&#34;Website &#34;/span + span style=&#34;color:#19177c&#34;$strIISWebsiteName/span + span style=&#34;color:#4070a0&#34;&#34; status: &#34;/span + (Get-WebsiteState span style=&#34;color:#19177c&#34;$strIISWebsiteName/span).span style=&#34;color:#06287e&#34;Value/span + span style=&#34;color:#4070a0&#34;&#34;.  &#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMdd_HHmm&#34;/span)) -Path span style=&#34;color:#19177c&#34;$strLog/span -PassThru&#xA;&#xA;span style=&#34;color:#19177c&#34;$Error/span | span style=&#34;color:#06287e&#34;Select-Object/span * | span style=&#34;color:#06287e&#34;Out-File/span (span style=&#34;color:#19177c&#34;$strLogFolder/span + span style=&#34;color:#4070a0&#34;&#34;ProgramUpdater.errors&#34;/span + (span style=&#34;color:#06287e&#34;Get-Date/span -format span style=&#34;color:#4070a0&#34;&#34;yyyyMMdd.HHmm&#34;/span) + span style=&#34;color:#4070a0&#34;&#34;h.log&#34;/span)&#xA;&#xA;MailResult span style=&#34;color:#19177c&#34;$strLogFolder/span span style=&#34;color:#19177c&#34;$hshProgramUpdaterSettings/span&#xA;&#xA;}]]&gt;</description>
      <content:encoded><![CDATA[<p><span style="color:#007020; font-weight:bold">Function</span> EnsureGuiName (<span style="color:#19177c">$strFolder</span>)
{
    <span style="color:#19177c">$strFolder</span> = BackslashTrailToFolder(<span style="color:#19177c">$strFolder</span>)
    [<span style="color:#902000">string</span>]<span style="color:#19177c">$strFolderGui</span> = <span style="color:#4070a0">“Company.Program.Gui\”</span>
    <span style="color:#007020; font-weight:bold">if</span> (<span style="color:#19177c">$strFolder</span>.<span style="color:#06287e">Length</span> -lt <span style="color:#19177c">$strFolderGui</span>.<span style="color:#06287e">Length</span>)
    {
        [<span style="color:#902000">int</span>]<span style="color:#19177c">$intStartIx</span> = 0
    }
    <span style="color:#007020; font-weight:bold">else</span>
    {
        [<span style="color:#902000">int</span>]<span style="color:#19177c">$intStartIx</span> = <span style="color:#19177c">$strFolder</span>.<span style="color:#06287e">Length</span> – <span style="color:#19177c">$strFolderGui</span>.<span style="color:#06287e">Length</span>
    }</p>

<p>    <span style="color:#007020; font-weight:bold">if</span> (<span style="color:#19177c">$strFolder</span>.<span style="color:#06287e">Substring</span>(<span style="color:#19177c">$intStartIx</span>) -ne <span style="color:#19177c">$strFolderGui</span>)
    {
        <span style="color:#19177c">$strFolder</span> += <span style="color:#19177c">$strFolderGui</span>
    }</p>

<p>    <span style="color:#007020; font-weight:bold">if</span> (<span style="color:#19177c">$strFolder</span>.<span style="color:#06287e">Substring</span>(0, <span style="color:#4070a0">“D:\Websites\”</span>.<span style="color:#06287e">Length</span>) -ne <span style="color:#4070a0">“D:\Websites\”</span>)
    {
        <span style="color:#19177c">$strFolder</span> = <span style="color:#4070a0">“D:\Websites\”</span> + <span style="color:#19177c">$strFolder</span>
    }</p>

<p>    <span style="color:#007020; font-weight:bold">return</span> <span style="color:#19177c">$strFolder</span>
}</p>

<p><span style="color:#007020; font-weight:bold">function</span> Expand-File(<span style="color:#19177c">$file</span>, <span style="color:#19177c">$destination</span>)
{
    <span style="color:#007020; font-weight:bold">if</span> ((<span style="color:#06287e">Test-Path</span> <span style="color:#19177c">$destination</span>) -eq <span style="color:#19177c">$false</span>)
        { <span style="color:#06287e">New-Item</span> -Path (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$destination</span> -Parent) -Name (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$destination</span> -Leaf) -ItemType directory | <span style="color:#06287e">Out-Null</span> }</p>

<p>    <span style="color:#19177c">$shell</span> = <span style="color:#06287e">new-object</span> -com shell.<span style="color:#06287e">application</span>
    <span style="color:#19177c">$zip</span> = <span style="color:#19177c">$shell</span>.<span style="color:#06287e">NameSpace</span>(<span style="color:#19177c">$file</span>)
    <span style="color:#007020; font-weight:bold">foreach</span>(<span style="color:#19177c">$item</span> <span style="color:#007020; font-weight:bold">in</span> <span style="color:#19177c">$zip</span>.<span style="color:#06287e">items</span>())
    {
        <span style="color:#19177c">$shell</span>.<span style="color:#06287e">Namespace</span>(<span style="color:#19177c">$destination</span>).<span style="color:#06287e">copyhere</span>(<span style="color:#19177c">$item</span>)
    }
}</p>

<p><span style="color:#007020; font-weight:bold">function</span> TestRequirementFilesys(<span style="color:#19177c">$astrFileList</span>, <span style="color:#19177c">$strLog</span>)
{
    [<span style="color:#902000">bool</span>]<span style="color:#19177c">$blnResult</span> = <span style="color:#19177c">$true</span></p>

<p>    <span style="color:#007020; font-weight:bold">For</span> (<span style="color:#19177c">$i</span>=0; <span style="color:#19177c">$i</span> -lt (<span style="color:#19177c">$astrFileList</span>.<span style="color:#06287e">Count</span>); <span style="color:#19177c">$i</span>++)
    {
        <span style="color:#06287e">Write-Host</span> <span style="color:#4070a0">“Testing “</span> <span style="color:#19177c">$astrFileList</span>[<span style="color:#19177c">$i</span>] <span style="color:#4070a0">” ... “</span> -NoNewline
        <span style="color:#007020; font-weight:bold">if</span> ((<span style="color:#06287e">Test-Path</span> <span style="color:#19177c">$astrFileList</span>[<span style="color:#19177c">$i</span>]) -eq <span style="color:#19177c">$false</span>)
        {
            <span style="color:#06287e">Add-Content</span> -Value (<span style="color:#19177c">$astrFileList</span>[<span style="color:#19177c">$i</span>] + <span style="color:#4070a0">” missing”</span>) -Path <span style="color:#19177c">$strLog</span>
            <span style="color:#06287e">Write-Host</span> <span style="color:#4070a0">“`n”</span>
            <span style="color:#007020; font-weight:bold">Throw</span> (<span style="color:#19177c">$astrFileList</span>[<span style="color:#19177c">$i</span>] + <span style="color:#4070a0">” missing”</span>)
            <span style="color:#19177c">$blnResult</span> = <span style="color:#19177c">$false</span>
        }
        <span style="color:#007020; font-weight:bold">else</span>
        {
            <span style="color:#06287e">Write-Host</span> <span style="color:#4070a0">“OK”</span>
        }
    }
    <span style="color:#007020; font-weight:bold">if</span> (<span style="color:#19177c">$PSVersionTable</span>.<span style="color:#06287e">PSVersion</span>.<span style="color:#06287e">Major</span> -lt 4)
    {
        <span style="color:#06287e">Add-Content</span> -Value <span style="color:#4070a0">“This script requires at least version 4 of PowerShell (in WMF 4, <a href="http://www.microsoft.com/en-us/download/details.aspx?id=40855).&#34;" rel="nofollow">http://www.microsoft.com/en-us/download/details.aspx?id=40855).&#34;</a></span> -Path <span style="color:#19177c">$strLog</span> -PassThru
        <span style="color:#19177c">$blnResult</span> = <span style="color:#19177c">$false</span>
    }
    <span style="color:#007020; font-weight:bold">return</span> <span style="color:#19177c">$blnResult</span>
}</p>

<p><span style="color:#007020; font-weight:bold">function</span> GetDevExpressVersionFromProgramVersion(<span style="color:#19177c">$strNewVersion</span>)
{
    [<span style="color:#902000">int</span>]<span style="color:#19177c">$intProgMainVersion</span> = (<span style="color:#19177c">$strNewVersion</span>.<span style="color:#06287e">Split</span>(<span style="color:#4070a0">”.”</span>))[0]</p>

<p>    <span style="color:#007020; font-weight:bold">switch</span> (<span style="color:#19177c">$intProgMainVersion</span>)</p>

<p>    {
        2 {
            <span style="color:#007020; font-weight:bold">return</span> 9
          }
        3 {
            <span style="color:#007020; font-weight:bold">return</span> 15
          }
    }
}</p>

<p><span style="color:#007020; font-weight:bold">function</span> GetFilePropTags([<span style="color:#902000">string</span>]<span style="color:#19177c">$strPath</span>)
{
    <span style="color:#19177c">$objShell</span> = <span style="color:#06287e">New-Object</span> -COMObject Shell.<span style="color:#06287e">Application</span>
    [<span style="color:#902000">string</span>]<span style="color:#19177c">$strFolder</span> = <span style="color:#06287e">Split-Path</span> <span style="color:#19177c">$strPath</span>
    [<span style="color:#902000">string</span>]<span style="color:#19177c">$strFile</span> = <span style="color:#06287e">Split-Path</span> <span style="color:#19177c">$strPath</span> -Leaf
    <span style="color:#19177c">$objShellfolder</span> = <span style="color:#19177c">$objShell</span>.<span style="color:#06287e">Namespace</span>(<span style="color:#19177c">$strFolder</span>)
    <span style="color:#19177c">$objShellfile</span> = <span style="color:#19177c">$objShellfolder</span>.<span style="color:#06287e">ParseName</span>(<span style="color:#19177c">$strFile</span>)</p>

<p>    <span style="color:#60a0b0; font-style:italic"># To get a list of index numbers and their meaning, use this:</span>
    <span style="color:#60a0b0; font-style:italic"># 0..287 | Foreach-Object { &#39;{0} = {1}&#39; -f $<em>, $shellfolder.GetDetailsOf($null, $</em>) }</span></p>

<p>    [<span style="color:#902000">int</span>]<span style="color:#19177c">$intExtFilePropsTags</span> = 18
    <span style="color:#19177c">$objShellfolder</span>.<span style="color:#06287e">GetDetailsOf</span>(<span style="color:#19177c">$objShellfile</span>, <span style="color:#19177c">$intExtFilePropsTags</span>)
}</p>

<p><span style="color:#007020; font-weight:bold">function</span> GetMsiProdVer([<span style="color:#902000">string</span>]<span style="color:#19177c">$strPath</span>)
{
    <span style="color:#19177c">$strTagsFromMsi</span> = GetFilePropTags(<span style="color:#19177c">$strPath</span>)
    [<span style="color:#902000">string</span>[]]<span style="color:#19177c">$astrFileTags</span> = <span style="color:#19177c">$strTagsFromMsi</span>.<span style="color:#06287e">Split</span>(<span style="color:#4070a0">”,”</span>)
    [<span style="color:#902000">int</span>[]]<span style="color:#19177c">$aintVno</span> = (<span style="color:#19177c">$astrFileTags</span>[1]).<span style="color:#06287e">split</span>(<span style="color:#4070a0">”.”</span>)
    [<span style="color:#902000">string</span>]::Join(<span style="color:#4070a0">”.”</span>, <span style="color:#19177c">$aintVno</span>)
}</p>

<p><span style="color:#007020; font-weight:bold">function</span> GetDevExpressVersion([<span style="color:#902000">string</span>]<span style="color:#19177c">$strDevExpressFolder</span>)
{
    <span style="color:#19177c">$dirDevExpress</span> = <span style="color:#06287e">Get-ChildItem</span> <span style="color:#19177c">$strDevExpressFolder</span> *.<span style="color:#06287e">dll</span>
    ((<span style="color:#06287e">Get-ItemProperty</span> (<span style="color:#19177c">$dirDevExpress</span>[0].<span style="color:#06287e">FullName</span>)).<span style="color:#06287e">VersionInfo</span>).<span style="color:#06287e">FileVersion</span>
}</p>

<p><span style="color:#60a0b0; font-style:italic"><a href="/cruisinit/tag:endregion" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">endregion</span></a></span></p>

<p><span style="color:#19177c">$hshProgramUpdaterSettings</span> = Get-IniContent <span style="color:#19177c">$IniFileUser</span>
<span style="color:#19177c">$hshProgramUpdaterSettings</span> += Get-IniContent <span style="color:#19177c">$IniFileWebConfig</span></p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strDeploymentFolder</span> = <span style="color:#4070a0">“D:\Websites\Deploy\”</span>
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strLogFolder</span> = <span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“UpdateLogs\”</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd.HHmm”</span>) + <span style="color:#4070a0">“h\”</span>
<span style="color:#007020; font-weight:bold">if</span> ((<span style="color:#06287e">Test-Path</span> <span style="color:#19177c">$strLogFolder</span>) -eq <span style="color:#19177c">$false</span>)
    { <span style="color:#06287e">New-Item</span> -Path (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$strLogFolder</span> -Parent) -Name (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$strLogFolder</span> -Leaf) -ItemType directory | <span style="color:#06287e">Out-Null</span> }
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strLog</span> = <span style="color:#19177c">$strLogFolder</span> + <span style="color:#4070a0">“ProgramUpdater<em>“</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd</em>HHmm”</span>) + <span style="color:#4070a0">“h.log”</span></p>

<p><span style="color:#007020; font-weight:bold">if</span> ( ( <span style="color:#19177c">$hshProgramUpdaterSettings</span>[<span style="color:#4070a0">“HeaderUser”</span>][<span style="color:#4070a0">“Version”</span>] -ne <span style="color:#19177c">$strIniVersion</span> ) -or ( <span style="color:#19177c">$hshProgramUpdaterSettings</span>[<span style="color:#4070a0">“HeaderWebConfig”</span>][<span style="color:#4070a0">“Version”</span>] -ne <span style="color:#19177c">$strIniVersion</span> ) )
{
    <span style="color:#06287e">Add-Content</span> -Value <span style="color:#4070a0">“Wrong version of at least 1 .ini.”</span> -Path <span style="color:#19177c">$strLog</span> -PassThru
    <span style="color:#007020; font-weight:bold">Exit</span>
}</p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strVerMsSql</span> = <span style="color:#19177c">$hshProgramUpdaterSettings</span>[<span style="color:#4070a0">“MssqlVersionen”</span>][<span style="color:#4070a0">“DEFAULT”</span>]
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strHostname</span> = <span style="color:#19177c">$env</span>:COMPUTERNAME
<span style="color:#007020; font-weight:bold">if</span> (<span style="color:#19177c">$null</span> -ne <span style="color:#19177c">$hshProgramUpdaterSettings</span>[<span style="color:#4070a0">“MssqlVersionen”</span>][<span style="color:#19177c">$strHostname</span>])
    { <span style="color:#19177c">$strVerMsSql</span> = <span style="color:#19177c">$hshProgramUpdaterSettings</span>[<span style="color:#4070a0">“MssqlVersionen”</span>][<span style="color:#19177c">$strHostname</span>] }</p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strWebsiteFolder</span> = <span style="color:#19177c">$hshProgramUpdaterSettings</span>[<span style="color:#4070a0">“Website folder to Upgrade”</span>][<span style="color:#4070a0">“Folder”</span>]
<span style="color:#60a0b0; font-style:italic"># $strWebsiteFolder.Trim(” “)</span>
<span style="color:#007020; font-weight:bold">while</span> ( <span style="color:#19177c">$strWebsiteFolder</span>.<span style="color:#06287e">EndsWith</span>(<span style="color:#4070a0">” “</span>) ) { <span style="color:#19177c">$strWebsiteFolder</span> = <span style="color:#19177c">$strWebsiteFolder</span>.<span style="color:#06287e">Substring</span>( 0, (<span style="color:#19177c">$strWebsiteFolder</span>.<span style="color:#06287e">Length</span> – 1) ) }
<span style="color:#19177c">$strWebsiteFolder</span> = EnsureGuiName(<span style="color:#19177c">$strWebsiteFolder</span>)
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strIISWebsiteName</span> = (Get-Website | <span style="color:#06287e">Where-Object</span> -Property <span style="color:#4070a0">“PhysicalPath”</span> -EQ -Value (FolderNameWoTrailingBackslash(<span style="color:#19177c">$strWebsiteFolder</span>))).<span style="color:#06287e">Name</span>
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strIISAppPool</span> = (<span style="color:#06287e">Get-Item</span> (<span style="color:#4070a0">“IIS:\Sites\”</span> + <span style="color:#19177c">$strIISWebsiteName</span>) | <span style="color:#06287e">Select-Object</span> applicationPool).<span style="color:#06287e">applicationPool</span>
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strDeployZipFile</span> = <span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“Company.Program.CC.Web.Gui.”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">”.zip”</span></p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strOldVersion</span> = ((<span style="color:#06287e">Get-ItemProperty</span> (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“bin\Company.Program.BusinessLogik.dll”</span>)).<span style="color:#06287e">VersionInfo</span>).<span style="color:#06287e">ProductVersion</span>
<span style="color:#19177c">$msidir</span> = <span style="color:#06287e">Get-Item</span> (<span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“Company.Program.Nb.Setup.”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">”.*.msi”</span>)
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strFirstMsiNewVer</span> = <span style="color:#19177c">$strDeploymentFolder</span> + (<span style="color:#19177c">$msidir</span>[0].<span style="color:#06287e">Name</span>)
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strNewVersion</span> = GetMsiProdVer(<span style="color:#19177c">$strFirstMsiNewVer</span>)
<span style="color:#007020; font-weight:bold">while</span> (<span style="color:#19177c">$null</span> -eq <span style="color:#19177c">$strNewVersion</span> -or <span style="color:#19177c">$strNewVersion</span> -eq <span style="color:#4070a0">””</span>)
{
    <span style="color:#06287e">Write-Host</span> <span style="color:#4070a0">“Die Zielversion konnte nicht aus $strFirstMsiNewVer ermittelt werden, bitte hier eingeben (&#39;3.xx.x.xxxxx&#39;):”</span> -ForegroundColor Red
    <span style="color:#19177c">$strNewVersion</span> = <span style="color:#06287e">Read-Host</span>
}
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strDevExpressFolder</span> = <span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“DevExpress{0}\”</span> -f (GetDevExpressVersionFromProgramVersion(<span style="color:#19177c">$strNewVersion</span>))
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strBackupFolder</span> = FolderNameWoTrailingBackslash(<span style="color:#19177c">$strWebsiteFolder</span>)
<span style="color:#19177c">$strBackupFolder</span> += <span style="color:#4070a0">“<em>“</span>
<span style="color:#19177c">$strBackupFolder</span> += <span style="color:#19177c">$strOldVersion</span>
<span style="color:#19177c">$strBackupFolder</span> += <span style="color:#4070a0">“</em>“</span>
<span style="color:#19177c">$strBackupFolder</span> += (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd.HHmm”</span>)
<span style="color:#19177c">$strBackupFolder</span> += <span style="color:#4070a0">“h\”</span></p>

<p><span style="color:#06287e">Write-Host</span> -BackgroundColor Gray -ForegroundColor Blue -Object <span style="color:#4070a0">“<code>n</code>nEffective Parameters for current run of this script”</span>
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strThisScriptVersion</span> = (<span style="color:#06287e">Get-Help</span> <span style="color:#19177c">$PSCommandPath</span> -Full).<span style="color:#06287e">alertSet</span>.<span style="color:#06287e">alert</span>[0] -split(<span style="color:#4070a0">“`n”</span>) -match <span style="color:#4070a0">“Version: “</span> -replace(<span style="color:#4070a0">”}”</span>,<span style="color:#4070a0">””</span>)</p>

<p><span style="color:#19177c">$objParamTable</span> = <span style="color:#06287e">New-Object</span> PSObject
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“Ini Files”</span> (<span style="color:#19177c">$IniFileUser</span> + <span style="color:#4070a0">”, “</span> + <span style="color:#19177c">$IniFileWebConfig</span> + <span style="color:#4070a0">” — optional command line parameters”</span>)
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“Website folder”</span> <span style="color:#19177c">$strWebsiteFolder</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“This script&#39;s version”</span> <span style="color:#19177c">$strThisScriptVersion</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“IIS website name”</span> <span style="color:#19177c">$strIISWebsiteName</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“IIS application pool name”</span> <span style="color:#19177c">$strIISAppPool</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“Old version”</span> <span style="color:#19177c">$strOldVersion</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“New version”</span> <span style="color:#19177c">$strNewVersion</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“MS SQL version”</span> <span style="color:#19177c">$strVerMsSql</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“Deploy folder”</span> <span style="color:#19177c">$strDeploymentFolder</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“Deploy zip file”</span> <span style="color:#19177c">$strDeployZipFile</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“DevExpress folder”</span> <span style="color:#19177c">$strDevExpressFolder</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“Backup folder”</span> <span style="color:#19177c">$strBackupFolder</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Add-Member</span> <span style="color:#4070a0">“Log folder”</span> <span style="color:#19177c">$strLogFolder</span>
<span style="color:#19177c">$objParamTable</span> | <span style="color:#06287e">Format-List</span></p>

<p>[<span style="color:#902000">string</span>[]]<span style="color:#19177c">$astrFileList</span> = (<span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“<em>.msi”</span>)
<span style="color:#19177c">$astrFileList</span> += (<span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“UpgradeTool-”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">”.exe”</span>)
<span style="color:#19177c">$astrFileList</span> += <span style="color:#19177c">$strDeployZipFile</span>
<span style="color:#19177c">$astrFileList</span> += (<span style="color:#19177c">$strDevExpressFolder</span> + <span style="color:#4070a0">“</em>“</span>)
<span style="color:#19177c">$astrFileList</span> += (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“*”</span>)
[<span style="color:#902000">bool</span>]<span style="color:#19177c">$blnResult</span> = TestRequirementFilesys <span style="color:#19177c">$astrFileList</span> <span style="color:#19177c">$strLog</span></p>

<p><span style="color:#007020; font-weight:bold">if</span> (<span style="color:#19177c">$blnResult</span> -eq <span style="color:#19177c">$false</span>)
{
    <span style="color:#007020; font-weight:bold">Exit</span>
}</p>

<p><span style="color:#06287e">Write-Host</span> -BackgroundColor Gray -ForegroundColor Blue -Object <span style="color:#4070a0">“If necessary, stop and run script again. Run &#39;.\ProgramUpdater.ps1 –?&#39; for more details.”</span>
<span style="color:#06287e">Write-Host</span> -BackgroundColor Gray -ForegroundColor Red -Object <span style="color:#4070a0">“If you don&#39;t understand what this script does read the &lt;Program&gt; installation guides.”</span></p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strTitle</span> = <span style="color:#4070a0">“ProgramUpdater”</span>
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strMessage</span> = <span style="color:#4070a0">“Do you want to go on?”</span>
<span style="color:#19177c">$yes</span> = <span style="color:#06287e">New-Object</span> System.<span style="color:#06287e">Management</span>.<span style="color:#06287e">Automation</span>.<span style="color:#06287e">Host</span>.<span style="color:#06287e">ChoiceDescription</span> <span style="color:#4070a0">“&amp;Yes”</span>, <code>
    &lt;span style=&#34;color:#4070a0&#34;&gt;&#34;Go on.&#34;&lt;/span&gt;
&lt;span style=&#34;color:#19177c&#34;&gt;$no&lt;/span&gt; = &lt;span style=&#34;color:#06287e&#34;&gt;New-Object&lt;/span&gt; System.&lt;span style=&#34;color:#06287e&#34;&gt;Management&lt;/span&gt;.&lt;span style=&#34;color:#06287e&#34;&gt;Automation&lt;/span&gt;.&lt;span style=&#34;color:#06287e&#34;&gt;Host&lt;/span&gt;.&lt;span style=&#34;color:#06287e&#34;&gt;ChoiceDescription&lt;/span&gt; &lt;span style=&#34;color:#4070a0&#34;&gt;&#34;&amp;amp;No&#34;&lt;/span&gt;,</code>
    <span style="color:#4070a0">“Exit the script.”</span>
<span style="color:#19177c">$options</span> = System.<span style="color:#06287e">Management</span>.<span style="color:#06287e">Automation</span>.<span style="color:#06287e">Host</span>.<span style="color:#06287e">ChoiceDescription</span>[]
[<span style="color:#902000">int</span>]<span style="color:#19177c">$intResult</span> = <span style="color:#19177c">$host</span>.<span style="color:#06287e">ui</span>.<span style="color:#06287e">PromptForChoice</span>(<span style="color:#19177c">$strTitle</span>, <span style="color:#19177c">$strMessage</span>, <span style="color:#19177c">$options</span>, 1)
<span style="color:#007020; font-weight:bold">switch</span> (<span style="color:#19177c">$intResult</span>)
    {
        1 {<span style="color:#007020; font-weight:bold">Exit</span>}
    }</p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strFQDNThisMachine</span> = [System.<span style="color:#06287e">Net</span>.<span style="color:#06287e">Dns</span>]::GetHostByName((hostname)).<span style="color:#06287e">HostName</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Computer name (FQDN): “</span> + <span style="color:#19177c">$strFQDNThisMachine</span>) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Script starter: “</span> + <span style="color:#19177c">$env</span>:USERDOMAIN + <span style="color:#4070a0">“\”</span> + <span style="color:#19177c">$env</span>:USERNAME) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Website folder: “</span> + <span style="color:#19177c">$strWebsiteFolder</span>) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Deploy folder: “</span> + <span style="color:#19177c">$strDeploymentFolder</span>) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Dev express folder: “</span> + <span style="color:#19177c">$strDevExpressFolder</span>) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Backup folder: “</span> + <span style="color:#19177c">$strBackupFolder</span>) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“New version: “</span> + <span style="color:#19177c">$strNewVersion</span>) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“IIS website name: “</span> + <span style="color:#19177c">$strIISWebsiteName</span>) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“IIS application pool name: “</span> + <span style="color:#19177c">$strIISAppPool</span>) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“MS SQL version: “</span> + <span style="color:#19177c">$strVerMsSql</span>) -Path <span style="color:#19177c">$strLog</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“<code>n</code>n”</span>) -Path <span style="color:#19177c">$strLog</span></p>

<p><span style="color:#60a0b0; font-style:italic"># Out-Null: Do not continue before this line has been completely executed</span>
Stop-Website -Name <span style="color:#19177c">$strIISWebsiteName</span> | <span style="color:#06287e">Out-Null</span>
Stop-WebAppPool -Name <span style="color:#19177c">$strIISAppPool</span> | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Attempted to stop IIS website “</span> + <span style="color:#19177c">$strIISWebsiteName</span> + <span style="color:#4070a0">“<em>“</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd</em>HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Attempted to stop IIS application pool “</span> + <span style="color:#19177c">$strIISAppPool</span> + <span style="color:#4070a0">“<em>“</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd</em>HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Attempting to ensure apppool”</span> + <span style="color:#19177c">$strIISAppPool</span> + <span style="color:#4070a0">” and website “</span> + <span style="color:#19177c">$strIISWebsiteName</span> + <span style="color:#4070a0">” are stopped. _ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Apppool “</span> + <span style="color:#19177c">$strIISAppPool</span> + <span style="color:#4070a0">” status: “</span> + (Get-WebAppPoolState <span style="color:#19177c">$strIISAppPool</span>).<span style="color:#06287e">Value</span> + <span style="color:#4070a0">”. _ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Website “</span> + <span style="color:#19177c">$strIISWebsiteName</span> + <span style="color:#4070a0">” status: “</span> + (Get-WebsiteState <span style="color:#19177c">$strIISWebsiteName</span>).<span style="color:#06287e">Value</span> + <span style="color:#4070a0">”. _ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#4070a0">“Waiting”</span> | <span style="color:#06287e">Out-Null</span></p>

<p>[<span style="color:#902000">int</span>]<span style="color:#19177c">$intSec</span> = 0
<span style="color:#007020; font-weight:bold">while</span> ( ( (Get-WebAppPoolState <span style="color:#19177c">$strIISAppPool</span>).<span style="color:#06287e">Value</span> -ne <span style="color:#4070a0">“Stopped”</span> ) -and ( (Get-WebsiteState <span style="color:#19177c">$strIISWebsiteName</span>).<span style="color:#06287e">Value</span> -ne <span style="color:#4070a0">“Stopped”</span> ) )
{
    <span style="color:#06287e">Start-Sleep</span> 2
    <span style="color:#19177c">$intSec</span> += 2
    <span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Waited “</span> + <span style="color:#19177c">$intSec</span> + <span style="color:#4070a0">” of 60 seconds. _ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru
    <span style="color:#007020; font-weight:bold">if</span> (<span style="color:#19177c">$intSec</span> -eq 60)
    {
        <span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“apppool and website apparently still running, exiting. _ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru
        <span style="color:#007020; font-weight:bold">Exit</span>
    }
}</p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strNewVerFolder</span> = FolderNameWoTrailingBackslash(<span style="color:#19177c">$strWebsiteFolder</span>)
<span style="color:#19177c">$strNewVerFolder</span>  += <span style="color:#4070a0">“_New\”</span></p>

<p>Expand-File -file <span style="color:#19177c">$strDeployZipFile</span> -destination <span style="color:#19177c">$strNewVerFolder</span> | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Unzipped “</span> + <span style="color:#19177c">$strDeployZipFile</span> + <span style="color:#4070a0">” “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Remove-Item</span> -Path (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“bin\DevExpress<em>“</span>) -Force -Recurse | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Deleted “</span> + <span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“bin\DevExpress</em> “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#007020; font-weight:bold">if</span> ((<span style="color:#06287e">Test-Path</span> <span style="color:#19177c">$strNewVerFolder</span>) -eq <span style="color:#19177c">$false</span>)
    { <span style="color:#06287e">New-Item</span> -Path (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$strNewVerFolder</span> -Parent) -Name (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$strNewVerFolder</span> -Leaf) -ItemType directory | <span style="color:#06287e">Out-Null</span> }
<span style="color:#007020; font-weight:bold">if</span> ((<span style="color:#06287e">Test-Path</span> <span style="color:#19177c">$strBackupFolder</span>) -eq <span style="color:#19177c">$false</span>)
    { <span style="color:#06287e">New-Item</span> -Path (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$strBackupFolder</span> -Parent) -Name (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$strBackupFolder</span> -Leaf) -ItemType directory | <span style="color:#06287e">Out-Null</span> }</p>

<p><span style="color:#06287e">Copy-Item</span> -Path (<span style="color:#19177c">$strDevExpressFolder</span> + <span style="color:#4070a0">“<em>“</span>) -Destination (<span style="color:#19177c">$strNewVerFolder</span> + <span style="color:#4070a0">“bin”</span>) -Force | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Copied “</span> + <span style="color:#19177c">$strDevExpressFolder</span> + <span style="color:#4070a0">“</em> “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#007020; font-weight:bold">try</span>
{
    <span style="color:#06287e">Move-Item</span> -Path (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“<em>“</span>) -Destination <span style="color:#19177c">$strBackupFolder</span> -Exclude <span style="color:#4070a0">“Log”</span>,<span style="color:#4070a0">“Setup”</span>,<span style="color:#4070a0">“Temp”</span>,<span style="color:#4070a0">“logo”</span> -Force -ErrorAction SilentlyContinue | <span style="color:#06287e">Out-Null</span><br>
}
<span style="color:#007020; font-weight:bold">catch</span>
{
}
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Moved “</span> + <span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“</em> except Log\, Setup\, Temp\, logo\ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Copy-Item</span> -Path (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“*”</span>) -Destination <span style="color:#19177c">$strBackupFolder</span> -Force -Recurse | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Copied “</span> + <span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“\Log\, ...\Setup\, ...\Temp\, ...\logo\ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p>AdaptWebConfig <span style="color:#19177c">$strNewVerFolder</span> <span style="color:#19177c">$strBackupFolder</span> <span style="color:#19177c">$strNewVersion</span> <span style="color:#19177c">$strLog</span> <span style="color:#19177c">$hshProgramUpdaterSettings</span></p>

<p><span style="color:#06287e">Remove-Item</span> -Path (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\Company.Program.Nb.Setup.<em>.msi”</span>) -Force | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Deleted “</span> + <span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\Company.Program.Nb.Setup.</em>.msi “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strMsiCopyPath</span> = <span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\msi”</span>
<span style="color:#007020; font-weight:bold">if</span> ((<span style="color:#06287e">Test-Path</span> <span style="color:#19177c">$strMsiCopyPath</span>) -eq <span style="color:#19177c">$false</span>)
{
    <span style="color:#06287e">New-Item</span> -Path (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$strMsiCopyPath</span> -Parent) -Name (<span style="color:#06287e">Split-Path</span> -Path <span style="color:#19177c">$strMsiCopyPath</span> -Leaf) -ItemType directory | <span style="color:#06287e">Out-Null</span>
}
<span style="color:#007020; font-weight:bold">else</span>
{
    <span style="color:#06287e">Remove-Item</span> -Path (<span style="color:#19177c">$strMsiCopyPath</span> + <span style="color:#4070a0">“\Company.Program.Nb.Setup.*.msi”</span>) -Force | <span style="color:#06287e">Out-Null</span>
}</p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strWebConfigMsiPath</span> = <span style="color:#19177c">$strMsiCopyPath</span> + <span style="color:#4070a0">“\web.config”</span>
<span style="color:#007020; font-weight:bold">if</span> ((<span style="color:#06287e">Test-Path</span> <span style="color:#19177c">$strWebConfigMsiPath</span>) -eq <span style="color:#19177c">$false</span>)
{
    <span style="color:#19177c">$strWebConfigMsiContent</span> | <span style="color:#06287e">Out-File</span> <span style="color:#19177c">$strWebConfigMsiPath</span> -Force -Encoding utf8
    [<span style="color:#902000">string</span>]<span style="color:#19177c">$strWebConfigMsiAttr</span> = (<span style="color:#06287e">Get-Item</span> -Force <span style="color:#19177c">$strWebConfigMsiPath</span>).<span style="color:#06287e">Attributes</span> -join(<span style="color:#4070a0">”,”</span>)
    <span style="color:#007020; font-weight:bold">if</span> (<span style="color:#19177c">$strWebConfigMsiAttr</span> -notmatch(<span style="color:#4070a0">“Hidden”</span>))
    {
        (<span style="color:#06287e">Get-Item</span> -Force <span style="color:#19177c">$strWebConfigMsiPath</span>).<span style="color:#06287e">Attributes</span> = <span style="color:#19177c">$strWebConfigMsiAttr</span> + <span style="color:#4070a0">”,Hidden”</span>
    }
    <span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Created “</span> + <span style="color:#19177c">$strWebConfigMsiPath</span> + <span style="color:#4070a0">” “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru
}</p>

<p><span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Deleted “</span> + <span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\msi\Company.Program.Nb.Setup.*.msi “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Remove-Item</span> -Path (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\UpgradeLog.txt”</span>) -Force | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Deleted “</span> + <span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\UpgradeLog.txt “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Remove-Item</span> -Path (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\UpgradeTool-”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">”.exe”</span>) -Force | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Deleted “</span> + <span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\UpgradeTool-”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">”.exe “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Remove-Item</span> -Path (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Log*.<em>“</span>) -Force | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Deleted “</span> + <span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Log*.</em> “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#007020; font-weight:bold">while</span> ((<span style="color:#06287e">Get-ChildItem</span> <span style="color:#19177c">$strNewVerFolder</span>).<span style="color:#06287e">Length</span> -gt 0)
{
    <span style="color:#06287e">Move-Item</span> -Path (<span style="color:#19177c">$strNewVerFolder</span> + <span style="color:#4070a0">“<em>“</span>) -Destination <span style="color:#19177c">$strWebsiteFolder</span> -Force -ErrorAction SilentlyContinue | <span style="color:#06287e">Out-Null</span>
}
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Moved “</span> + <span style="color:#19177c">$strNewVerFolder</span> + <span style="color:#4070a0">“</em> “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Remove-Item</span> -Path (<span style="color:#19177c">$strNewVerFolder</span>) -Force -Recurse | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Deleted “</span> + <span style="color:#19177c">$strNewVerFolder</span> + <span style="color:#4070a0">” “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Copy-Item</span> -Path (<span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“Company.Program.Nb.Setup.”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">“<em>.msi”</span>) -Destination (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup”</span>) -Force | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Copied “</span> + <span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“Company.Program.Nb.Setup.”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">“</em>.msi to Setup\”</span> + <span style="color:#4070a0">” “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Copy-Item</span> -Path (<span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“Company.Program.Nb.Setup.”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">“<em>.msi”</span>) -Destination (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\msi”</span>) -Force | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Copied “</span> + <span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“Company.Program.Nb.Setup.”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">“</em>.msi to Setup\msi\”</span> + <span style="color:#4070a0">” “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#06287e">Copy-Item</span> -Path (<span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“UpgradeTool-”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">”.exe”</span>) -Destination (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup”</span>) -Force | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Copied “</span> + <span style="color:#19177c">$strDeploymentFolder</span> + <span style="color:#4070a0">“UpgradeTool-”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">”.exe”</span> + <span style="color:#4070a0">” “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p>[<span style="color:#902000">string</span>]<span style="color:#19177c">$strTitle</span> = <span style="color:#4070a0">“ProgramUpdater”</span>
[<span style="color:#902000">string</span>]<span style="color:#19177c">$strMessage</span> = <span style="color:#4070a0">“Do you want the script to copy the path to the web.config to clipboard, for UpgradeTool? “</span>
<span style="color:#19177c">$strMessage</span> += <span style="color:#4070a0">“This will overwrite current contents of clipboard.”</span>
<span style="color:#19177c">$yes</span> = <span style="color:#06287e">New-Object</span> System.<span style="color:#06287e">Management</span>.<span style="color:#06287e">Automation</span>.<span style="color:#06287e">Host</span>.<span style="color:#06287e">ChoiceDescription</span> <span style="color:#4070a0">“&amp;Yes”</span>, <code>
    &lt;span style=&#34;color:#4070a0&#34;&gt;&#34;Copy the path, overwrite the clipboard contents.&#34;&lt;/span&gt;
&lt;span style=&#34;color:#19177c&#34;&gt;$no&lt;/span&gt; = &lt;span style=&#34;color:#06287e&#34;&gt;New-Object&lt;/span&gt; System.&lt;span style=&#34;color:#06287e&#34;&gt;Management&lt;/span&gt;.&lt;span style=&#34;color:#06287e&#34;&gt;Automation&lt;/span&gt;.&lt;span style=&#34;color:#06287e&#34;&gt;Host&lt;/span&gt;.&lt;span style=&#34;color:#06287e&#34;&gt;ChoiceDescription&lt;/span&gt; &lt;span style=&#34;color:#4070a0&#34;&gt;&#34;&amp;amp;No&#34;&lt;/span&gt;,</code>
    <span style="color:#4070a0">“Do not copy anything, just start the UpgradeTool.”</span>
<span style="color:#19177c">$options</span> = System.<span style="color:#06287e">Management</span>.<span style="color:#06287e">Automation</span>.<span style="color:#06287e">Host</span>.<span style="color:#06287e">ChoiceDescription</span>[]
[<span style="color:#902000">int</span>]<span style="color:#19177c">$intResult</span> = <span style="color:#19177c">$host</span>.<span style="color:#06287e">ui</span>.<span style="color:#06287e">PromptForChoice</span>(<span style="color:#19177c">$strTitle</span>, <span style="color:#19177c">$strMessage</span>, <span style="color:#19177c">$options</span>, 0)
<span style="color:#007020; font-weight:bold">switch</span> (<span style="color:#19177c">$intResult</span>)
    {
        0 { [Windows.<span style="color:#06287e">Forms</span>.<span style="color:#06287e">Clipboard</span>]::SetText(<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“web.config”</span>) }
    }</p>

<p><span style="color:#19177c">$UpgradeToolPid</span> = (<span style="color:#06287e">Start-Process</span> -FilePath (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\UpgradeTool-”</span> + <span style="color:#19177c">$strVerMsSql</span> + <span style="color:#4070a0">”.exe”</span>) -Wait -PassThru).<span style="color:#06287e">Id</span>
<span style="color:#007020; font-weight:bold">try</span>
{
    <span style="color:#06287e">Wait-Process</span> -Id <span style="color:#19177c">$UpgradeToolPid</span> -ErrorAction SilentlyContinue
}
<span style="color:#007020; font-weight:bold">catch</span>
{<br>
}</p>

<p><span style="color:#06287e">Copy-Item</span> -Path (<span style="color:#19177c">$strWebsiteFolder</span> + <span style="color:#4070a0">“Setup\UpgradeLog.txt”</span>) -Destination (<span style="color:#19177c">$strLogFolder</span>) -Force | <span style="color:#06287e">Out-Null</span></p>

<p>Start-Website -Name <span style="color:#19177c">$strIISWebsiteName</span>
Start-WebAppPool -Name <span style="color:#19177c">$strIISAppPool</span> | <span style="color:#06287e">Out-Null</span>
<span style="color:#60a0b0; font-style:italic"># “Started IIS website ” + $strIISWebsiteName + “ ” + (Get-Date -format “yyyyMMdd<em>HHmm”) -&gt; PassThru</span>
<span style="color:#60a0b0; font-style:italic"># “Started IIS application pool ” + $strIISAppPool + “ ” + (Get-Date -format “yyyyMMdd</em>HHmm”)</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Attempting to start IIS website “</span> + <span style="color:#19177c">$strIISWebsiteName</span> + <span style="color:#4070a0">” “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd<em>HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru | <span style="color:#06287e">Out-Null</span>
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Attempting to start IIS application pool “</span> + <span style="color:#19177c">$strIISAppPool</span> + <span style="color:#4070a0">” “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd</em>HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru | <span style="color:#06287e">Out-Null</span></p>

<p><span style="color:#4070a0">“Waiting”</span> | <span style="color:#06287e">Out-Null</span></p>

<p>[<span style="color:#902000">int</span>]<span style="color:#19177c">$intSec</span> = 0
<span style="color:#007020; font-weight:bold">while</span> ( ( (Get-WebAppPoolState <span style="color:#19177c">$strIISAppPool</span>).<span style="color:#06287e">Value</span> -ne <span style="color:#4070a0">“Started”</span> ) -and ( (Get-WebsiteState <span style="color:#19177c">$strIISWebsiteName</span>).<span style="color:#06287e">Value</span> -ne <span style="color:#4070a0">“Started”</span> ) )
{
    <span style="color:#06287e">Start-Sleep</span> 2
    <span style="color:#19177c">$intSec</span> += 2
    <span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Waited “</span> + <span style="color:#19177c">$intSec</span> + <span style="color:#4070a0">” of 60 seconds. _ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru
    <span style="color:#007020; font-weight:bold">if</span> (<span style="color:#19177c">$intSec</span> -eq 60)
    {
        <span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“apppool and website not running, upgrader failed, result mail might fail. _ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru
        <span style="color:#007020; font-weight:bold">break</span>
    }
}</p>

<p><span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Apppool “</span> + <span style="color:#19177c">$strIISAppPool</span> + <span style="color:#4070a0">” status: “</span> + (Get-WebAppPoolState <span style="color:#19177c">$strIISAppPool</span>).<span style="color:#06287e">Value</span> + <span style="color:#4070a0">”. _ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru
<span style="color:#06287e">Add-Content</span> -Value (<span style="color:#4070a0">“Website “</span> + <span style="color:#19177c">$strIISWebsiteName</span> + <span style="color:#4070a0">” status: “</span> + (Get-WebsiteState <span style="color:#19177c">$strIISWebsiteName</span>).<span style="color:#06287e">Value</span> + <span style="color:#4070a0">”. _ “</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd_HHmm”</span>)) -Path <span style="color:#19177c">$strLog</span> -PassThru</p>

<p><span style="color:#19177c">$Error</span> | <span style="color:#06287e">Select-Object</span> * | <span style="color:#06287e">Out-File</span> (<span style="color:#19177c">$strLogFolder</span> + <span style="color:#4070a0">“ProgramUpdater.errors”</span> + (<span style="color:#06287e">Get-Date</span> -format <span style="color:#4070a0">“yyyyMMdd.HHmm”</span>) + <span style="color:#4070a0">“h.log”</span>)</p>

<p>MailResult <span style="color:#19177c">$strLogFolder</span> <span style="color:#19177c">$hshProgramUpdaterSettings</span></p>

<p>}</p>
]]></content:encoded>
      <guid>https://wordsmith.social/cruisinit/programupdater-ps1-teil-2</guid>
      <pubDate>Mon, 04 Jan 2021 19:17:34 +0000</pubDate>
    </item>
  </channel>
</rss>