<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:atom="http://www.w3.org/2005/Atom" 
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Utils on gal.vin</title>
    <link>https://gal.vin/utils/</link>
    <description>Recent content in Utils on gal.vin</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>&amp;copy;{year}, All Rights Reserved</copyright>
    <lastBuildDate>Tue, 18 Oct 2022 22:01:00 +0100</lastBuildDate>
    <sy:updatePeriod>daily</sy:updatePeriod>
    
        <atom:link href="https://gal.vin/utils/index.xml" rel="self" type="application/rss+xml" />
    

      
      <item>
        <title>MDT Setup - A script to make MDT deployment easy</title>
        <link>https://gal.vin/utils/mdt-setup/</link>
        <pubDate>Tue, 18 Oct 2022 22:01:00 +0100</pubDate>
        
        <atom:modified>Tue, 18 Oct 2022 22:01:00 +0100</atom:modified>
        <guid>https://gal.vin/utils/mdt-setup/</guid>
        <description>User configurable MDT setup script MDT-Setup is available from:
 GitHub The Microsoft PowerShell Gallery  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the ‘issues’ tab on GitHub.
-Mike
Features and Requirements  Designed to be run on Windows Server 2016+ The script must be run as an administrator. Tested with Windows PowerShell 5 (The version of PowerShell included with Windows Server 2016+) and PowerShell 7.</description>
        <content:encoded>&lt;h2 id=&#34;user-configurable-mdt-setup-script&#34;&gt;User configurable MDT setup script&lt;/h2&gt;
&lt;p&gt;MDT-Setup is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/MDT-Setup&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.powershellgallery.com/packages/MDT-Setup&#34;&gt;The Microsoft PowerShell Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the ‘issues’ tab on GitHub.&lt;/p&gt;
&lt;p&gt;-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Designed to be run on Windows Server 2016+&lt;/li&gt;
&lt;li&gt;The script must be run as an administrator.&lt;/li&gt;
&lt;li&gt;Tested with Windows PowerShell 5 (The version of PowerShell included with Windows Server 2016+) and PowerShell 7.&lt;/li&gt;
&lt;li&gt;Tested on Windows Server 2022.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;usage-information&#34;&gt;Usage Information&lt;/h2&gt;
&lt;p&gt;This script will install and configure Microsoft Deployment Toolkit and its prerequisites on a Windows computer with an internet connection. It has been tested on a basic Windows Server 2022 Standard edition virtual machine.&lt;/p&gt;
&lt;p&gt;Here is what the script will do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the installers for Microsoft Deployment Toolkit, the latest MDT patch, the latest ADK and WinPE for ADK.&lt;/li&gt;
&lt;li&gt;Silently install all the above.&lt;/li&gt;
&lt;li&gt;Create an MDT deployment share(s) and the folder structure.&lt;/li&gt;
&lt;li&gt;Download Windows 10/11 from the Media Creation Tool (this requires some user input).&lt;/li&gt;
&lt;li&gt;Convert the Windows 10/11 install ESD to a WIM file for MDT and import it.&lt;/li&gt;
&lt;li&gt;Create Package folders and Selection Profiles for Windows 10/11.&lt;/li&gt;
&lt;li&gt;Import Task Sequence templates.&lt;/li&gt;
&lt;li&gt;Set the configuration of CustomSettings.ini for the share(s).&lt;/li&gt;
&lt;li&gt;Generate the boot media.&lt;/li&gt;
&lt;li&gt;Create Package and Driver folders and Selection Profiles.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When complete the server will be configured to be able to deploy a Windows 10/11 image. There is an option to create a &amp;ldquo;Build and Capture&amp;rdquo; environment to create a gold image for Windows 10/11. Once captured the image can then be imported into the Deployment share and create a Task Sequence using the template included.&lt;/p&gt;
&lt;p&gt;Some user interaction is still required. For example: importing drivers, adding applications and other things specific to the images you want to deploy.&lt;/p&gt;
&lt;h2 id=&#34;user-preferences&#34;&gt;User Preferences&lt;/h2&gt;
&lt;p&gt;When you run the script it will ask you a series of questions to customise your installation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows version and update code (e.g. W10-22H2)&lt;/li&gt;
&lt;li&gt;Download and convert Windows ESD, edition, language&lt;/li&gt;
&lt;li&gt;Optional Build share path (e.g. C:\BuildShare)&lt;/li&gt;
&lt;li&gt;Optional Build share name (e.g. BuildShare$)&lt;/li&gt;
&lt;li&gt;Deploy share path (e.g. C:\DeployShare)&lt;/li&gt;
&lt;li&gt;Deploy share name (e.g. DeployShare$)&lt;/li&gt;
&lt;li&gt;Time zone name for the deployed image (e.g. GMT Standard Time)&lt;/li&gt;
&lt;li&gt;Keyboard locale code for the deployed image (e.g. 0809:00000809) Please see &lt;a href=&#34;https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-input-locales-for-windows-language-packs?view=windows-11&#34;&gt;Microsoft Docs for all the input locales&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Keyboard locale name for the deployed image (e.g. en-GB)&lt;/li&gt;
&lt;li&gt;Windows UI language for the deployed image (e.g. en-GB)&lt;/li&gt;
&lt;li&gt;Windows user language for the deployed image (e.g. en-GB)&lt;/li&gt;
&lt;li&gt;Domain group for MDT Admins (e.g. mdt-admins)&lt;/li&gt;
&lt;li&gt;Domain user for domain join (e.g. djoin)&lt;/li&gt;
&lt;li&gt;Domain password for above user (e.g. p@ssw0rD)&lt;/li&gt;
&lt;li&gt;Domain name for above user (e.g. contoso.com)&lt;/li&gt;
&lt;li&gt;OU for new PC account (e.g. OU=PCs,DC=contoso,DC=com)&lt;/li&gt;
&lt;li&gt;WSUS server name and port (e.g. WSUS-Srv:8530)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-to-use&#34;&gt;How to use&lt;/h2&gt;
&lt;p&gt;Create a folder on a local disk and put the script inside it.&lt;/p&gt;
&lt;p&gt;Run From PowerShell:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path to script]\MDT-Setup.ps1
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will run the script, user interaction is required to continue.&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2023-12-04-version-231204&#34;&gt;2023-12-04: Version 23.12.04&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added option to create a single deployment share for those who do not want to build a gold image.&lt;/li&gt;
&lt;li&gt;Updated Windows 11 Media Creation Tool link to get version 23H2.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-08-04-version-230804&#34;&gt;2023-08-04: Version 23.08.04&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue with the device path of a mounted ISO file being hardcoded. It is now dynamic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-07-02-version-230702&#34;&gt;2023-07-02: Version 23.07.02&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The latest version of the Windows ADK and Win PE ADK add-on are now installed. Please note that x86 boot media is now not available due to the new ADK not supporting the architecture.&lt;/li&gt;
&lt;li&gt;Added fixes for the latest version of Windows ADK from: &lt;a href=&#34;https://metisit.com/blog/microsoft-deployment-toolkit-mdt-configuration-with-unforeseen-challenges&#34;&gt;metisit.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-06-23-version-230623&#34;&gt;2023-06-23: Version 23.06.23&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue where the Windows ISO file name was hard coded.&lt;/li&gt;
&lt;li&gt;Reordered the process so all the user interaction is done up front. When user interaction is complete, you will be told to go make coffee.&lt;/li&gt;
&lt;li&gt;Cleaned up the output to be more readable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-12-02-version-221202&#34;&gt;2022-12-02: Version 22.12.02&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added text notification when there is no update available.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-11-29-version-221129&#34;&gt;2022-11-29: Version 22.11.29&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added option to check for updates to the script.&lt;/li&gt;
&lt;li&gt;Fixed permissions not being set on the build and deployment shares.&lt;/li&gt;
&lt;li&gt;Script now asks for a domain group to be used for MDT Administrators.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-10-18-version-221018&#34;&gt;2022-10-18: Version 22.10.18&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added support for Windows 10 22H2&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-09-20-version-220920&#34;&gt;2022-09-20: Version 22.09.20&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed option to enter a key to download Windows as it isn&amp;rsquo;t really needed. The provided generic key works just fine.&lt;/li&gt;
&lt;li&gt;Removed option to choose the edition of Windows as it will become the version that the user is licensed for when activation occurs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-08-16-version-220816&#34;&gt;2022-08-16: Version 22.08.16&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added support for Windows 11&lt;/li&gt;
&lt;li&gt;Streamlined some locale options so the user isn&amp;rsquo;t prompted so much for the same information.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-07-26-version-220726&#34;&gt;2022-07-26: Version 22.07.26&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Initial release&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Microsoft Deployment Toolkit</category>
            
          
            
              <category>Windows Deployment</category>
            
          
            
              <category>PowerShell Utility</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Internet Access Control Utility</title>
        <link>https://gal.vin/utils/internet-access-control-utility/</link>
        <pubDate>Tue, 17 Mar 2020 15:09:05 +0000</pubDate>
        
        <atom:modified>Tue, 17 Mar 2020 15:09:05 +0000</atom:modified>
        <guid>https://gal.vin/utils/internet-access-control-utility/</guid>
        <description>Control Internet access with Windows Firewall Internet Access Control Utility is available from:
 GitHub The Microsoft PowerShell Gallery  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.
Thanks
-Mike
Features and Requirements  It requires Windows Firewall to be active. The utility requires at least PowerShell 5.0. This utility has been tested on Windows 11 and Windows 10.</description>
        <content:encoded>&lt;h2 id=&#34;control-internet-access-with-windows-firewall&#34;&gt;Control Internet access with Windows Firewall&lt;/h2&gt;
&lt;p&gt;Internet Access Control Utility is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/Internet-Access-Control&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.powershellgallery.com/packages/Internet-Access-Control&#34;&gt;The Microsoft PowerShell Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;It requires Windows Firewall to be active.&lt;/li&gt;
&lt;li&gt;The utility requires at least PowerShell 5.0.&lt;/li&gt;
&lt;li&gt;This utility has been tested on Windows 11 and Windows 10.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Here’s a list of all the command line switches and example configurations.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Line Switch&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-Disable&lt;/td&gt;
&lt;td&gt;Block the internet. Create the firewall rule to block ports 80 and 443&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Enable&lt;/td&gt;
&lt;td&gt;Allow the internet. Removes the firewall rule created, allowing the ports 80 and 443&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-L&lt;/td&gt;
&lt;td&gt;The path to output the log file to.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LogRotate&lt;/td&gt;
&lt;td&gt;Remove logs produced by the utility older than X days&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-NoBanner&lt;/td&gt;
&lt;td&gt;Use this option to hide the ASCII art title in the console.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Help&lt;/td&gt;
&lt;td&gt;Display usage information. No arguments also displays help.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path\]Internet-Access-Control.ps1 -Disable
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will create a Windows Firewall rule to block internet access using ports 80 and 443.&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2023-04-28-version-230428&#34;&gt;2023-04-28: Version 23.04.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cleaned up the output.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-14-version-220530&#34;&gt;2022-06-14: Version 22.05.30&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added checks and balances to help with configuration as I&amp;rsquo;m very aware that the initial configuration can be troublesome. Running the utility manually is a lot more friendly and step-by-step now.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Cleaned user entered paths so that trailing slashes no longer break things or have otherwise unintended results.&lt;/li&gt;
&lt;li&gt;Added -LogRotate [days] to removed old logs created by the utility.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added donation link to the ASCII banner.&lt;/li&gt;
&lt;li&gt;Cleaned up code, removed unneeded log noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-08-version-211208&#34;&gt;2021-12-08: Version 21.12.08&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configured logs path now is created, if it does not exist.&lt;/li&gt;
&lt;li&gt;Added OS version info.&lt;/li&gt;
&lt;li&gt;Added Utility version info.&lt;/li&gt;
&lt;li&gt;Added Hostname info.&lt;/li&gt;
&lt;li&gt;Changed a variable to prevent conflicts with future PowerShell versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-18-version-200318-lock&#34;&gt;2020-03-18: Version 20.03.18 &amp;lsquo;Lock&amp;rsquo;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved feedback in the console and log.&lt;/li&gt;
&lt;li&gt;Improved documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-17-version-200317-lock&#34;&gt;2020-03-17: Version 20.03.17 &amp;lsquo;Lock&amp;rsquo;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added logging.&lt;/li&gt;
&lt;li&gt;Added config report.&lt;/li&gt;
&lt;li&gt;Made available on PowerShell gallery.&lt;/li&gt;
&lt;li&gt;Refactored code.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>PowerShell</category>
            
          
            
              <category>PowerShell Utility</category>
            
          
            
              <category>Windows 10</category>
            
          
            
              <category>Windows 11</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Logon Audit Utility</title>
        <link>https://gal.vin/utils/logon-audit-utility/</link>
        <pubDate>Thu, 12 Mar 2020 16:05:25 +0000</pubDate>
        
        <atom:modified>Thu, 12 Mar 2020 16:05:25 +0000</atom:modified>
        <guid>https://gal.vin/utils/logon-audit-utility/</guid>
        <description>Really simple log on/off auditing utility Logon Audit Utility is available from:
 GitHub The Microsoft PowerShell Gallery  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the ‘issues’ tab on GitHub.
Thanks
-Mike
Features and Requirements  The utility should be run on a client machine. It is ideally triggered as a logon/logoff script by Group Policy. Any files that the script needs to access should be accessible from a client device.</description>
        <content:encoded>&lt;h2 id=&#34;really-simple-log-onoff-auditing-utility&#34;&gt;Really simple log on/off auditing utility&lt;/h2&gt;
&lt;p&gt;Logon Audit Utility is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/Logon-Audit&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.powershellgallery.com/packages/Logon-Audit&#34;&gt;The Microsoft PowerShell Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the ‘issues’ tab on GitHub.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The utility should be run on a client machine.&lt;/li&gt;
&lt;li&gt;It is ideally triggered as a logon/logoff script by Group Policy.&lt;/li&gt;
&lt;li&gt;Any files that the script needs to access should be accessible from a client device.&lt;/li&gt;
&lt;li&gt;It can be used to log to a file, send to a webhook or both.&lt;/li&gt;
&lt;li&gt;The utility requires at least PowerShell 5.0.&lt;/li&gt;
&lt;li&gt;Tested on Windows 11, Windows 10, Windows Server 2022, Windows Server 2019, Windows Server 2016 and Windows Server 2012 R2.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Here’s a list of all the command line switches and example configurations.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Line Switch&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-Logon&lt;/td&gt;
&lt;td&gt;Use this option to log a log on event.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Logoff&lt;/td&gt;
&lt;td&gt;Use this option to log a log off event.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Webhook&lt;/td&gt;
&lt;td&gt;The txt file containing the URI for a webhook to send the log file to.&lt;/td&gt;
&lt;td&gt;[path]webhook.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-L&lt;/td&gt;
&lt;td&gt;The path to output the log file to.&lt;/td&gt;
&lt;td&gt;[path\logs]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Help&lt;/td&gt;
&lt;td&gt;Display usage information. No arguments also displays help.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path\]Logon-Audit.ps1 -Logon -L [path]
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The above command will record a logon event for the currently logged on user to the log file and also to Teams.&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2023-04-28-version-230428&#34;&gt;2023-04-28: Version 23.04.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Changed the -Teams switch to -Webhook to better represent it&amp;rsquo;s function.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-14-version-220530&#34;&gt;2022-06-14: Version 22.05.30&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added checks and balances to help with configuration as I&amp;rsquo;m very aware that the initial configuration can be troublesome. Running the utility manually is a lot more friendly and step-by-step now.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Cleaned user entered paths so that trailing slashes no longer break things or have otherwise unintended results.&lt;/li&gt;
&lt;li&gt;Added -LogRotate [days] to removed old logs created by the utility.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added donation link to the ASCII banner.&lt;/li&gt;
&lt;li&gt;Cleaned up code, removed unneeded log noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-08-version-211208&#34;&gt;2021-12-08: Version 21.12.08&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configured logs path now is created, if it does not exist.&lt;/li&gt;
&lt;li&gt;Added OS version info.&lt;/li&gt;
&lt;li&gt;Added Utility version info.&lt;/li&gt;
&lt;li&gt;Added Hostname info.&lt;/li&gt;
&lt;li&gt;Changed a variable to prevent conflicts with future PowerShell versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-12-version-200312-chick&#34;&gt;2020-03-12: Version 20.03.12 &amp;lsquo;Chick&amp;rsquo;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added option to send an event to Microsoft Teams.&lt;/li&gt;
&lt;li&gt;Refactored code.&lt;/li&gt;
&lt;li&gt;Fully backwards compatible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-09-28-v10&#34;&gt;2019-09-28 v1.0&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Initial public release.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>PowerShell Utility</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Remove MS Store Apps Utility</title>
        <link>https://gal.vin/utils/remove-ms-store-apps-utility/</link>
        <pubDate>Wed, 04 Dec 2019 15:25:17 +0000</pubDate>
        
        <atom:modified>Wed, 04 Dec 2019 15:25:17 +0000</atom:modified>
        <guid>https://gal.vin/utils/remove-ms-store-apps-utility/</guid>
        <description>Customisable Windows 10/11 Microsoft Store App removal utility, previously known as Remove-Win10-Apps Remove MS Store Apps Utility is available from:
 GitHub The Microsoft PowerShell Gallery  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the ‘issues’ tab on GitHub.
Thanks
-Mike
Features and Requirements  Remove specified apps for the current logged on user. Remove specified apps from the system for all users.</description>
        <content:encoded>&lt;h2 id=&#34;customisable-windows-1011-microsoft-store-app-removal-utility-previously-known-as-remove-win10-apps&#34;&gt;Customisable Windows 10/11 Microsoft Store App removal utility, previously known as Remove-Win10-Apps&lt;/h2&gt;
&lt;p&gt;Remove MS Store Apps Utility is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/Remove-MS-Store-Apps&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.powershellgallery.com/packages/Remove-MS-Store-Apps&#34;&gt;The Microsoft PowerShell Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the ‘issues’ tab on GitHub.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Remove specified apps for the current logged on user.&lt;/li&gt;
&lt;li&gt;Remove specified apps from the system for all users.&lt;/li&gt;
&lt;li&gt;Can be used for imaging and OS deployment, as well as individual user.&lt;/li&gt;
&lt;li&gt;Can be used on an offline Windows image.&lt;/li&gt;
&lt;li&gt;Requires a text file with a list of the apps to remove.&lt;/li&gt;
&lt;li&gt;Tested on Windows 10 and Windows 11.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-to-get-a-list-of-apps-to-remove&#34;&gt;How to get a list of apps to remove&lt;/h2&gt;
&lt;p&gt;To create a text file with a list of the apps to remove, run the following and copy and paste the app names you wish to remove into a txt file and save it.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Remove-MS&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-Store-Apps&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-PCApps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To get a list of apps that are installed for the current user, use this command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Remove-MS&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-Store-Apps&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-UserApps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;how-to-find-the-index-number-of-the-image-in-the-wim-file&#34;&gt;How to find the index number of the image in the wim file&lt;/h2&gt;
&lt;p&gt;Run the following command to find out how many images are present in the wim file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Get-WindowsImage&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ImagePath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\]&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wim&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Format-Table&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Property&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ImageIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ImageName&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;app-names-table&#34;&gt;App Names Table&lt;/h2&gt;
&lt;p&gt;Here is a table of app names in PowerShell and what they relate to in Windows.&lt;/p&gt;
&lt;h3 id=&#34;windows-11-apps&#34;&gt;Windows 11 Apps&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;PowerShell Display Name&lt;/th&gt;
&lt;th&gt;App name&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Clipchamp.Clipchamp&lt;/td&gt;
&lt;td&gt;Clipchamp&lt;/td&gt;
&lt;td&gt;New in 22H2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.549981C3F5F10&lt;/td&gt;
&lt;td&gt;Cortana&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.BingNews&lt;/td&gt;
&lt;td&gt;Microsoft News&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.BingWeather&lt;/td&gt;
&lt;td&gt;Weather&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.DesktopAppInstaller&lt;/td&gt;
&lt;td&gt;winget&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.GamingApp&lt;/td&gt;
&lt;td&gt;Xbox&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.GetHelp&lt;/td&gt;
&lt;td&gt;Get Help&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Getstarted&lt;/td&gt;
&lt;td&gt;Tips&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.HEIFImageExtension&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.HEVCVideoExtension&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;New in 22H2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MicrosoftEdge.Stable&lt;/td&gt;
&lt;td&gt;Microsoft Edge&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MicrosoftOfficeHub&lt;/td&gt;
&lt;td&gt;Office&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MicrosoftSolitaireCollection&lt;/td&gt;
&lt;td&gt;Microsoft Solitaire Collection&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MicrosoftStickyNotes&lt;/td&gt;
&lt;td&gt;Sticky Notes&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Paint&lt;/td&gt;
&lt;td&gt;Paint&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.People&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.PowerAutomateDesktop&lt;/td&gt;
&lt;td&gt;Power Automate&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.RawImageExtension&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;New in 22H2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.ScreenSketch&lt;/td&gt;
&lt;td&gt;Snip &amp;amp; Sketch&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.SecHealthUI&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.StorePurchaseApp&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Todos&lt;/td&gt;
&lt;td&gt;Microsoft To Do&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.VCLibs.140.00&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.VP9VideoExtensions&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WebMediaExtensions&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WebpImageExtension&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Windows.Photos&lt;/td&gt;
&lt;td&gt;(2) &amp;ldquo;Photos&amp;rdquo; and &amp;ldquo;Video editor&amp;rdquo;&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsAlarms&lt;/td&gt;
&lt;td&gt;Alarms &amp;amp; Clock&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsCalculator&lt;/td&gt;
&lt;td&gt;Calculator&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsCamera&lt;/td&gt;
&lt;td&gt;Camera&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;microsoft.windowscommunicationsapps&lt;/td&gt;
&lt;td&gt;(2) &amp;ldquo;Calendar&amp;rdquo; and &amp;ldquo;Mail&amp;rdquo;&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsFeedbackHub&lt;/td&gt;
&lt;td&gt;Feedback Hub&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsMaps&lt;/td&gt;
&lt;td&gt;Maps&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsNotepad&lt;/td&gt;
&lt;td&gt;Notepad&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsSoundRecorder&lt;/td&gt;
&lt;td&gt;Voice Recorder&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsStore&lt;/td&gt;
&lt;td&gt;Microsoft Store&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsTerminal&lt;/td&gt;
&lt;td&gt;Terminal&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Xbox.TCUI&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.XboxGameOverlay&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.XboxGamingOverlay&lt;/td&gt;
&lt;td&gt;Xbox Game Bar&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.XboxIdentityProvider&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.XboxSpeechToTextOverlay&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.YourPhone&lt;/td&gt;
&lt;td&gt;Your Phone&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.ZuneMusic&lt;/td&gt;
&lt;td&gt;Media Player&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.ZuneVideo&lt;/td&gt;
&lt;td&gt;Films &amp;amp; TV&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MicrosoftCorporationII.QuickAssist&lt;/td&gt;
&lt;td&gt;Quick Assist&lt;/td&gt;
&lt;td&gt;New in 22H2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MicrosoftTeams&lt;/td&gt;
&lt;td&gt;Microsoft Teams&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MicrosoftWindows.Client.WebExperience&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;windows-10-apps&#34;&gt;Windows 10 Apps&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;PowerShell Display Name&lt;/th&gt;
&lt;th&gt;App name&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.549981C3F5F10&lt;/td&gt;
&lt;td&gt;Cortana&lt;/td&gt;
&lt;td&gt;New in 2004&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.BingWeather&lt;/td&gt;
&lt;td&gt;Weather&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.DesktopAppInstaller&lt;/td&gt;
&lt;td&gt;winget&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.GetHelp&lt;/td&gt;
&lt;td&gt;Get Help&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Getstarted&lt;/td&gt;
&lt;td&gt;Tips&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.HEIFImageExtension&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Messaging&lt;/td&gt;
&lt;td&gt;Messaging&lt;/td&gt;
&lt;td&gt;Removed in 2004&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Microsoft3DViewer&lt;/td&gt;
&lt;td&gt;3D Viewer&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MicrosoftEdge.Stable&lt;/td&gt;
&lt;td&gt;Microsoft Edge&lt;/td&gt;
&lt;td&gt;New in 21H1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MicrosoftOfficeHub&lt;/td&gt;
&lt;td&gt;Office&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MicrosoftSolitaireCollection&lt;/td&gt;
&lt;td&gt;Microsoft Solitaire Collection&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MicrosoftStickyNotes&lt;/td&gt;
&lt;td&gt;Sticky Notes&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MixedReality.Portal&lt;/td&gt;
&lt;td&gt;Mixed Reality Portal&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.MSPaint&lt;/td&gt;
&lt;td&gt;Paint 3D&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Office.OneNote&lt;/td&gt;
&lt;td&gt;OneNote&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.OneConnect&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Removed in 2004&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.People&lt;/td&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Print3D&lt;/td&gt;
&lt;td&gt;Print 3D&lt;/td&gt;
&lt;td&gt;Removed in 2004&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.ScreenSketch&lt;/td&gt;
&lt;td&gt;Snip &amp;amp; Sketch&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.SkypeApp&lt;/td&gt;
&lt;td&gt;Skype&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.StorePurchaseApp&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.VCLibs.140.00&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;New in 2004&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.VP9VideoExtensions&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Wallet&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WebMediaExtensions&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WebpImageExtension&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Windows.Photos&lt;/td&gt;
&lt;td&gt;(2) &amp;ldquo;Photos&amp;rdquo; and &amp;ldquo;Video editor&amp;rdquo;&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsAlarms&lt;/td&gt;
&lt;td&gt;Alarms &amp;amp; Clock&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsCalculator&lt;/td&gt;
&lt;td&gt;Calculator&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsCamera&lt;/td&gt;
&lt;td&gt;Camera&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;microsoft.windowscommunicationsapps&lt;/td&gt;
&lt;td&gt;(2) &amp;ldquo;Calendar&amp;rdquo; and &amp;ldquo;Mail&amp;rdquo;&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsFeedbackHub&lt;/td&gt;
&lt;td&gt;Feedback Hub&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsMaps&lt;/td&gt;
&lt;td&gt;Maps&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsSoundRecorder&lt;/td&gt;
&lt;td&gt;Voice Recorder&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.WindowsStore&lt;/td&gt;
&lt;td&gt;Microsoft Store&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.Xbox.TCUI&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.XboxApp&lt;/td&gt;
&lt;td&gt;Xbox Console Companion&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.XboxGameOverlay&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.XboxGamingOverlay&lt;/td&gt;
&lt;td&gt;Xbox Game Bar&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.XboxIdentityProvider&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.XboxSpeechToTextOverlay&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.YourPhone&lt;/td&gt;
&lt;td&gt;Your Phone&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.ZuneMusic&lt;/td&gt;
&lt;td&gt;Groove Music&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft.ZuneVideo&lt;/td&gt;
&lt;td&gt;Films &amp;amp; TV&lt;/td&gt;
&lt;td&gt;No change&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Here’s a list of all the command line switches and example configurations.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Line Switch&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-List&lt;/td&gt;
&lt;td&gt;The full path to the txt file listing the apps to remove.&lt;/td&gt;
&lt;td&gt;[path]apps.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Wim&lt;/td&gt;
&lt;td&gt;The full path to the wim file to remove the apps from.&lt;/td&gt;
&lt;td&gt;[path]install.wim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-WimIndex&lt;/td&gt;
&lt;td&gt;The index number of the image to operate on.&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-WimMountPath&lt;/td&gt;
&lt;td&gt;The full path to a folder that the wim file should be mounted to. If you do not configure this temp dir will be used.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-PCApps&lt;/td&gt;
&lt;td&gt;List apps that are currently installed on the system.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-UserApps&lt;/td&gt;
&lt;td&gt;List apps that are currently installed for the user.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-L&lt;/td&gt;
&lt;td&gt;The path to output the log file to.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Uno&lt;/td&gt;
&lt;td&gt;Changes the script to remove all apps NOT listed in the apps.txt file.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-PCOnly&lt;/td&gt;
&lt;td&gt;Only remove provisioned apps, does not take any action on the current users apps.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LogRotate&lt;/td&gt;
&lt;td&gt;Remove logs produced by the utility older than X days&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-NoBanner&lt;/td&gt;
&lt;td&gt;Use this option to hide the ASCII art title in the console.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Help&lt;/td&gt;
&lt;td&gt;Display usage information. No arguments also displays help.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path\]Remove-MS-Store-Apps.ps1 -List [path\]apps-to-remove.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will remove the apps in the txt file from your Windows installation for all users.&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2024-11-09-version-241109&#34;&gt;2024-11-09: Version 24.11.09&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added new &amp;lsquo;-Uno&amp;rsquo; option which removes ALL apps not in the specified text file. The text file becomes an &amp;ldquo;apps to keep&amp;rdquo; list, instead of an &amp;ldquo;apps to remove&amp;rdquo; list.&lt;/li&gt;
&lt;li&gt;Added new &amp;lsquo;-PCOnly&amp;rsquo; option which removes provisioned apps only. This will leave the apps for the current user untouched.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-04-28-version-230428&#34;&gt;2023-04-28: Version 23.04.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Minor improvement to update checker. If the internet is not reachable it silently errors out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-04-24-version-230424&#34;&gt;2023-04-24: Version 23.04.24&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added script update checker - shows if an update is available in the log and console.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-14-version-220530&#34;&gt;2022-06-14: Version 22.05.30&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added checks and balances to help with configuration as I&amp;rsquo;m very aware that the initial configuration can be troublesome. Running the utility manually is a lot more friendly and step-by-step now.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Cleaned user entered paths so that trailing slashes no longer break things or have otherwise unintended results.&lt;/li&gt;
&lt;li&gt;Added -LogRotate [days] to removed old logs created by the utility.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added donation link to the ASCII banner.&lt;/li&gt;
&lt;li&gt;Cleaned up code, removed unneeded log noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-04-26-version-220426&#34;&gt;2022-04-26: Version 22.04.26&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added -PCApps switch to list all MS Store apps on the system.&lt;/li&gt;
&lt;li&gt;Added -UserApps switch to list all MS Store apps installed for the user.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Also running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-04-22-version-220422&#34;&gt;2022-04-22: Version 22.04.22&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;If the -WimMountPath is not configured by the user then the default Windows temp folder will be used instead.&lt;/li&gt;
&lt;li&gt;If the -WimMountPath is configured by the user but the path does not exist, it will be created.&lt;/li&gt;
&lt;li&gt;Added a -LogRotate option to delete logs older than X number of days.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-03-27-version-220327&#34;&gt;2022-03-27: Version 22.03.27&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Utility now ignores blanks lines in Apps list file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-08-version-211208&#34;&gt;2021-12-08: Version 21.12.08&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configured logs path now is created, if it does not exist.&lt;/li&gt;
&lt;li&gt;Added OS version info.&lt;/li&gt;
&lt;li&gt;Added Utility version info.&lt;/li&gt;
&lt;li&gt;Added Hostname info.&lt;/li&gt;
&lt;li&gt;Changed a variable to prevent conflicts with future PowerShell versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-09-07-version-070921&#34;&gt;2021-09-07: Version 07.09.21&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added ability to remove apps from offline images.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-13-version-200313-cool&#34;&gt;2020-03-13: Version 20.03.13 ‘Cool’&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Refactored code.&lt;/li&gt;
&lt;li&gt;Backwards compatible.&lt;/li&gt;
&lt;li&gt;Added logging.&lt;/li&gt;
&lt;li&gt;Added config report when ran.&lt;/li&gt;
&lt;li&gt;Added ASCII banner art when run in the console.&lt;/li&gt;
&lt;li&gt;Added option to disable the ASCII banner art.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-12-03-v20&#34;&gt;2019-12-03 v2.0&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;First public release.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Microsoft Store Apps</category>
            
          
            
              <category>PowerShell</category>
            
          
            
              <category>PowerShell Utility</category>
            
          
            
              <category>Windows 10</category>
            
          
            
              <category>Windows 11</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Office Update Utility</title>
        <link>https://gal.vin/utils/office-update-utility/</link>
        <pubDate>Sun, 16 Jun 2019 15:00:47 +0000</pubDate>
        
        <atom:modified>Sun, 16 Jun 2019 15:00:47 +0000</atom:modified>
        <guid>https://gal.vin/utils/office-update-utility/</guid>
        <description>Microsoft Office Update Manager Office Update Utility is available from:
 GitHub The Microsoft PowerShell Gallery  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.
Thanks
-Mike
Features and Requirements  This utility will check for and download update files for Microsoft Office. It can also remove old update files. This utility requires the Office Deployment Tool a free download available here.</description>
        <content:encoded>&lt;h2 id=&#34;microsoft-office-update-manager&#34;&gt;Microsoft Office Update Manager&lt;/h2&gt;
&lt;p&gt;Office Update Utility is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/Office-Update&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.powershellgallery.com/packages/Office-Update&#34;&gt;The Microsoft PowerShell Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This utility will check for and download update files for Microsoft Office.&lt;/li&gt;
&lt;li&gt;It can also remove old update files.&lt;/li&gt;
&lt;li&gt;This utility requires the Office Deployment Tool &lt;a href=&#34;https://www.microsoft.com/en-us/download/details.aspx?id=49117&#34;&gt;a free download available here.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;This utility requires at least PowerShell 5.0.&lt;/li&gt;
&lt;li&gt;This utility has been tested on Windows 11, Windows 10, Windows Server 2022, Windows Server 2019 and Windows Server 2016.&lt;/li&gt;
&lt;li&gt;The update log can be sent via email and/or webhook.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;folder-structure&#34;&gt;Folder Structure&lt;/h2&gt;
&lt;p&gt;This utility requires a specific folder structure in order to operate, it expects the Office Deployment Tool and the configuration xml file to be in the same folder. Additionally, the source path of the Office installation files in the configuration xml file should be set to the same location. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Office Deployment Tool location: &lt;code&gt;\\server\share\Office-365-x64\setup.exe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Configuration xml file location: &lt;code&gt;\\server\share\Office-365-x64\config-2019-x64.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Source path in the configuration xml file: &lt;code&gt;\\server\share\Office-365-x64&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This configuration will result in the Office update files being downloaded and stored in: &lt;code&gt;\\server\share\Office-2019-x64\Office\Data&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;generating-a-password-file-for-smtp-authentication&#34;&gt;Generating A Password File For SMTP Authentication&lt;/h2&gt;
&lt;p&gt;The password used for SMTP server authentication must be in an encrypted text file. To generate the password file, run the following command in PowerShell on the computer and logged in with the user that will be running the utility. When you run the command, you will be prompted for a username and password. Enter the username and password you want to use to authenticate to your SMTP server.&lt;/p&gt;
&lt;p&gt;Please note: This is only required if you need to authenticate to the SMTP server when send the log via e-mail.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-Credential&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ConvertFrom-SecureString&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Set-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps-script-pwd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After running the commands, you will have a text file containing the encrypted password. When configuring the -Pwd switch enter the path and file name of this file.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Here’s a list of all the command line switches and example configurations.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Line Switch&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-Office&lt;/td&gt;
&lt;td&gt;The folder containing the Office Deployment Tool (ODT).&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Config&lt;/td&gt;
&lt;td&gt;The name of the configuration xml file for the Office ODT. It must be located in the same folder as the ODT.&lt;/td&gt;
&lt;td&gt;[file name.xml]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Days&lt;/td&gt;
&lt;td&gt;The number of days that you wish to keep old update files for. If you do not configure this option, no old files will be removed.&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-L&lt;/td&gt;
&lt;td&gt;The path to output the log file to.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LogRotate&lt;/td&gt;
&lt;td&gt;Remove logs produced by the utility older than X days&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-NoBanner&lt;/td&gt;
&lt;td&gt;Use this option to hide the ASCII art title in the console.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Help&lt;/td&gt;
&lt;td&gt;Display usage information. No arguments also displays help.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Webhook&lt;/td&gt;
&lt;td&gt;The txt file containing the URI for a webhook to send the log file to.&lt;/td&gt;
&lt;td&gt;[path]webhook.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Subject&lt;/td&gt;
&lt;td&gt;Specify a subject line. If you leave this blank the default subject will be used&lt;/td&gt;
&lt;td&gt;&amp;ldquo;&#39;[Server: Notification]&#39;&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SendTo&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent to. For multiple address, separate with a comma.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-From&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent from.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Smtp&lt;/td&gt;
&lt;td&gt;The DNS name or IP address of the SMTP server.&lt;/td&gt;
&lt;td&gt;[smtp server address]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Port&lt;/td&gt;
&lt;td&gt;The Port that should be used for the SMTP server. If none is specified then the default of 25 will be used.&lt;/td&gt;
&lt;td&gt;[port number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-User&lt;/td&gt;
&lt;td&gt;The user account to authenticate to the SMTP server.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Pwd&lt;/td&gt;
&lt;td&gt;The txt file containing the encrypted password for SMTP authentication.&lt;/td&gt;
&lt;td&gt;[path]ps-script-pwd.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-UseSsl&lt;/td&gt;
&lt;td&gt;Configures the utility to connect to the SMTP server using SSL.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path\]Office-Update.ps1 -Office [path\] -Config [file name.xml] -Days [number]
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will update the office installation files in the specified directory, and delete update files older than X days&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2023-04-28-version-230428&#34;&gt;2023-04-28: Version 23.04.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Minor improvement to update checker. If the internet is not reachable it silently errors out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-02-07-version-230207&#34;&gt;2023-02-07: Version 23.02.07&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added script update checker - shows if an update is available in the log and console.&lt;/li&gt;
&lt;li&gt;Added webhook option to send log file to.&lt;/li&gt;
&lt;li&gt;Removed SMTP authentication details from the &amp;lsquo;Config&amp;rsquo; report. Now it just shows as &amp;lsquo;configured&amp;rsquo; if SMTP user is configured. To be clear: no passwords were ever shown or stored in plain text.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-07-31-version-220730&#34;&gt;2022-07-31: Version 22.07.30&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Changed how the removal of old files works. Old versions will be removed regardless, -Days option has been removed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-22-version-220622&#34;&gt;2022-06-22: Version 22.06.22&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue where If -L [path] not configured then a non fatal error would occur as no log path was specified for the log to be output to.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-14-version-220525&#34;&gt;2022-06-14: Version 22.05.25&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added new feature: log can now be emailed to multiple addresses.&lt;/li&gt;
&lt;li&gt;Added checks and balances to help with configuration as I&amp;rsquo;m very aware that the initial configuration can be troublesome. Running the utility manually is a lot more friendly and step-by-step now.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Cleaned user entered paths so that trailing slashes no longer break things or have otherwise unintended results.&lt;/li&gt;
&lt;li&gt;Added -LogRotate [days] to removed old logs created by the utility.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added donation link to the ASCII banner.&lt;/li&gt;
&lt;li&gt;Cleaned up code, removed unneeded log noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-05-25-version-220525&#34;&gt;2022-05-25: Version 22.05.25&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Also running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added a -LogRotate option to delete logs older than X number of days.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-06-version-211206&#34;&gt;2021-12-06: Version 21.12.06&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed problem with Hostname not displaying.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-04-version-211204&#34;&gt;2021-12-04: Version 21.12.04&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configured logs path now is created, if it does not exist.&lt;/li&gt;
&lt;li&gt;Added OS version info.&lt;/li&gt;
&lt;li&gt;Added an option to specify the Port for SMTP communication.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-03-version-20200301-crosshair&#34;&gt;2020-03-03: Version 2020.03.01 &amp;lsquo;Crosshair&amp;rsquo;&lt;/h3&gt;
&lt;p&gt;New features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refactored code.&lt;/li&gt;
&lt;li&gt;Fully backwards compatible.&lt;/li&gt;
&lt;li&gt;Added ASCII banner art when run in the console.&lt;/li&gt;
&lt;li&gt;Added option to disable the ASCII banner art.&lt;/li&gt;
&lt;li&gt;Config report matches design of Image Factory Utility.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-09-04-v11&#34;&gt;2019-09-04 v1.1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added custom subject line for e-mail.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-06-16-v10&#34;&gt;2019-06-16 v1.0&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Initial release.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Microsoft 365 Apps</category>
            
          
            
              <category>Microsoft Office</category>
            
          
            
              <category>PowerShell Utility</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Hyper-V Backup Utility</title>
        <link>https://gal.vin/utils/hyperv-backup-utility/</link>
        <pubDate>Mon, 18 Sep 2017 20:25:26 +0000</pubDate>
        
        <atom:modified>Mon, 18 Sep 2017 20:25:26 +0000</atom:modified>
        <guid>https://gal.vin/utils/hyperv-backup-utility/</guid>
        <description>Flexible Hyper-V Backup Utility Hyper-V Backup Utility is available from:
 GitHub The Microsoft PowerShell Gallery  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.
Thanks
-Mike
Features and Requirements  Designed to be run on a Hyper-V host. The Hyper-V host must have the Hyper-V management PowerShell modules installed. Can be used to backup VMs to a device which the Hyper-V host does not have permission to run a regular export to.</description>
        <content:encoded>&lt;h2 id=&#34;flexible-hyper-v-backup-utility&#34;&gt;Flexible Hyper-V Backup Utility&lt;/h2&gt;
&lt;p&gt;Hyper-V Backup Utility is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.powershellgallery.com/packages/Hyper-V-Backup&#34;&gt;The Microsoft PowerShell Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Designed to be run on a Hyper-V host.&lt;/li&gt;
&lt;li&gt;The Hyper-V host must have the Hyper-V management PowerShell modules installed.&lt;/li&gt;
&lt;li&gt;Can be used to backup VMs to a device which the Hyper-V host does not have permission to run a regular export to.&lt;/li&gt;
&lt;li&gt;Supports Hyper-V hosts in a clustered configuration.&lt;/li&gt;
&lt;li&gt;The utility requires at least Windows PowerShell 5.0.&lt;/li&gt;
&lt;li&gt;Tested on Windows 11, Windows 10, Windows Server 2022, Windows Server 2019 and Windows Server 2016.&lt;/li&gt;
&lt;li&gt;The backup log can be sent via email and/or webhook.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;smb-share-support&#34;&gt;SMB share support&lt;/h2&gt;
&lt;p&gt;An SMB share can be used as a backup location by specifying the UNC path (\\server\share) with the -BackupTo option. Please note that you must use either a local working directory (-Wd path) or the -NoPerms option if your SMB share host and Hyper-V host are not members of an Active Directory domain. Hyper-V cannot perform export VMs to a network share without the Hyper-V host having permissions to the share which are possible when using Windows servers and Active Directory and not available with a NAS appliance such as TrueNAS, QNAP or Synology.&lt;/p&gt;
&lt;h2 id=&#34;when-to-use-the--noperms-option&#34;&gt;When to use the -NoPerms option&lt;/h2&gt;
&lt;p&gt;The -NoPerms switch is intended as a workaround when used in an environment where the Hyper-V host cannot be given the required permissions to run a regular export to a remote device such as a NAS device. To copy all the files necessary for a complete backup, the VM must be in an offline state for the operation to be completed. Therefore the script will put the VM in a &amp;lsquo;Saved&amp;rsquo; state (if it is running) so the files can be copied. In previous versions the VM would be shutdown but this is a faster and safer method as the VM does not require any integrations to be put in a saved state.&lt;/p&gt;
&lt;p&gt;Hyper-V’s export operation requires that the computer account in Active Directory have access to the location where the exports are being stored. When a NAS is intended to be used as an export location, Hyper-V will not be able to complete the operation as the computer account cannot be given access to the share on the NAS.&lt;/p&gt;
&lt;h2 id=&#34;7-zip-support&#34;&gt;7-Zip support&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve implemented support for 7-Zip into the script. You should be able to use any option that 7-zip supports, although currently the only options I&amp;rsquo;ve tested fully are &amp;lsquo;-t&amp;rsquo; archive type, &amp;lsquo;-p&amp;rsquo; password and &amp;lsquo;-v&amp;rsquo; split files.&lt;/p&gt;
&lt;h2 id=&#34;generating-a-credentials-file-for-smtp-authentication&#34;&gt;Generating A Credentials File For SMTP Authentication&lt;/h2&gt;
&lt;p&gt;The password used for SMTP server authentication must be in an encrypted text file. To generate the password file, run the command below in PowerShell on the same computer and logged in with the user that will be running the utility. When you run the command, you will be prompted for a username and password. Enter the username and password you want to use to authenticate to your SMTP server.&lt;/p&gt;
&lt;p&gt;Please note: This is only required if you need to authenticate to the SMTP server when sending the log via e-mail.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\]&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Hyper-V-Backup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-MakeCreds&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;[filename.txt]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After running the commands, you will have a text file containing the encrypted password. When configuring the -Pwd switch enter the path and file name of this file.&lt;/p&gt;
&lt;h2 id=&#34;restoring-a-virtual-machine-from-backup&#34;&gt;Restoring a virtual machine from backup&lt;/h2&gt;
&lt;p&gt;The easiest and quickest way to restore a Virtual Machine that has been backed up using this script is to use Hyper-V&amp;rsquo;s native import function.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy the backup of the VM you want to restore to a location on the VM host server that the VM should run from. If the backup is compressed, uncompress the file.&lt;/li&gt;
&lt;li&gt;In the Hyper-V Manager, right-click on the VM host and select &amp;lsquo;Import Virtual Machine&amp;rsquo;.&lt;/li&gt;
&lt;li&gt;Browse to the location of the VM backup folder and click Next.&lt;/li&gt;
&lt;li&gt;Select the VM you want to restore.&lt;/li&gt;
&lt;li&gt;Select &amp;lsquo;Register the virtual machine in-place&amp;rsquo; option.&lt;/li&gt;
&lt;li&gt;The VM will be registered in Hyper-V and available for use.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Here’s a list of all the command line switches and example configurations.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Line Switch&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-BackupTo&lt;/td&gt;
&lt;td&gt;The path the virtual machines should be backed up to. Each VM will have its own folder inside this location. This can be an SMB share but you must also use either -Wd or -NoPerms.&lt;/td&gt;
&lt;td&gt;[path] or [\\server\path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SMBUsr&lt;/td&gt;
&lt;td&gt;Enter the domain and user required to access the SMB share. Use only if required.&lt;/td&gt;
&lt;td&gt;domain\user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SMBPwd&lt;/td&gt;
&lt;td&gt;Enter the password for the above account required to access the SMB share. Use only if required.&lt;/td&gt;
&lt;td&gt;password&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-AllVms&lt;/td&gt;
&lt;td&gt;If this option is configured all VMs will be backed up.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Prefix&lt;/td&gt;
&lt;td&gt;Use this option to specify VM names beginning with the string specified to backup.&lt;/td&gt;
&lt;td&gt;[string]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-List&lt;/td&gt;
&lt;td&gt;Enter the path to a txt file with a list of Hyper-V VM names to backup. If this option, -Prefix and -AllVms are not configured, all running VMs will be backed up.&lt;/td&gt;
&lt;td&gt;[path\vms.txt]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-CaptureState&lt;/td&gt;
&lt;td&gt;Enter a method to use when exporting the VM. If this option is not configured, the default method will be used.&lt;/td&gt;
&lt;td&gt;CaptureCrashConsistentState, CaptureSavedState, CaptureDataConsistentState&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Wd&lt;/td&gt;
&lt;td&gt;The path to the working directory to use for the backup before copying it to the final backup directory. Use a directory on local fast media to improve performance.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-NoPerms&lt;/td&gt;
&lt;td&gt;Configures the utility to shut down running VMs to do the file-copy based backup instead of using the Hyper-V export function.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Keep&lt;/td&gt;
&lt;td&gt;Instructs the utility to keep a specified number of days worth of backups. VM backups older than the number of days specified will be deleted.&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Compress&lt;/td&gt;
&lt;td&gt;This option will create a zip file of each Hyper-V VM backup.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Sz&lt;/td&gt;
&lt;td&gt;Configure the utility to use 7-Zip to compress the VM backups. 7-Zip must be installed in the default location &lt;code&gt;$env:ProgramFiles&lt;/code&gt; if it is not found, Windows compression will be used.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SzOptions&lt;/td&gt;
&lt;td&gt;Use this switch to configure options for 7-Zip. The switches must be comma separated.&lt;/td&gt;
&lt;td&gt;&amp;ldquo;&#39;-t7z,-v2G,-ppassword&#39;&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-ShortDate&lt;/td&gt;
&lt;td&gt;Configure the script to use only the Year, Month and Day in backup filenames.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LowDisk&lt;/td&gt;
&lt;td&gt;Remove old backups before new ones are created. For low disk space situations.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-L&lt;/td&gt;
&lt;td&gt;The path to output the log file to.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LogRotate&lt;/td&gt;
&lt;td&gt;Remove logs produced by the utility older than X days&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-NoBanner&lt;/td&gt;
&lt;td&gt;Use this option to hide the ASCII art title in the console.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Help&lt;/td&gt;
&lt;td&gt;Display usage information. No arguments also displays help.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-ProgCheck&lt;/td&gt;
&lt;td&gt;Send notifications (email or webhook) after each VM is backed up.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-OptimiseVHD&lt;/td&gt;
&lt;td&gt;Optimise the VHDs and make them smaller before copy. Must be used with -NoPerms option.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Webhook&lt;/td&gt;
&lt;td&gt;The txt file containing the URI for a webhook to send the log file to.&lt;/td&gt;
&lt;td&gt;[path\webhook.txt]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Subject&lt;/td&gt;
&lt;td&gt;Specify a subject line. If you leave this blank the default subject will be used&lt;/td&gt;
&lt;td&gt;&amp;ldquo;&#39;[Server: Notification]&#39;&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SendTo&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent to. For multiple address, separate with a comma.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-From&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent from.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Smtp&lt;/td&gt;
&lt;td&gt;The DNS name or IP address of the SMTP server.&lt;/td&gt;
&lt;td&gt;[smtp server address]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Port&lt;/td&gt;
&lt;td&gt;The Port that should be used for the SMTP server. If none is specified then the default of 25 will be used.&lt;/td&gt;
&lt;td&gt;[port number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-User&lt;/td&gt;
&lt;td&gt;The user account to authenticate to the SMTP server.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Pwd&lt;/td&gt;
&lt;td&gt;The txt file containing the encrypted password for SMTP authentication.&lt;/td&gt;
&lt;td&gt;[path\ps-script-pwd.txt]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-UseSsl&lt;/td&gt;
&lt;td&gt;Configures the utility to connect to the SMTP server using SSL.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-MakeCreds&lt;/td&gt;
&lt;td&gt;Use this option to create a credentials file for SMTP authentication. The file will be created in the same directory as the script.&lt;/td&gt;
&lt;td&gt;[filename.txt]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;how-to-use&#34;&gt;How to use&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path\]Hyper-V-Backup.ps1 -BackupTo [path]
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will backup all the VMs running to the backup location specified.&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2024-08-29-version-240829&#34;&gt;2024-08-29: Version 24.08.29&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added Sponsorship information to the projects Github.&lt;/li&gt;
&lt;li&gt;Added SMB Authentication, based on work from &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/pull/37&#34;&gt;PR 37&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added -MakeCreds option to help in creation of SMTP authentication file.&lt;/li&gt;
&lt;li&gt;Added -AllVms option to specify the backing up of all VMs on a Hyper-V server without the need for a list file.&lt;/li&gt;
&lt;li&gt;Added -Prefix option to backup all VMs beginning with the string specified.&lt;/li&gt;
&lt;li&gt;Added more information about Hyper-V&amp;rsquo;s export limitations to the documentation and in app help.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2024-05-11-version-240511&#34;&gt;2024-05-11: Version 24.05.11&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue where backup success would be reported when using a working directory and the final destination directory for the backup didn&amp;rsquo;t have enough disk space. From &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/27&#34;&gt;Issue 27&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2024-03-21-version-240321&#34;&gt;2024-03-21: Version 24.03.21&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added -CaptureState option for the user to specify the method that Export-VM uses to capture the state of the VM whilst running. From &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/34&#34;&gt;Issue 34&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2024-03-18-version-240318&#34;&gt;2024-03-18: Version 24.03.18&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added fix for verifying password protected 7-Zip archives from &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/33&#34;&gt;Issue 33&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2024-03-08-version-240308&#34;&gt;2024-03-08: Version 24.03.08&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed 7-Zip split files getting renamed and not keeping file extensions when short dates are used.&lt;/li&gt;
&lt;li&gt;Added a verify operation for 7-Zip created archives as per &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/33&#34;&gt;Issue 33&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed an issue where failed backups where also listed as successful.&lt;/li&gt;
&lt;li&gt;Overhauled the backup success/fail checks. They now work a lot more reliably.&lt;/li&gt;
&lt;li&gt;Added check for the work dir/backup dir to exist before trying to remove as this caused a script error.&lt;/li&gt;
&lt;li&gt;Cleaned up console and log file output.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-09-05-version-230905&#34;&gt;2023-09-05: Version 23.09.05&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added new features from &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/28&#34;&gt;Issue 28&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added -ProgCheck option. With this option set, notifications will be sent after each VM is backup is finished.&lt;/li&gt;
&lt;li&gt;Added backup time duration to the script output.&lt;/li&gt;
&lt;li&gt;Added -OptimiseVHD option to shrink the size of the VHDs. Can only be used the the -NoPerms option as the VM must be offline to optimise the VHDs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;del&gt;### 2023-07-25: Version 23.07.25&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;~~* Changed strings that check for VM state to numerical values to help with non-english systems. Thanks to &amp;lsquo;mannyagre&amp;rsquo; for the suggestion.~~&lt;/p&gt;
&lt;h3 id=&#34;2023-04-28-version-230428&#34;&gt;2023-04-28: Version 23.04.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Minor improvement to update checker. If the internet is not reachable it silently errors out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-02-18-version-230218&#34;&gt;2023-02-18: Version 23.02.18&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed specific SMTP config info from config report. &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/24&#34;&gt;Issue 24&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added a &amp;ldquo;simple auth edition&amp;rdquo; version of the script. &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/25&#34;&gt;Issue 25&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-02-07-version-230207&#34;&gt;2023-02-07: Version 23.02.07&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed SMTP authentication details from the &amp;lsquo;Config&amp;rsquo; report. Now it just shows as &amp;lsquo;configured&amp;rsquo; if SMTP user is configured. To be clear: no passwords were ever shown or stored in plain text.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-01-09-version-230109&#34;&gt;2023-01-09: Version 23.01.09&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added script update checker - shows if an update is available in the log and console.&lt;/li&gt;
&lt;li&gt;Added VM restore instructions to readme.md.&lt;/li&gt;
&lt;li&gt;Added &amp;ldquo;low disk space&amp;rdquo; mode. -LowDisk switch deletes previous backup files and folders before backup for systems with low disk space.&lt;/li&gt;
&lt;li&gt;Added webhook option to send log file to.&lt;/li&gt;
&lt;li&gt;Lot&amp;rsquo;s of refactored code using functions. Simpler, easier to manage. Long overdue.&lt;/li&gt;
&lt;li&gt;Fixed bug that started VMs that were shutdown.&lt;/li&gt;
&lt;li&gt;Changed &amp;ldquo;VM not running&amp;rdquo; from an error state to an informational state.&lt;/li&gt;
&lt;li&gt;Changed &amp;ldquo;Backup Success&amp;rdquo; to a success state (green text in console).&lt;/li&gt;
&lt;li&gt;Changed -NoPerms so that VMs are now saved instead of shutdown (safer, faster, does not require Hyper-V integrations)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-22-version-220622&#34;&gt;2022-06-22: Version 22.06.22&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue with the code checking for OS version too late.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-18-version-220618&#34;&gt;2022-06-18: Version 22.06.18&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed Get-Service check outputting to console.&lt;/li&gt;
&lt;li&gt;Fixed backup success/fail counter not working with -NoPerms switch.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-17-version-220617&#34;&gt;2022-06-17: Version 22.06.17&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue with Windows Server 2012 R2 when checking for the Hyper-V service to be installed and running.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-14-version-220611&#34;&gt;2022-06-14: Version 22.06.11&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/19&#34;&gt;Issue 19 on GitHub&lt;/a&gt; - All Virtual Hard Disk folders should now be called &amp;ldquo;Virtual Hard Disks&amp;rdquo; and not some with the name &amp;ldquo;VHD&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Fixed &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/20&#34;&gt;Issue 20 on GitHub&lt;/a&gt; - If -L [path] not configured then a non fatal error would occur as no log path was specified for the log to be output to.&lt;/li&gt;
&lt;li&gt;Fixed an issue where a VM would not be backed up if it were in the state &amp;ldquo;saved&amp;rdquo; and was present in the user configured VM list text file.&lt;/li&gt;
&lt;li&gt;Added user feedback - make backup success or fail clear in the log and console.&lt;/li&gt;
&lt;li&gt;Added user feedback - add &amp;ldquo;VMs backed up x/x&amp;rdquo; to email subject for clear success/fail visibility.&lt;/li&gt;
&lt;li&gt;Added user feedback - Log can now be emailed to multiple addresses.&lt;/li&gt;
&lt;li&gt;Added checks and balances to help with configuration as I&amp;rsquo;m very aware that the initial configuration can be troublesome. Running the utility manually is a lot more friendly and step-by-step now.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Cleaned user entered paths so that trailing slashes no longer break things or have otherwise unintended results.&lt;/li&gt;
&lt;li&gt;Added -LogRotate [days] to removed old logs created by the utility.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added donation link to the ASCII banner.&lt;/li&gt;
&lt;li&gt;Cleaned up code, removed unneeded log noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-03-27-version-220326&#34;&gt;2022-03-27: Version 22.03.26&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Made a small fix to the &amp;lsquo;NoPerms&amp;rsquo; function: The VM will be left in the state it was found. For example, when a VM is found in an offline state, the script will not start the VM once the backup is complete. In the previous version the VM would be started regardless of what state it was in previously.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-02-08-version-220208&#34;&gt;2022-02-08: Version 22.02.08&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added fix for potential BSOD on Windows Server 2016 Hyper-V host when exporting VMs using VSS. The change to the registry will only happen if Windows Server 2016 is detected as the Hyper-V host and only if the registry value is in the default state. If it has been configured previously no change will be made. &lt;a href=&#34;https://github.com/Digressive/HyperV-Backup-Utility/issues/17&#34;&gt;Issue 17 on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-01-20-version-220119&#34;&gt;2022-01-20: Version 22.01.19&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;When using -NoPerms the utility now waits for disk merging to complete before backing up.&lt;/li&gt;
&lt;li&gt;Utility now ignores blanks lines in VM list file.&lt;/li&gt;
&lt;li&gt;Added checks for success or failure in the backup, copy/compression process. If it fails none of the previous backups should be removed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-28-version-211228&#34;&gt;2021-12-28: Version 21.12.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Put checks in place so if a VM fails to backup the old backup for that VM is not removed and the error is logged.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-11-12-version-211109&#34;&gt;2021-11-12: Version 21.11.09&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added more logging info, clearer formatting.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-11-05-version-211105&#34;&gt;2021-11-05: Version 21.11.05&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an error when moving compressed backup files from a working directory.&lt;/li&gt;
&lt;li&gt;Configured logs path now is created, if it does not exist.&lt;/li&gt;
&lt;li&gt;Added OS version info.&lt;/li&gt;
&lt;li&gt;Improved log output, added more information for each stage of the backup.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-08-10-version-210810&#34;&gt;2021-08-10: Version 21.08.10&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added an option to specify the Port for SMTP communication.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-07-02-version-210702&#34;&gt;2021-07-02: Version 21.07.02&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed many bugs introduced with implementing more 7-zip options. 7-zip options I&amp;rsquo;ve tested fully are &amp;lsquo;-t&amp;rsquo; archive type, &amp;lsquo;-p&amp;rsquo; password and &amp;lsquo;-v&amp;rsquo; split files.&lt;/li&gt;
&lt;li&gt;Implemented and automated a formal testing process.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-06-14-version-210614&#34;&gt;2021-06-14: Version 21.06.14&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Replaced -Sz* specific options with -SzOptions which will support any option that 7-zip supports.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-06-02-version-210602&#34;&gt;2021-06-02: Version 21.06.02&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an error where file types which are not .zip were not being moved from the working directory to the final backup location.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-05-30-version-210530&#34;&gt;2021-05-30: Version 21.05.30&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added additional 7-Zip options. -SzSplit to split archives into configuration volumes.&lt;/li&gt;
&lt;li&gt;Changed existing switches for 7-Zip options. Users must now add an additional hyphen &amp;lsquo;-&amp;rsquo; for 7-Zip options. This has been done to better support features that 7-Zip supports.&lt;/li&gt;
&lt;li&gt;Changed how old files are removed. Users should take extra care if they are storing non back-up files in the backup location. This has been done so that 7-Zip&amp;rsquo;s split function can be supported.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-07-13-version-200713&#34;&gt;2020-07-13: Version 20.07.13&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added -ShortDate option. This will create backups with only the Year, Month, Day as the file name.&lt;/li&gt;
&lt;li&gt;Added pass through for 7-Zip options - CPU threads to use and compression level.&lt;/li&gt;
&lt;li&gt;Added proper error handling so errors are properly reported in the console, log and email.&lt;/li&gt;
&lt;li&gt;Bug fixes to create folders when paths are configured without the folders existing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-02-28-version-200228-artifact&#34;&gt;2020-02-28: Version 20.02.28 ‘Artifact’&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed e-mail report extra line breaks in Outlook 365, Version 2001.&lt;/li&gt;
&lt;li&gt;Config report matches design of Image Factory Utility.&lt;/li&gt;
&lt;li&gt;Improved and simplified code.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-02-18-version-20200214-valentine&#34;&gt;2020-02-18: Version 2020.02.14 ‘Valentine’&lt;/h3&gt;
&lt;p&gt;Current known issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;E-mail report has extra line breaks in Outlook 365, Version 2001.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;New features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refactored code.&lt;/li&gt;
&lt;li&gt;Fully backwards compatible.&lt;/li&gt;
&lt;li&gt;Added option to use a working directory to stage backups before moving them to final backup location.&lt;/li&gt;
&lt;li&gt;Added option to use 7-Zip for backup compression.&lt;/li&gt;
&lt;li&gt;Added ASCII banner art when run in the console.&lt;/li&gt;
&lt;li&gt;Added option to disable the ASCII banner art.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-09-04-v45&#34;&gt;2019-09-04 v4.5&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added custom subject line for e-mail.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-05-26-v44&#34;&gt;2019-05-26 v4.4&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added more feedback when the script is used interactively.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2018-06-21-v43&#34;&gt;2018-06-21 v4.3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added the ability to specify the VMs to be backed up using a txt file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2018-03-04-v42&#34;&gt;2018-03-04 v4.2&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved logging slightly to be clearer about which VM&amp;rsquo;s previous backups are being deleted.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2018-03-03-v41&#34;&gt;2018-03-03 v4.1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added option to compress the VM backups to a zip file. This option will remove the original VM backup.&lt;/li&gt;
&lt;li&gt;Added option to keep a configurable number of days’ worth of backups, so you can keep a history/archive of previous backups. Every effort has been taken to only remove backup files or folders generated by this utility.&lt;/li&gt;
&lt;li&gt;Changed the script so that when backup is complete, the VM backup folders/zip files will be have the time and date append to them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2018-01-15-v40&#34;&gt;2018-01-15 v4.0&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The backup script no longer creates a folder named after the Host server. The VM backups are placed in the root of the specified backup location.&lt;/li&gt;
&lt;li&gt;Fixed a small issue with logging where the script completes the backup process, then states incorrectly &amp;ldquo;there are no VMs to backup&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2018-01-12-v39&#34;&gt;2018-01-12 v3.9&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a small bug that occurred when there were no VMs to backup, the script incorrectly logged an error in exporting the VMs. It now states that that are no VMs to backup.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2018-01-12-v38&#34;&gt;2018-01-12 v3.8&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The script has been tested performing backups of Virtual Machines running on a Hyper-V cluster.&lt;/li&gt;
&lt;li&gt;Minor update to documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-16-v37&#34;&gt;2017-10-16 v3.7&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Changed SMTP authentication to require an encrypted password file.&lt;/li&gt;
&lt;li&gt;Added instructions on how to generate an encrypted password file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-07-v36&#34;&gt;2017-10-07 v3.6&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added necessary information to add the script to the PowerShell Gallery.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-09-18-v35&#34;&gt;2017-09-18 v3.5&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved the log output to be easier to read.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-07-22-v34&#34;&gt;2017-07-22 v3.4&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved commenting on the code for documentation purposes.&lt;/li&gt;
&lt;li&gt;Added authentication and SSL options for e-mail notification.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-05-20-v33&#34;&gt;2017-05-20 v3.3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added configuration via command line switches.&lt;/li&gt;
&lt;li&gt;Added option to perform regular online export if destination allows it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-04-24-minor-update&#34;&gt;2017-04-24 Minor Update&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cleaned up the formatting and commented sections of the script.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-04-21-minor-update&#34;&gt;2017-04-21 Minor Update&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added the ability to email the log file when the script completes.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>PowerShell Utility</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>On-Prem AD User Creator Utility</title>
        <link>https://gal.vin/utils/on-prem-ad-user-creator-utility/</link>
        <pubDate>Wed, 13 Sep 2017 19:00:25 +0000</pubDate>
        
        <atom:modified>Wed, 13 Sep 2017 19:00:25 +0000</atom:modified>
        <guid>https://gal.vin/utils/on-prem-ad-user-creator-utility/</guid>
        <description>Configurable Script For Creating On-Prem Active Directory User Accounts On-Prem AD User Creator Utility is available from:
 GitHub  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.
Thanks
-Mike
Features and Requirements  Requires the Active Directory PowerShell module be installed. Requires A CSV file containing the FirstName and LastName of each user to create.</description>
        <content:encoded>&lt;h2 id=&#34;configurable-script-for-creating-on-prem-active-directory-user-accounts&#34;&gt;Configurable Script For Creating On-Prem Active Directory User Accounts&lt;/h2&gt;
&lt;p&gt;On-Prem AD User Creator Utility is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/On-Prem-AD-User-Creator-Utility&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Requires the Active Directory PowerShell module be installed.&lt;/li&gt;
&lt;li&gt;Requires A CSV file containing the FirstName and LastName of each user to create.&lt;/li&gt;
&lt;li&gt;Configurable list of groups to add new users to.&lt;/li&gt;
&lt;li&gt;Randomly generated passwords for each user.&lt;/li&gt;
&lt;li&gt;User names are generated from first name &amp;amp; a 3 digit random number.&lt;/li&gt;
&lt;li&gt;The utility requires at least PowerShell 5.0.&lt;/li&gt;
&lt;li&gt;Tested on Windows 11, Windows 10, Windows Server 2022, Windows Server 2019, Windows Server 2016.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;generating-a-password-file-for-smtp-authentication&#34;&gt;Generating A Password File For SMTP Authentication&lt;/h2&gt;
&lt;p&gt;The password used for SMTP server authentication must be in an encrypted text file. To generate the password file, run the following command in PowerShell on the computer and logged in with the user that will be running the utility. When you run the command, you will be prompted for a username and password. Enter the username and password you want to use to authenticate to your SMTP server.&lt;/p&gt;
&lt;p&gt;Please note: This is only required if you need to authenticate to the SMTP server when send the log via e-mail.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-Credential&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ConvertFrom-SecureString&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Set-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps-script-pwd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After running the commands, you will have a text file containing the encrypted password. When configuring the -Pwd switch enter the path and file name of this file.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Here’s a list of all the command line switches and example configurations.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Line Switch&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-CSV&lt;/td&gt;
&lt;td&gt;The path of the csv file containing the user info. Please see the users-example.csv file for how to structure your own file.&lt;/td&gt;
&lt;td&gt;[path]user-list.csv&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-OU&lt;/td&gt;
&lt;td&gt;The Organizational Unit to create the users in. If none is configured the default Computers OU will be used.&lt;/td&gt;
&lt;td&gt;&amp;lsquo;OU=User_Accounts,DC=contoso,DC=com&amp;rsquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-UPN&lt;/td&gt;
&lt;td&gt;The Universal Principal Name the users should be configured with. If none is configured the forest name will be used.&lt;/td&gt;
&lt;td&gt;[contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-HomeLetter&lt;/td&gt;
&lt;td&gt;The drive letter to use for the home drive path.&lt;/td&gt;
&lt;td&gt;[drive letter]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-HomePath&lt;/td&gt;
&lt;td&gt;The path where the location of the home drive should reside.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Groups&lt;/td&gt;
&lt;td&gt;The name of the group(s) separated by a comma that all the new users should be a member of.&lt;/td&gt;
&lt;td&gt;[UserGroup1,UserGroup2]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-L&lt;/td&gt;
&lt;td&gt;The path to output the log file to.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LogRotate&lt;/td&gt;
&lt;td&gt;Remove logs produced by the utility older than X days&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-NoBanner&lt;/td&gt;
&lt;td&gt;Use this option to hide the ASCII art title in the console.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Help&lt;/td&gt;
&lt;td&gt;Display usage information. No arguments also displays help.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Subject&lt;/td&gt;
&lt;td&gt;Specify a subject line. If you leave this blank the default subject will be used&lt;/td&gt;
&lt;td&gt;&amp;ldquo;&#39;[Server: Notification]&#39;&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SendTo&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent to. For multiple address, separate with a comma.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-From&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent from.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Smtp&lt;/td&gt;
&lt;td&gt;The DNS name or IP address of the SMTP server.&lt;/td&gt;
&lt;td&gt;[smtp server address]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Port&lt;/td&gt;
&lt;td&gt;The Port that should be used for the SMTP server. If none is specified then the default of 25 will be used.&lt;/td&gt;
&lt;td&gt;[port number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-User&lt;/td&gt;
&lt;td&gt;The user account to authenticate to the SMTP server.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Pwd&lt;/td&gt;
&lt;td&gt;The txt file containing the encrypted password for SMTP authentication.&lt;/td&gt;
&lt;td&gt;[path]ps-script-pwd.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-UseSsl&lt;/td&gt;
&lt;td&gt;Configures the utility to connect to the SMTP server using SSL.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path\]On-Prem-AD-User-Creator.ps1 -csv [path\]user-list.csv
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will create new users from the names in the csv file. The user objects will be created in the &amp;lsquo;Computers&amp;rsquo; builtin OU.&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2023-04-28-version-230428&#34;&gt;2023-04-28: Version 23.04.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed specific SMTP config info from config report.&lt;/li&gt;
&lt;li&gt;Added script update checker - shows if an update is available in the log and console. If the internet is not reachable it silently errors out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-14-version-220606&#34;&gt;2022-06-14: Version 22.06.06&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added new feature: log can now be emailed to multiple addresses.&lt;/li&gt;
&lt;li&gt;Added checks and balances to help with configuration as I&amp;rsquo;m very aware that the initial configuration can be troublesome. Running the utility manually is a lot more friendly and step-by-step now.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Cleaned user entered paths so that trailing slashes no longer break things or have otherwise unintended results.&lt;/li&gt;
&lt;li&gt;Added -LogRotate [days] to removed old logs created by the utility.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added donation link to the ASCII banner.&lt;/li&gt;
&lt;li&gt;Cleaned up code, removed unneeded log noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-08-version-211208&#34;&gt;2021-12-08: Version 21.12.08&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configured logs path now is created, if it does not exist.&lt;/li&gt;
&lt;li&gt;Added OS version info.&lt;/li&gt;
&lt;li&gt;Added Utility version info.&lt;/li&gt;
&lt;li&gt;Added Hostname info.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-09-20-version-210920&#34;&gt;2021-09-20: Version 21.09.20&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added code to make sure sam account name will never be more than 19 characters, due to the default sam account name length being 20 characters.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-09-15-version-210915&#34;&gt;2021-09-15: Version 21.09.15&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Completely rewritten to streamline the user creation process.&lt;/li&gt;
&lt;li&gt;User passwords are now randomly generated.&lt;/li&gt;
&lt;li&gt;Added option to add users to multiple groups.&lt;/li&gt;
&lt;li&gt;Utility will find groups based on the AD name. No more having to specify the whole DN.&lt;/li&gt;
&lt;li&gt;Added ASCII banner art when run in the console.&lt;/li&gt;
&lt;li&gt;Added option to disable the ASCII banner art.&lt;/li&gt;
&lt;li&gt;Added an option to specify the Port for SMTP communication.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-09-04-v16&#34;&gt;2019-09-04 v1.6&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added custom subject line for e-mail.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-16-v15&#34;&gt;2017-10-16 v1.5&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Changed SMTP authentication to require an encrypted password file.&lt;/li&gt;
&lt;li&gt;Added instructions on how to generate an encrypted password file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-07-v14&#34;&gt;2017-10-07 v1.4&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added necessary information to add the script to the PowerShell Gallery.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-09-13-v13&#34;&gt;2017-09-13 v1.3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added check for existence of user before attempting to create user.&lt;/li&gt;
&lt;li&gt;Improved logging to handle the above change.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-07-22-v12&#34;&gt;2017-07-22 v1.2&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved code commenting for documentation purposes.&lt;/li&gt;
&lt;li&gt;Added authentication and SSL options for e-mail notification.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Active Directory</category>
            
          
            
              <category>PowerShell Utility</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>WSUS Maintenance Utility</title>
        <link>https://gal.vin/utils/wsus-maint-utility/</link>
        <pubDate>Mon, 28 Aug 2017 20:15:22 +0000</pubDate>
        
        <atom:modified>Mon, 28 Aug 2017 20:15:22 +0000</atom:modified>
        <guid>https://gal.vin/utils/wsus-maint-utility/</guid>
        <description>Clean up WSUS WSUS Maintenance Utility is available from:
 GitHub The Microsoft PowerShell Gallery  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.
Thanks
-Mike
Features and Requirements  It&amp;rsquo;s designed to run either on a WSUS server itself or can be run from a remote machine. The computer that is running the utility must have the WSUS management PowerShell modules installed.</description>
        <content:encoded>&lt;h2 id=&#34;clean-up-wsus&#34;&gt;Clean up WSUS&lt;/h2&gt;
&lt;p&gt;WSUS Maintenance Utility is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/WSUS-Maintenance&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.powershellgallery.com/packages/Wsus-Maintenance&#34;&gt;The Microsoft PowerShell Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s designed to run either on a WSUS server itself or can be run from a remote machine.&lt;/li&gt;
&lt;li&gt;The computer that is running the utility must have the WSUS management PowerShell modules installed.&lt;/li&gt;
&lt;li&gt;The utility requires at least PowerShell 5.0&lt;/li&gt;
&lt;li&gt;This utility has been tested on Windows 11, Windows 10, Windows Server 2022, Windows Server 2019, Windows Server 2016.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;generating-a-password-file-for-smtp-authentication&#34;&gt;Generating A Password File For SMTP Authentication&lt;/h2&gt;
&lt;p&gt;The password used for SMTP server authentication must be in an encrypted text file. To generate the password file, run the following command in PowerShell on the computer and logged in with the user that will be running the utility. When you run the command, you will be prompted for a username and password. Enter the username and password you want to use to authenticate to your SMTP server.&lt;/p&gt;
&lt;p&gt;Please note: This is only required if you need to authenticate to the SMTP server when send the log via e-mail.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-Credential&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ConvertFrom-SecureString&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Set-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps-script-pwd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After running the commands, you will have a text file containing the encrypted password. When configuring the -Pwd switch enter the path and file name of this file.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Here’s a list of all the command line switches and example configurations.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Line Switch&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-Run&lt;/td&gt;
&lt;td&gt;Run the maintenance routine on the local computer.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Server&lt;/td&gt;
&lt;td&gt;The WSUS server to run the maintenance routine on.&lt;/td&gt;
&lt;td&gt;[server name]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Port&lt;/td&gt;
&lt;td&gt;The port WSUS is running on the server. If you do not configure this, the default port will be used.&lt;/td&gt;
&lt;td&gt;[port number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-WsusSsl&lt;/td&gt;
&lt;td&gt;Use this option if your WSUS server uses SSL. If you do not configure the port using the above, then the default SSL port will be used.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-L&lt;/td&gt;
&lt;td&gt;The path to output the log file to.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LogRotate&lt;/td&gt;
&lt;td&gt;Remove logs produced by the utility older than X days&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-NoBanner&lt;/td&gt;
&lt;td&gt;Use this option to hide the ASCII art title in the console.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Help&lt;/td&gt;
&lt;td&gt;Display usage information. No arguments also displays help.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Webhook&lt;/td&gt;
&lt;td&gt;The txt file containing the URI for a webhook to send the log file to.&lt;/td&gt;
&lt;td&gt;[path]webhook.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Subject&lt;/td&gt;
&lt;td&gt;Specify a subject line. If you leave this blank the default subject will be used&lt;/td&gt;
&lt;td&gt;&amp;ldquo;&#39;[Server: Notification]&#39;&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SendTo&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent to. For multiple address, separate with a comma.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-From&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent from.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Smtp&lt;/td&gt;
&lt;td&gt;The DNS name or IP address of the SMTP server.&lt;/td&gt;
&lt;td&gt;[smtp server address]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SmtpPort&lt;/td&gt;
&lt;td&gt;The Port that should be used for the SMTP server. If none is specified then the default of 25 will be used.&lt;/td&gt;
&lt;td&gt;[port number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-User&lt;/td&gt;
&lt;td&gt;The user account to authenticate to the SMTP server.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Pwd&lt;/td&gt;
&lt;td&gt;The txt file containing the encrypted password for SMTP authentication.&lt;/td&gt;
&lt;td&gt;[path]ps-script-pwd.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-UseSsl&lt;/td&gt;
&lt;td&gt;Configures the utility to connect to the SMTP server using SSL.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path\]Wsus-Maintenance.ps1 -Run
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will run the maintenance jobs on the local server&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2023-04-28-version-230428&#34;&gt;2023-04-28: Version 23.04.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Minor improvement to update checker. If the internet is not reachable it silently errors out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-03-21-version-230321&#34;&gt;2023-03-21: Version 23.03.21&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed specific SMTP config info from config report.&lt;/li&gt;
&lt;li&gt;Added script update checker - shows if an update is available in the log and console.&lt;/li&gt;
&lt;li&gt;Added webhook option to send log file to.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-18-version-220618&#34;&gt;2022-06-18: Version 22.06.18&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed Get-Service check outputting to console.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-14-version-220528&#34;&gt;2022-06-14: Version 22.05.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added new feature: log can now be emailed to multiple addresses.&lt;/li&gt;
&lt;li&gt;Added checks and balances to help with configuration as I&amp;rsquo;m very aware that the initial configuration can be troublesome. Running the utility manually is a lot more friendly and step-by-step now.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Cleaned user entered paths so that trailing slashes no longer break things or have otherwise unintended results.&lt;/li&gt;
&lt;li&gt;Added -LogRotate [days] to removed old logs created by the utility.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added donation link to the ASCII banner.&lt;/li&gt;
&lt;li&gt;Cleaned up code, removed unneeded log noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-08-version-211208&#34;&gt;2021-12-08: Version 21.12.08&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configured logs path now is created, if it does not exist.&lt;/li&gt;
&lt;li&gt;Added OS version info.&lt;/li&gt;
&lt;li&gt;Added Utility version info.&lt;/li&gt;
&lt;li&gt;Added Hostname info.&lt;/li&gt;
&lt;li&gt;Added an option to specify the Port for SMTP communication.&lt;/li&gt;
&lt;li&gt;Changed a variable to prevent conflicts with future PowerShell versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-20-version-200320&#34;&gt;2020-03-20: Version 20.03.20&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added code contribution from &lt;a href=&#34;mailto:ideas@habs.homelinux.net&#34;&gt;ideas@habs.homelinux.net&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Individual clean-up jobs now run separately.&lt;/li&gt;
&lt;li&gt;Improved reporting.&lt;/li&gt;
&lt;li&gt;Made slight improvements to documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-05-version-200303-burger&#34;&gt;2020-03-05: Version 20.03.03 ‘Burger’&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added SSL option for connecting to the WSUS server.&lt;/li&gt;
&lt;li&gt;Made the -Port switch optional. If it is not specified, the default port is used. If -WsusSsl is specified, the default port for SSL is used.&lt;/li&gt;
&lt;li&gt;Added config report.&lt;/li&gt;
&lt;li&gt;Added ASCII banner art when run in the console.&lt;/li&gt;
&lt;li&gt;Added option to disable the ASCII banner art.&lt;/li&gt;
&lt;li&gt;Refactored code.&lt;/li&gt;
&lt;li&gt;Fully backwards compatible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-09-04-v18&#34;&gt;2019-09-04 v1.8&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added custom subject line for e-mail.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-04-23-v17&#34;&gt;2019-04-23 v1.7&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The script will now not run the clean up process twice.&lt;/li&gt;
&lt;li&gt;The script will now report if the service isn&amp;rsquo;t running before starting.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-16-v16&#34;&gt;2017-10-16 v1.6&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Changed SMTP authentication to require an encrypted password file.&lt;/li&gt;
&lt;li&gt;Added instructions on how to generate an encrypted password file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-07-v15&#34;&gt;2017-10-07 v1.5&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added necessary information to add the script to the PowerShell Gallery.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-09-25-v14&#34;&gt;2017-09-25 v1.4&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cleaned up formatting, minor changes to code for efficiency.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-08-11-v13&#34;&gt;2017-08-11 v1.3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved, cleaner logging. The log file is no longer produced from PowerShell&amp;rsquo;s Transcript function.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-07-22-v12&#34;&gt;2017-07-22 v1.2&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved commenting on the code for documentation purposes.&lt;/li&gt;
&lt;li&gt;Added authentication and SSL options for e-mail notification.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-05-22-v11&#34;&gt;2017-05-22 v1.1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added configuration via command line switches.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>PowerShell Utility</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Image Factory Utility</title>
        <link>https://gal.vin/utils/image-factory-utility/</link>
        <pubDate>Sat, 26 Aug 2017 11:30:52 +0000</pubDate>
        
        <atom:modified>Sat, 26 Aug 2017 11:30:52 +0000</atom:modified>
        <guid>https://gal.vin/utils/image-factory-utility/</guid>
        <description>Automate Creation of WIM Files Image Factory Utility is available from:
 GitHub The Microsoft PowerShell Gallery  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the ‘issues’ tab on GitHub.
Thanks
-Mike
Features and Requirements  This utility is designed to run on a computer with Microsoft Deployment Toolkit installed. The computer must have either the Hyper-V management PowerShell modules installed, or Virtual Box.</description>
        <content:encoded>&lt;h2 id=&#34;automate-creation-of-wim-files&#34;&gt;Automate Creation of WIM Files&lt;/h2&gt;
&lt;p&gt;Image Factory Utility is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/Image-Factory&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.powershellgallery.com/packages/Image-Factory&#34;&gt;The Microsoft PowerShell Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the ‘issues’ tab on GitHub.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This utility is designed to run on a computer with Microsoft Deployment Toolkit installed.&lt;/li&gt;
&lt;li&gt;The computer must have either the Hyper-V management PowerShell modules installed, or Virtual Box.&lt;/li&gt;
&lt;li&gt;The primary function of this utility is to automate the creation of wim files from MDT task sequences.&lt;/li&gt;
&lt;li&gt;The utility requires at least PowerShell 5.0.&lt;/li&gt;
&lt;li&gt;This utility has been tested on Windows 11, Windows 10, Windows Server 2019, Windows Server 2016 and Windows Server 2012 R2.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;virtual-box-support&#34;&gt;Virtual Box Support&lt;/h2&gt;
&lt;p&gt;This utility expects Oracle Virtual Box to be installed in the default location of: &lt;code&gt;C:\Program Files\Oracle\VirtualBox&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;important-information&#34;&gt;Important Information&lt;/h2&gt;
&lt;p&gt;The utility will make changes to your customsettings.ini file, although it will make a backup first. These changes are necessary so that the build process runs automated. Depending on your environment, you may need to make additional changes to your customsettings.ini.&lt;/p&gt;
&lt;h2 id=&#34;separating-your-build-and-deployment-shares&#34;&gt;Separating your build and deployment shares&lt;/h2&gt;
&lt;p&gt;I would recommend running with a separate build share so that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Image Factory Utility doesn&amp;rsquo;t tie up the main deployment share whilst running.&lt;/li&gt;
&lt;li&gt;The build environment can be configured separately.&lt;/li&gt;
&lt;li&gt;The boot media for the build share can be configured to automatically log into the deployment environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are the settings you&amp;rsquo;ll need to add to your Bootstrap.ini to automatically log into the build share. Don&amp;rsquo;t forget to update your build share in MDT and regenerate the boot images.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[Settings]
Priority=Default

[Default]
DeployRoot=[path\]BuildShare$
UserDomain=contoso.com
UserID=mdt_admin
UserPassword=P@ssw0rd
SkipBDDWelcome=YES
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;generating-a-password-file-for-smtp-authentication&#34;&gt;Generating A Password File For SMTP Authentication&lt;/h2&gt;
&lt;p&gt;The password used for SMTP server authentication must be in an encrypted text file. To generate the password file, run the following command in PowerShell on the computer and logged in with the user that will be running the utility. When you run the command, you will be prompted for a username and password. Enter the username and password you want to use to authenticate to your SMTP server.&lt;/p&gt;
&lt;p&gt;Please note: This is only required if you need to authenticate to the SMTP server when send the log via e-mail.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-Credential&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ConvertFrom-SecureString&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Set-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps-script-pwd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After running the commands, you will have a text file containing the encrypted password. When configuring the -Pwd switch enter the path and file name of this file.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Here’s a list of all the command line switches and example configurations.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Line Switch&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-Build&lt;/td&gt;
&lt;td&gt;Location of the build share. It can be the same as the deployment share, and it can be a local or UNC path.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Deploy&lt;/td&gt;
&lt;td&gt;Location of the deployment share. It can be the same as the deployment share, and it can be a local or UNC path.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Vh&lt;/td&gt;
&lt;td&gt;Hyper-V Only - Name of the Hyper-V host if remote. If not set it will default to local.&lt;/td&gt;
&lt;td&gt;[hostname]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Vhd&lt;/td&gt;
&lt;td&gt;The path to store the virtual hard disk file(s). If using a remote Hyper-V server the path should be relative for that server.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Boot&lt;/td&gt;
&lt;td&gt;The path to the iso file to boot from. If using a remote Hyper-V server the path should be relative for that server.&lt;/td&gt;
&lt;td&gt;[path]LiteTouchPE_x64.iso&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Vnic&lt;/td&gt;
&lt;td&gt;Hyper-V Only - Name of the virtual switch that the VM should use to communicate.&lt;/td&gt;
&lt;td&gt;&amp;ldquo;&amp;lsquo;virtual NIC name&amp;rsquo;&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Ts&lt;/td&gt;
&lt;td&gt;The comma-separated list of task sequence ID&amp;rsquo;s to build.&lt;/td&gt;
&lt;td&gt;[W11-21H2,W10-21H2]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-VBox&lt;/td&gt;
&lt;td&gt;Use this switch to use Oracle Virtual Box instead of Hyper-V&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Compat&lt;/td&gt;
&lt;td&gt;Legacy Hyper-V Only - Use this switch if the Hyper-V host is Windows Server 2012 R2 and the script is running on Windows 10 or Windows Server 2016/2019. This loads the older version of the Hyper-V module, so it can manage WS2012 R2 Hyper-V VMs.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Remote&lt;/td&gt;
&lt;td&gt;Hyper-V Only - Use this switch if the Hyper-V server is a remote device.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-L&lt;/td&gt;
&lt;td&gt;The path to output the log file to.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LogRotate&lt;/td&gt;
&lt;td&gt;Remove logs produced by the utility older than X days&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-NoBanner&lt;/td&gt;
&lt;td&gt;Use this option to hide the ASCII art title in the console.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Help&lt;/td&gt;
&lt;td&gt;Display usage information. No arguments also displays help.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-ProgCheck&lt;/td&gt;
&lt;td&gt;Send notifications (email or webhook) after each Task Sequence is processed.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Subject&lt;/td&gt;
&lt;td&gt;Specify a subject line. If you leave this blank the default subject will be used&lt;/td&gt;
&lt;td&gt;&amp;ldquo;&#39;[Server: Notification]&#39;&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SendTo&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent to. For multiple address, separate with a comma.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-From&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent from.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Smtp&lt;/td&gt;
&lt;td&gt;The DNS name or IP address of the SMTP server.&lt;/td&gt;
&lt;td&gt;[smtp server address]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Port&lt;/td&gt;
&lt;td&gt;The Port that should be used for the SMTP server. If none is specified then the default of 25 will be used.&lt;/td&gt;
&lt;td&gt;[port number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-User&lt;/td&gt;
&lt;td&gt;The user account to authenticate to the SMTP server.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Pwd&lt;/td&gt;
&lt;td&gt;The txt file containing the encrypted password for SMTP authentication.&lt;/td&gt;
&lt;td&gt;[path]ps-script-pwd.txt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-UseSsl&lt;/td&gt;
&lt;td&gt;Configures the utility to connect to the SMTP server using SSL.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path\]Image-Factory.ps1 -Build [path\] -Deploy [path\] -Boot [path\]LiteTouchPE_x64.iso -Vnic [virtual NIC name] -Ts W11-21H2,W10-21H2
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will use Hyper-V VMs on the local machine to build wim files from the task sequences W11-21H2 and W10-21H2. The wim files will be imported to the deployment share specified.&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2023-09-01-version-230901&#34;&gt;2023-09-01: Version 23.09.01&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added -ProgCheck option. With this option set, notifications will be sent after each Task Sequence is processed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2023-04-28-version-230428&#34;&gt;2023-04-28: Version 23.04.28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed specific SMTP config info from config report.&lt;/li&gt;
&lt;li&gt;Added script update checker - shows if an update is available in the log and console. If the internet is not reachable it silently errors out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-18-version-220618&#34;&gt;2022-06-18: Version 22.06.18&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed Get-Service check outputting to console.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-17-version-220617&#34;&gt;2022-06-17: Version 22.06.17&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue with Windows Server 2012 R2 when checking for the Hyper-V service to be installed and running.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2022-06-14-version-220607&#34;&gt;2022-06-14: Version 22.06.07&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added new feature: log can now be emailed to multiple addresses.&lt;/li&gt;
&lt;li&gt;Added checks and balances to help with configuration as I&amp;rsquo;m very aware that the initial configuration can be troublesome. Running the utility manually is a lot more friendly and step-by-step now.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Cleaned user entered paths so that trailing slashes no longer break things or have otherwise unintended results.&lt;/li&gt;
&lt;li&gt;Added -LogRotate [days] to removed old logs created by the utility.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added donation link to the ASCII banner.&lt;/li&gt;
&lt;li&gt;Cleaned up code, removed unneeded log noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-02-version-211201&#34;&gt;2021-12-02: Version 21.12.01&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added option to use Oracle Virtual Box instead of Hyper-V.&lt;/li&gt;
&lt;li&gt;Configured logs path now is created, if it does not exist.&lt;/li&gt;
&lt;li&gt;Added OS version info.&lt;/li&gt;
&lt;li&gt;Added an option to specify the Port for SMTP communication.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-06-22-version-210622&#34;&gt;2021-06-22: Version 21.06.22&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added a progression bar display.&lt;/li&gt;
&lt;li&gt;Changed a variable to prevent conflicts with future PowerShell versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-02-27-version-200224-robot&#34;&gt;2020-02-27: Version 20.02.24 ‘Robot’&lt;/h3&gt;
&lt;p&gt;New features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refactored code.&lt;/li&gt;
&lt;li&gt;Fully backwards compatible.&lt;/li&gt;
&lt;li&gt;Added ASCII banner art when run in the console.&lt;/li&gt;
&lt;li&gt;Added option to disable the ASCII banner art.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-09-04-v29&#34;&gt;2019-09-04 v2.9&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added custom subject line for e-mail.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2018-12-17-v28&#34;&gt;2018-12-17 v2.8&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The script will now set automatic checkpoints to &amp;lsquo;disabled&amp;rsquo; on the VM&amp;rsquo;s. This is to help with VM disk management and clean up.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-16-v27&#34;&gt;2017-10-16 v2.7&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Changed SMTP authentication to require an encrypted password file.&lt;/li&gt;
&lt;li&gt;Added instructions on how to generate an encrypted password file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-09-v26&#34;&gt;2017-10-09 v2.6&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added necessary information to add the script to the PowerShell Gallery.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-09-18-v25&#34;&gt;2017-09-18 v2.5&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added a sanity check of the MDT deployment share. The script now checks for an existing CustomSettings-backup.ini file. If it exists, it reports that the deployment share is not clean.&lt;/li&gt;
&lt;li&gt;Added extra line breaks when editing the CustomSettings.ini as previously it was adding the required configuration on the last line of the ini file and causing the deployment to fail. Many thanks to Twitter user &lt;a href=&#34;https://twitter.com/thestardawg&#34;&gt;@thestardawg&lt;/a&gt; for reporting this bug.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-08-26-v24&#34;&gt;2017-08-26 v2.4&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved logging so that the log file and console output is now more readable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-07-22-v23&#34;&gt;2017-07-22 v2.3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved commenting on the code for documentation purposes.&lt;/li&gt;
&lt;li&gt;Added authentication and SSL options for e-mail notification.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-05-11-v22&#34;&gt;2017-05-11 v2.2&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added command line configuration options so the script itself does not need to be edited.&lt;/li&gt;
&lt;li&gt;Added code to manage the Virtual Machines without the need for extra configuration options.&lt;/li&gt;
&lt;li&gt;Removed some unnecessary extra configuration options and variables.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-04-25-v21&#34;&gt;2017-04-25 v2.1&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve added logging to the script and the ability to email the log on completion. I&amp;rsquo;ve also added a variable to configure the Virtual Switch that the VM&amp;rsquo;s Network Adaptor should use. This was an oversight on the previous version.&lt;/p&gt;
&lt;h3 id=&#34;2017-04-17-minor-update&#34;&gt;2017-04-17 Minor update&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve added hour and minutes to the WIM file creation name as I have been running multiple images of the same Task Sequence within a day and needed some extra data to prevent the image from over writing the previous one. I&amp;rsquo;ve also made another script, using this one as a base so I can generate VMs to test the deployment of the captured images after I&amp;rsquo;ve manually renamed them in MDT and added to the task sequences. The VMs are named after the Task Sequence ID and do not delete after the Task Sequence completes.&lt;/p&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>Oracle Virtual Box</category>
            
          
            
              <category>Hyper-V</category>
            
          
            
              <category>Microsoft Deployment Toolkit</category>
            
          
            
              <category>PowerShell Utility</category>
            
          
            
              <category>Windows Desktop</category>
            
          
            
              <category>Windows Server</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Log Manager Utility</title>
        <link>https://gal.vin/utils/log-manager-utility/</link>
        <pubDate>Tue, 13 Jun 2017 18:26:14 +0000</pubDate>
        
        <atom:modified>Tue, 13 Jun 2017 18:26:14 +0000</atom:modified>
        <guid>https://gal.vin/utils/log-manager-utility/</guid>
        <description>Flexible clean up and backup of log files For full change log and more information, visit my site.
Log Manager Utility is available from:
 GitHub The Microsoft PowerShell Gallery  Please consider supporting my work:
 Support with a one-time donation using PayPal.  Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.
Thanks
-Mike
Features and Requirements  The utility will delete files and folders older than X days.</description>
        <content:encoded>&lt;h2 id=&#34;flexible-clean-up-and-backup-of-log-files&#34;&gt;Flexible clean up and backup of log files&lt;/h2&gt;
&lt;p&gt;For full change log and more information, &lt;a href=&#34;https://gal.vin/utils/log-manager-utility/&#34;&gt;visit my site.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Log Manager Utility is available from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Digressive/Log-Manager&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.powershellgallery.com/packages/Log-Manager&#34;&gt;The Microsoft PowerShell Gallery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please consider supporting my work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support with a one-time donation using &lt;a href=&#34;https://www.paypal.me/digressive&#34;&gt;PayPal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please report any problems via the &amp;lsquo;issues&amp;rsquo; tab on GitHub.&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
-Mike&lt;/p&gt;
&lt;h2 id=&#34;features-and-requirements&#34;&gt;Features and Requirements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The utility will delete files and folders older than X days.&lt;/li&gt;
&lt;li&gt;It can also backup files and folders older than X days to another location.&lt;/li&gt;
&lt;li&gt;It can also compress backups as a zip file.&lt;/li&gt;
&lt;li&gt;The utility requires at least PowerShell 5.0&lt;/li&gt;
&lt;li&gt;This utility has been tested on Windows 11, Windows 10, Windows Server 2022, Windows Server 2019, Windows Server 2016 and Windows Server 2012 R2.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;generating-a-password-file-for-smtp-authentication&#34;&gt;Generating A Password File For SMTP Authentication&lt;/h2&gt;
&lt;p&gt;The password used for SMTP server authentication must be in an encrypted text file. To generate the password file, run the following command in PowerShell on the computer and logged in with the user that will be running the utility. When you run the command, you will be prompted for a username and password. Enter the username and password you want to use to authenticate to your SMTP server.&lt;/p&gt;
&lt;p&gt;Please note: This is only required if you need to authenticate to the SMTP server when send the log via e-mail.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-Credential&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;$creds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Password&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;ConvertFrom-SecureString&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Set-Content&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;c:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps-script-pwd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After running the commands, you will have a text file containing the encrypted password. When configuring the -Pwd switch enter the path and file name of this file.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Here’s a list of all the command line switches and example configurations.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command Line Switch&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;-LogsPath&lt;/td&gt;
&lt;td&gt;The path that contains the logs that the utility should process.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LogKeep&lt;/td&gt;
&lt;td&gt;Use this option to specify how long to keep logs for. Logs older than the number of days specified will be deleted.&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-BackupTo&lt;/td&gt;
&lt;td&gt;The path the logs should be backed up to. A folder will be created inside this location. If this option is not used, backup will not be performed.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-BacKeep&lt;/td&gt;
&lt;td&gt;Use this option to specify how long to keep the backups. Backups older than the number of days specified will be deleted.&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Wd&lt;/td&gt;
&lt;td&gt;Specify a &amp;lsquo;working directory&amp;rsquo; for the creation of the zip file.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Compress&lt;/td&gt;
&lt;td&gt;This option will create a zip file of the log files.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Sz&lt;/td&gt;
&lt;td&gt;Configure the utility to use 7-Zip to compress the backups. 7-Zip must be installed in the default location &lt;code&gt;$env:ProgramFiles&lt;/code&gt; if it is not found, Windows compression will be used.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-ZipName&lt;/td&gt;
&lt;td&gt;Use this to name the zip file as you wish - the time and date will be appended to this name.&lt;/td&gt;
&lt;td&gt;&amp;ldquo;&amp;lsquo;IIS Logs&amp;rsquo;&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-L&lt;/td&gt;
&lt;td&gt;The path to output the log file to.&lt;/td&gt;
&lt;td&gt;[path]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-LogRotate&lt;/td&gt;
&lt;td&gt;Remove logs produced by the utility older than X days&lt;/td&gt;
&lt;td&gt;[number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-NoBanner&lt;/td&gt;
&lt;td&gt;Use this option to hide the ASCII art title in the console.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Help&lt;/td&gt;
&lt;td&gt;Display usage information. No arguments also displays help.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Subject&lt;/td&gt;
&lt;td&gt;Specify a subject line. If you leave this blank the default subject will be used&lt;/td&gt;
&lt;td&gt;&amp;ldquo;&#39;[Server: Notification]&#39;&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-SendTo&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent to. For multiple address, separate with a comma.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-From&lt;/td&gt;
&lt;td&gt;The e-mail address the log should be sent from.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Smtp&lt;/td&gt;
&lt;td&gt;The DNS name or IP address of the SMTP server.&lt;/td&gt;
&lt;td&gt;[smtp server address]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Port&lt;/td&gt;
&lt;td&gt;The Port that should be used for the SMTP server. If none is specified then the default of 25 will be used.&lt;/td&gt;
&lt;td&gt;[port number]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-User&lt;/td&gt;
&lt;td&gt;The user account to authenticate to the SMTP server.&lt;/td&gt;
&lt;td&gt;[example@contoso.com]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-Pwd&lt;/td&gt;
&lt;td&gt;The txt file containing the encrypted password for SMTP authentication.&lt;/td&gt;
&lt;td&gt;[path\ps-script-pwd.txt]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-UseSsl&lt;/td&gt;
&lt;td&gt;Configures the utility to connect to the SMTP server using SSL.&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;[path\]Log-Manager.ps1 -LogsPath [path\] -LogKeep [number] -BackupTo [path\]
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will backup and remove logs in the path specified older than X days.&lt;/p&gt;
&lt;h2 id=&#34;change-log&#34;&gt;Change Log&lt;/h2&gt;
&lt;h3 id=&#34;2022-06-14-version-220601&#34;&gt;2022-06-14: Version 22.06.01&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added new feature: log can now be emailed to multiple addresses.&lt;/li&gt;
&lt;li&gt;Added checks and balances to help with configuration as I&amp;rsquo;m very aware that the initial configuration can be troublesome. Running the utility manually is a lot more friendly and step-by-step now.&lt;/li&gt;
&lt;li&gt;Added -Help to give usage instructions in the terminal. Running the script with no options will also trigger the -help switch.&lt;/li&gt;
&lt;li&gt;Cleaned user entered paths so that trailing slashes no longer break things or have otherwise unintended results.&lt;/li&gt;
&lt;li&gt;Added -LogRotate [days] to removed old logs created by the utility.&lt;/li&gt;
&lt;li&gt;Streamlined config report so non configured options are not shown.&lt;/li&gt;
&lt;li&gt;Added donation link to the ASCII banner.&lt;/li&gt;
&lt;li&gt;Cleaned up code, removed unneeded log noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-09-version-211209&#34;&gt;2021-12-09: Version 21.12.09&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Moved config output so user can see it even if there&amp;rsquo;s no files to process.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2021-12-08-version-211208&#34;&gt;2021-12-08: Version 21.12.08&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Configured logs path now is created, if it does not exist.&lt;/li&gt;
&lt;li&gt;Added OS version info.&lt;/li&gt;
&lt;li&gt;Added Utility version info.&lt;/li&gt;
&lt;li&gt;Added Hostname info.&lt;/li&gt;
&lt;li&gt;Added an option to specify the Port for SMTP communication.&lt;/li&gt;
&lt;li&gt;Changed a variable to prevent conflicts with future PowerShell versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-07-30-version-200727&#34;&gt;2020-07-30: Version 20.07.27&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added improved error handling and reporting.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-07-21-version-200721&#34;&gt;2020-07-21: Version 20.07.21&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed error when using script without a log output configured.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-23-version-200323&#34;&gt;2020-03-23: Version 20.03.23&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a user reported issue: wildcards in the -LogsPath switch no longer worked. They will now work.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-11-version-200311-cow&#34;&gt;2020-03-11: Version 20.03.11 &amp;lsquo;Cow&amp;rsquo;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The previous command line switch of -LogPath is now -LogsPath. This fixes an issue with a duplicate variable and switch alias preventing utility from running currently.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2020-03-09-version-200306-fish&#34;&gt;2020-03-09: Version 20.03.06 &amp;lsquo;Fish&amp;rsquo;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added custom name for zip file based on user feedback.&lt;/li&gt;
&lt;li&gt;Added option to use 7-zip for zip file backup.&lt;/li&gt;
&lt;li&gt;Added time to keep backups for.&lt;/li&gt;
&lt;li&gt;Added config report.&lt;/li&gt;
&lt;li&gt;Added ASCII banner art when run in the console.&lt;/li&gt;
&lt;li&gt;Added option to disable the ASCII banner art.&lt;/li&gt;
&lt;li&gt;Refactored code.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2019-09-04-v18&#34;&gt;2019-09-04 v1.8&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added custom subject line for e-mail.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-16-v17&#34;&gt;2017-10-16 v1.7&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Changed SMTP authentication to require an encrypted password file.&lt;/li&gt;
&lt;li&gt;Added instructions on how to generate an encrypted password file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-10-09-v16&#34;&gt;2017-10-09 v1.6&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added necessary information to add the script to the PowerShell Gallery.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-09-20-v15&#34;&gt;2017-09-20 v1.5&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved log output to be more legible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-06-21-v14&#34;&gt;2017-06-21 v1.4&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Improved commenting on the code for documentation purposes.&lt;/li&gt;
&lt;li&gt;Added authentication and SSL options for e-mail notification.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2017-06-13-v13&#34;&gt;2017-06-13 v1.3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;First public release.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
        
        
        
        
        
          
            
              <category>PowerShell Utility</category>
            
          
        
        
        
      </item>
      

    
  </channel>
</rss>