<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>PowerShell on Anything About IT</title><link>https://www.verboon.info/categories/powershell/</link><description>Recent content in PowerShell on Anything About IT</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 07 Feb 2021 13:28:44 +0000</lastBuildDate><atom:link href="https://www.verboon.info/categories/powershell/index.xml" rel="self" type="application/rss+xml"/><item><title>Collecting AzureAD User Authentication Method Information</title><link>https://www.verboon.info/2021/02/collecting-azuread-user-authentication-method-information/</link><pubDate>Sun, 07 Feb 2021 13:28:44 +0000</pubDate><guid>https://www.verboon.info/2021/02/collecting-azuread-user-authentication-method-information/</guid><description>&lt;p&gt;Hello everyone, last Friday I received an email from one of my customers, asking how to identify users in Azure AD that have enabled &lt;a href="https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-authentication-passwordless-phone"&gt;passwordless sign-in with the Microsoft Authenticator app&lt;/a&gt;. Previously I usually made use of the &lt;a href="https://docs.microsoft.com/en-us/samples/azure-samples/azure-mfa-authentication-method-analysis/azure-mfa-authentication-method-analysis/"&gt;Script for Azure MFA authentication method analysis&lt;/a&gt; but that script uses the MSOnline PowerShell module where the &lt;code&gt;Get-MsolUser&lt;/code&gt; cmdlet does not expose the information about these newer authentication methods.&lt;/p&gt;
&lt;p&gt;So heading over to Microsoft Graph and there we can grab all authentication methods for users as shown in the example below.&lt;/p&gt;</description></item><item><title>Generating Advanced hunting queries with PowerShell</title><link>https://www.verboon.info/2020/07/generating-advanced-hunting-queries-with-powershell/</link><pubDate>Fri, 10 Jul 2020 23:21:46 +0000</pubDate><guid>https://www.verboon.info/2020/07/generating-advanced-hunting-queries-with-powershell/</guid><description>&lt;p&gt;I was recently writing some advanced hunting queries for Microsoft Defender ATP to search for the execution of specific PowerShell commands. If you are just looking for one specific command, you can run query as sown below&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-kql" data-lang="kql"&gt;// Find all machines running a given Powersehll cmdlet.
let powershellCommandName = &amp;#34;Invoke-RickAscii&amp;#34;; 
DeviceEvents 
| where ActionType == &amp;#34;PowerShellCommand&amp;#34; 
| where AdditionalFields contains powershellCommandName
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But if you are looking for several functions, then there is going to be a lot of manual editing, and so the idea was born to use PowerShell to help me generate an advanced hunting query. The below function can do the following:&lt;/p&gt;</description></item><item><title>User Spam &amp; Phish Submissions configuration in Office 365 – Part 1</title><link>https://www.verboon.info/2020/01/user-spam-phish-submissions-configuration-in-office-365-part-1/</link><pubDate>Sun, 19 Jan 2020 13:54:51 +0000</pubDate><guid>https://www.verboon.info/2020/01/user-spam-phish-submissions-configuration-in-office-365-part-1/</guid><description>&lt;p&gt;Yesterday I noticed a &lt;a href="#"&gt;tweet&lt;/a&gt; from @Pawp81 about a new feature being rolled out in Office 365 to configure user submissions. So, let&amp;rsquo;s have a look at this. When enabling the &amp;lsquo;Report Message&amp;rsquo; add-in in Office 365, users can report misclassified email, whether safe or malicious, to Microsoft and its affiliates for analysis. Until now IT admins had to deploy the &amp;lsquo;Report Message&amp;rsquo; add-in to their end users by configuring the centralized add-in deployment within the Microsoft 365 admin center as described &lt;a href="#"&gt;here&lt;/a&gt; Furthermore when IT admins wanted to receive a copy of a reported message, a transport rule had to be created as described &lt;a href="#"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>PowerShell 7 – Group Policy Settings and Eventlogs</title><link>https://www.verboon.info/2019/12/powershell-7-group-policy-settings-and-eventlogs/</link><pubDate>Mon, 30 Dec 2019 11:54:36 +0000</pubDate><guid>https://www.verboon.info/2019/12/powershell-7-group-policy-settings-and-eventlogs/</guid><description>&lt;p&gt;On December 16th
&lt;a href="https://twitter.com/joeyaiello"&gt;Joey&lt;/a&gt;
&lt;a href="https://devblogs.microsoft.com/powershell/announcing-the-powershell-7-0-release-candidate/"&gt;announced&lt;/a&gt; the availability of the PowerShell 7.0 release candidate. Time to look at the configuration options. Since I&amp;rsquo;m interested in the aspects of managing these settings within an enterprise environment, I closely followed the discussions on GitHub here &lt;a href="https://github.com/PowerShell/PowerShell/pull/10468"&gt;https://github.com/PowerShell/PowerShell/pull/10468&lt;/a&gt; and here &lt;a href="https://github.com/PowerShell/PowerShell/issues/9309"&gt;https://github.com/PowerShell/PowerShell/issues/9309&lt;/a&gt; and the outcome of these discussions is documented here &lt;a href="https://github.com/PowerShell/PowerShell-RFC/blob/master/4-Experimental-Accepted/RFC0041-Policy.md"&gt;https://github.com/PowerShell/PowerShell-RFC/blob/master/4-Experimental-Accepted/RFC0041-Policy.md&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="installation"&gt;Installation&lt;/h1&gt;
&lt;p&gt;Now let&amp;rsquo;s look what options we have for the configuration of logging PowerShell 7 events. Let&amp;rsquo;s start with installing PowerShell 7.0 RC1. All download packages are listed here &lt;a href="https://github.com/PowerShell/PowerShell/releases/tag/v7.0.0-rc.1"&gt;https://github.com/PowerShell/PowerShell/releases/tag/v7.0.0-rc.1&lt;/a&gt; There are multiple options available for installing PowerShell 7 on Windows (AppX, ZIP, MSI) but for this demonstration I use the MSI based installer. &lt;a href="https://github.com/PowerShell/PowerShell/releases/download/v7.0.0-rc.1/PowerShell-7.0.0-rc.1-win-x64.msi"&gt;https://github.com/PowerShell/PowerShell/releases/download/v7.0.0-rc.1/PowerShell-7.0.0-rc.1-win-x64.msi&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How to identify orphan Group Policy content within the Sysvol folder</title><link>https://www.verboon.info/2019/11/how-to-identify-orphan-group-policy-content-within-the-sysvol-folder/</link><pubDate>Tue, 19 Nov 2019 22:22:16 +0000</pubDate><guid>https://www.verboon.info/2019/11/how-to-identify-orphan-group-policy-content-within-the-sysvol-folder/</guid><description>&lt;p&gt;G&amp;rsquo;day everyone. Today I was working on a Microsoft Security Configuration baseline implementation and while browsing through the Sysvol folder I got the impression that there are less GPO objects stored within AD compared to the number of GPO content folders located within the Sysvol\Policies folder. As we speak about several hundred folders here, too many to count manually, and so another PowerShell script was born.&lt;/p&gt;
&lt;p&gt;Now if the terms SYSVOL, policies folder doesn&amp;rsquo;t mean anything to you, I suggest you first read this article from Darren (@grouppolicyguy) &lt;a href="https://sdmsoftware.com/gpoguy/whitepapers/understanding-group-policy-storage/"&gt;Understanding Group Policy Storage&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Microsoft Defender ATP Advanced Hunting – Who's logging on with local admin rights?</title><link>https://www.verboon.info/2019/10/microsoft-defender-atp-advanced-hunting-whos-logging-on-with-local-admin-rights/</link><pubDate>Tue, 29 Oct 2019 16:00:07 +0000</pubDate><guid>https://www.verboon.info/2019/10/microsoft-defender-atp-advanced-hunting-whos-logging-on-with-local-admin-rights/</guid><description>&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: I have updated the kql queries below, but the screenshots itself still refer to the previous (old) schema names&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re among those administrators that use Microsoft Defender Advanced Threat Protection, here&amp;rsquo;s a handy tip how to find out who&amp;rsquo;s logging on with local administrators&amp;rsquo; rights. But first when would you want to run this? Well here are some scenarios I can think of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;You want to find users that have local administrator rights on their devices.&lt;/p&gt;</description></item><item><title>Testing Windows Defender MAPS Connectivity with PowerShell</title><link>https://www.verboon.info/2019/07/testing-windows-defender-maps-connectivity-with-powershell/</link><pubDate>Mon, 08 Jul 2019 22:33:36 +0000</pubDate><guid>https://www.verboon.info/2019/07/testing-windows-defender-maps-connectivity-with-powershell/</guid><description>&lt;p&gt;Whenever I work with customers on Windows Defender or Microsoft Defender Advanced Threat Protection, one of the first things I usually review are the current Windows Defender settings. Having Windows Defender properly configured is key, because otherwise you might not be able to make use of all the capabilities Defender and Defender ATP provides. One of them is MAPS (Microsoft Active Protection Service) or also known as Windows Defender Antivirus cloud-delivered protection service. Quite often I notice that clients have no connection to MAPS, this can be validated by running the following command from an elevated command prompt:&lt;/p&gt;</description></item><item><title>Exploring Microsoft Cloud App Security with PowerShell – Part1</title><link>https://www.verboon.info/2019/05/exploring-microsoft-cloud-app-security-with-powershell-part1/</link><pubDate>Sun, 05 May 2019 13:45:37 +0000</pubDate><guid>https://www.verboon.info/2019/05/exploring-microsoft-cloud-app-security-with-powershell-part1/</guid><description>&lt;p&gt;Last Friday I was given the opportunity to present at the Configuration Manager Community Event (CMCE1905) in Bern, Switzerland. Although Microsoft Cloud App Security is not really related to ConfigMgr, many of the attendees are dealing with managing classic and modern workplaces and security is almost on everyone&amp;rsquo;s list of interest. During my session &amp;ldquo;Unleash the power of Microsoft Cloud App Security&amp;rdquo; I also demonstrated how one can explore information within Microsoft Cloud App Security through PowerShell. So, for all those interested how to do that, here we go.&lt;/p&gt;</description></item><item><title>Retrieving Windows Defender Exploit Guard Windows Event logs with PowerShell</title><link>https://www.verboon.info/2019/05/retrieving-windows-defender-exploit-guard-windows-event-logs-with-powershell/</link><pubDate>Thu, 02 May 2019 15:14:57 +0000</pubDate><guid>https://www.verboon.info/2019/05/retrieving-windows-defender-exploit-guard-windows-event-logs-with-powershell/</guid><description>&lt;p&gt;Most of the features included in Windows Defender Exploit Guard can be enabled in audit or block mode. The impact can then be analyzed either by looking at the corresponding Windows Event log entries or through advanced hunting queries in Windows Defender ATP.&lt;/p&gt;
&lt;p&gt;Today, I&amp;rsquo;ll share a script I recently wrote to quickly pull Windows Defender Exploit Guard related events from the Windows Event log. Anytime soon I will share some Kusto queries for the advanced hunting method through MDATP.&lt;/p&gt;</description></item><item><title>How to manage LAPS DebugLogging with PowerShell</title><link>https://www.verboon.info/2019/01/how-to-manage-laps-debuglogging-with-powershell/</link><pubDate>Mon, 14 Jan 2019 19:10:39 +0000</pubDate><guid>https://www.verboon.info/2019/01/how-to-manage-laps-debuglogging-with-powershell/</guid><description>&lt;p&gt;If you need to troubleshoot the Local Administrator Password Solution **LAPS **you can configure how much information is written into the Windows Event log.&lt;/p&gt;
&lt;p&gt;Logging options are set through the following REG_DWORD values described below under:&lt;/p&gt;
&lt;p&gt;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions{D76B9641-3288-4f75-942D-087DE603E3EA}\ExtensionDebugLevel&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Meaning&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Silent mode; log errors only
When no error occurs, no information is logged about CSE activity
This is a default value&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Log Errors and
warnings&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Verbose mode, log everything&lt;/p&gt;</description></item><item><title>Azure Information Protection Scanner &amp; Analytics – Resource Collection</title><link>https://www.verboon.info/2018/10/azure-information-protection-scanner-analytics-resource-collection/</link><pubDate>Wed, 31 Oct 2018 18:42:25 +0000</pubDate><guid>https://www.verboon.info/2018/10/azure-information-protection-scanner-analytics-resource-collection/</guid><description>&lt;p&gt;Hey there,&lt;/p&gt;
&lt;p&gt;This might sound like a bad excuse for not writing up a whole blog post, but in fact I had planned to write a few words about the Azure Information Protection Scanner and the recently announced Azure Information Protection Analytics that provides a central reporting capability for the AIP Scanner. Those that have used the AIP Scanner before, will agree that, gathering scanner results data was quite tedious as you had to grab plain text files from the local system and then process them manually or though some home-brew scripting to visualize the results.&lt;/p&gt;</description></item><item><title>It’s never too late to start learning PowerShell</title><link>https://www.verboon.info/2018/03/its-never-too-late-to-start-learning-powershell/</link><pubDate>Tue, 27 Mar 2018 10:34:53 +0000</pubDate><guid>https://www.verboon.info/2018/03/its-never-too-late-to-start-learning-powershell/</guid><description>&lt;p&gt;It&amp;rsquo;s 2018 now and you might think who doesn&amp;rsquo;t know PowerShell yet. Although I&amp;rsquo;ve seen the number of people using PowerShell increasing over the past years, there&amp;rsquo;s still plenty of people out there that have the learning curve for PowerShell ahead of them. A few years ago, when the use of PowerShell got traction amongst many IT professionals the web was full of learning resources by means of blog posts, podcasts and online trainings. It seems that nowadays we expect everyone to be past the beginner&amp;rsquo;s level and so the type of content that is shared within the community is slightly changing to more advanced topics as well and that&amp;rsquo;s good for those that are riding the PowerShell wave already. However, let&amp;rsquo;s take into consideration that even in 2018, twelve years after &lt;a href="https://blogs.msdn.microsoft.com/powershell/2006/04/25/windows-powershell-monad-has-arrived/"&gt;PowerShell (Monad) arrived&lt;/a&gt; there are people that just start their journey into PowerShell. Think of the younger generation of IT professionals who spend the last ten years in school or the senior IT pro who&amp;rsquo;s changing their career into a field where PowerShell knowledge becomes inevitable.&lt;/p&gt;</description></item><item><title>PowerShell Core logging configuration</title><link>https://www.verboon.info/2018/01/powershell-core-logging-configuration/</link><pubDate>Tue, 16 Jan 2018 22:41:16 +0000</pubDate><guid>https://www.verboon.info/2018/01/powershell-core-logging-configuration/</guid><description>&lt;p&gt;After having browsed through the PowerShell code a bit, found some references as to how to configure PowerShell Core logging options through GPO or via a configuration file.&lt;/p&gt;
&lt;p&gt;There are no GPO Templates available for PowerShell Core, but the same settings as are written for Windows PowerShell also apply for Core, they just live within another registry key.&lt;/p&gt;
&lt;p&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft*&lt;em&gt;PowerShellCore&lt;/em&gt;*&lt;/p&gt;
&lt;p&gt;So when you apply the folllowing registry settings , you can enable ScriptBlock logging and Transcripting for PowerShell Core.&lt;/p&gt;</description></item><item><title>Enabling PowerShell logging for PowerShell Core 6 (Workaround)</title><link>https://www.verboon.info/2018/01/enabling-powershell-logging-for-powershell-core-6-workaround/</link><pubDate>Sat, 13 Jan 2018 02:02:41 +0000</pubDate><guid>https://www.verboon.info/2018/01/enabling-powershell-logging-for-powershell-core-6-workaround/</guid><description>&lt;p&gt;By default, PowerShell Core does not log events to the Windows Event logs. From a security perspective this isn’t ideal, but that’s something I’ll take a closer look at later. To enable PowerShell logging you have to run &lt;code&gt;RegisterManifest.ps1 which is located in the &amp;quot;C:\Program Files\PowerShell\6.0.0&amp;quot; folder. But unfortunately running that command would not work for me. Now this is the beauty of PowerShell being open sourced, the code as well as the comments from developers is publicly available. So after a short search within the GitHub repo of PowerShell Core I found references about the issue. &lt;/code&gt;&lt;/p&gt;</description></item><item><title>Retrieving Windows Defender ATP query API data with PowerShell</title><link>https://www.verboon.info/2018/01/retrieving-windows-defender-atp-query-api-data-with-powershell/</link><pubDate>Tue, 09 Jan 2018 20:45:15 +0000</pubDate><guid>https://www.verboon.info/2018/01/retrieving-windows-defender-atp-query-api-data-with-powershell/</guid><description>&lt;p&gt;I am currently working on some automation around Windows Defender, so started to look at the Windows Defender Advanced Threat Protection query API.&lt;/p&gt;
&lt;p&gt;Note that this API is still in preview. I wrote two functions for this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Connect-WindowsATP&lt;/strong&gt; is used to get an access token. Note that you will need to first register the API in Azure Directory so that you get an Application ID that you have to include at the top of the script.&lt;/p&gt;</description></item><item><title>PowerShell script Update-PoshModule</title><link>https://www.verboon.info/2017/12/powershell-script-update-poshmodule/</link><pubDate>Sun, 17 Dec 2017 20:14:52 +0000</pubDate><guid>https://www.verboon.info/2017/12/powershell-script-update-poshmodule/</guid><description>&lt;p&gt;With nowadays rapid development and release cycles it’s a good practice to regularly check whether you have the latest available module versions installed. Using native PowerShell cmdlets you would first list the module installed locally and then search for the latest module online.&lt;/p&gt;
&lt;p&gt;
 &lt;img src="images/image_thumb.png" alt="image"&gt;

&lt;/p&gt;
&lt;p&gt;When you have several modules installed, this becomes a laborious task. So I wrote a cmdlet that does all this work for me and you if you like.&lt;/p&gt;</description></item><item><title>PowerShell Script Get-BatteryChargeStatus</title><link>https://www.verboon.info/2017/07/powershell-script-get-batterychargestatus/</link><pubDate>Sun, 30 Jul 2017 15:05:03 +0000</pubDate><guid>https://www.verboon.info/2017/07/powershell-script-get-batterychargestatus/</guid><description>&lt;p&gt;&lt;strong&gt;Update 01.08.2017&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;*I have updated the script to ensure that the Windows.Devices.Power.Battery class is properly loaded, as this wasn&amp;rsquo;t the case in a PowerShell 64 bit session. *&lt;/p&gt;
&lt;p&gt;A little script i wrote to retrieve the Battery Charge status. The script makes use of the &lt;a href="https://docs.microsoft.com/en-us/uwp/api/windows.devices.power.batteryreport"&gt;BatteryReport class&lt;/a&gt; that agregates the information should the device have more than one battery like the Surface Book.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;function&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Get-BatteryChargeStatus&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;Synopsis&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-BatteryChargeStatus
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;DESCRIPTION&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-BatteryChargeStatus shows the Battery Charging status,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; the remaining Battery capacity in percent and if the system
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; is running on Battery.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; The Battery Status can have one of the following values:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Charging, Discharging, Idle or NotPresent
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.PARAMETER Detail
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Displays additional Battery Information
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-BatteryChargeStatus
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;Status Utilization PowerOnline
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;------ ----------- -----------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;Charging 99 True
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-BatteryChargeStatus -Detail
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;ChargeRateInMilliwatts : 3052
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;DesignCapacityInMilliwattHours : 68902
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;FullChargeCapacityInMilliwattHours : 70222
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;RemainingCapacityInMilliwattHours : 69689
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;Status : Charging
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;Utilization : 99
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;PowerOnline : True
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;NOTES&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; 30/07/2017, Initial version, Alex Verboon
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; 01/08/2017, added class init to check that Windows.Device class is available. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; For more information see: 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; https://docs.microsoft.com/en-us/uwp/api/windows.devices.power.batteryreport
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;CmdletBinding&lt;/span&gt;()]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Param&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [switch]&lt;span style="color:#8be9fd;font-style:italic"&gt;$Detail&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Begin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Try&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# First ensure Windows.Devices class is available &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$BattAssembly&lt;/span&gt; = [Windows.Devices.Power.Battery,Windows.Devices.Power.Battery,ContentType=WindowsRuntime] 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;#[Windows.Devices.Power.Battery].Assembly&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Catch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Error&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Unable to load the Windows.Devices.Power.Battery class&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Try&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Report&lt;/span&gt; = [Windows.Devices.Power.Battery]::AggregateBattery.GetReport() 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Catch&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Error&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Unable to retrieve Battery Report information&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$Report&lt;/span&gt;.Status &lt;span style="color:#ff79c6"&gt;-ne&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;NotPresent&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$pbmax&lt;/span&gt; = [convert]::ToDouble(&lt;span style="color:#8be9fd;font-style:italic"&gt;$Report&lt;/span&gt;.FullChargeCapacityInMilliwattHours)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$pbvalue&lt;/span&gt; = [convert]::ToDouble(&lt;span style="color:#8be9fd;font-style:italic"&gt;$Report&lt;/span&gt;.RemainingCapacityInMilliwattHours)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Utilization&lt;/span&gt; = [int][math]::Round( ((&lt;span style="color:#8be9fd;font-style:italic"&gt;$pbvalue&lt;/span&gt; / &lt;span style="color:#8be9fd;font-style:italic"&gt;$pbmax&lt;/span&gt;) *&lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$PowerOnlineStatus&lt;/span&gt; = (&lt;span style="color:#8be9fd;font-style:italic"&gt;Get-CimInstance&lt;/span&gt; -ClassName batterystatus -Namespace root/WMI).PowerOnline
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# Check if at least one battery reports running on power&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$PowerOnlineStatus&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-contains&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;True&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$PowerOnline&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$PowerOnline&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [int]&lt;span style="color:#8be9fd;font-style:italic"&gt;$Utilization&lt;/span&gt; = &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$PowerOnline&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Process&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$Detail&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Properties&lt;/span&gt; = [ordered] &lt;span style="color:#8be9fd;font-style:italic"&gt;@&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ChargeRateInMilliwatts = &lt;span style="color:#8be9fd;font-style:italic"&gt;$Report&lt;/span&gt;.ChargeRateInMilliwatts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; DesignCapacityInMilliwattHours = &lt;span style="color:#8be9fd;font-style:italic"&gt;$report&lt;/span&gt;.DesignCapacityInMilliwattHours
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; FullChargeCapacityInMilliwattHours = &lt;span style="color:#8be9fd;font-style:italic"&gt;$Report&lt;/span&gt;.FullChargeCapacityInMilliwattHours
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; RemainingCapacityInMilliwattHours = &lt;span style="color:#8be9fd;font-style:italic"&gt;$Report&lt;/span&gt;.RemainingCapacityInMilliwattHours
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Status = &lt;span style="color:#8be9fd;font-style:italic"&gt;$Report&lt;/span&gt;.Status
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Utilization = &lt;span style="color:#8be9fd;font-style:italic"&gt;$Utilization&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; PowerOnline = &lt;span style="color:#8be9fd;font-style:italic"&gt;$PowerOnline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$BatteryChargeStatus&lt;/span&gt; = (&lt;span style="color:#8be9fd;font-style:italic"&gt;New-Object&lt;/span&gt; -TypeName PSObject -Property &lt;span style="color:#8be9fd;font-style:italic"&gt;$Properties&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Elseif&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$Detail&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Properties&lt;/span&gt; = [ordered] &lt;span style="color:#8be9fd;font-style:italic"&gt;@&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Status = &lt;span style="color:#8be9fd;font-style:italic"&gt;$Report&lt;/span&gt;.Status
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Utilization = &lt;span style="color:#8be9fd;font-style:italic"&gt;$Utilization&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; PowerOnline = &lt;span style="color:#8be9fd;font-style:italic"&gt;$PowerOnline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$BatteryChargeStatus&lt;/span&gt; = (&lt;span style="color:#8be9fd;font-style:italic"&gt;New-Object&lt;/span&gt; -TypeName PSObject -Property &lt;span style="color:#8be9fd;font-style:italic"&gt;$Properties&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;End&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$BatteryChargeStatus&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Retrieving Office 365 roadmap information with PowerShell</title><link>https://www.verboon.info/2017/06/retrieving-office-365-roadmap-information-with-powershell/</link><pubDate>Mon, 12 Jun 2017 21:51:12 +0000</pubDate><guid>https://www.verboon.info/2017/06/retrieving-office-365-roadmap-information-with-powershell/</guid><description>&lt;p&gt;Here’s a small cmdlet I wrote today to pull the Office 365 roadmap information with PowerShell.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Office 365 Centralized Deployment service</title><link>https://www.verboon.info/2017/06/office-365-centralized-deployment-service/</link><pubDate>Sat, 10 Jun 2017 14:25:04 +0000</pubDate><guid>https://www.verboon.info/2017/06/office-365-centralized-deployment-service/</guid><description>&lt;p&gt;Just recently Microsoft announced the general availability of the Office 365 centralized deployment service. I have tested it and it really makes deploying Office Add-ins super easy. The add-in configuration and deployment can be managed through the Office 365 portal or using PowerShell.&lt;/p&gt;
&lt;p&gt;For a quick overview watch the video “&lt;a href="https://channel9.msdn.com/Events/Build/2016/P574"&gt;How to Deploy Office Add-ins within Your Organization&lt;/a&gt;”.&lt;/p&gt;
&lt;p&gt;Now since I like using PowerShell, here’s a quick example how to enable and deploy an Office Add-in.&lt;/p&gt;</description></item><item><title>PowerShell Script - Get-MsolRoleMemberDetails</title><link>https://www.verboon.info/2016/11/powershell-script-get-msolrolememberdetails/</link><pubDate>Sun, 20 Nov 2016 23:33:08 +0000</pubDate><guid>https://www.verboon.info/2016/11/powershell-script-get-msolrolememberdetails/</guid><description>&lt;p&gt;To get a list of all users that belong to a given role, the Microsoft Azure Active Directory module has a cmdlet Get-MsolRoleMember, however to run the cmdlet you must use the RoleObjectId parameter and provide a value.  The possible values for RoleObjectId can be retrieved by running the Get-MsolRole cmdlet.&lt;/p&gt;
&lt;p&gt;To simplify this, I wrote the Get-MsolRoleMemberDetails cmdlet.  As you can see from the below screenshot, the list of available roles is dynamically populated.&lt;/p&gt;</description></item><item><title>Office 365 PowerShell script to retrieve AccountSku license information</title><link>https://www.verboon.info/2016/04/office-365-powershell-script-to-retrieve-accountsku-license-information/</link><pubDate>Mon, 25 Apr 2016 21:00:39 +0000</pubDate><guid>https://www.verboon.info/2016/04/office-365-powershell-script-to-retrieve-accountsku-license-information/</guid><description>&lt;p&gt;A small PowerShell script that lists all users that have the specified Office 365 AccountSkuid enabled on their account.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>The GroupPolicy Xtended PowerShell Module</title><link>https://www.verboon.info/2016/02/the-grouppolicy-xtended-powershell-module/</link><pubDate>Thu, 11 Feb 2016 09:42:48 +0000</pubDate><guid>https://www.verboon.info/2016/02/the-grouppolicy-xtended-powershell-module/</guid><description>&lt;p&gt;Good day everyone. Today I would like to share with you the Group Policy Xtended PowerShell module that i’ve written recently. Histrocially I used to have various cmdlets stored in individual files and ran them when needed, I also shared them among my peers and with the public via my blog and the &lt;a href="https://gallery.technet.microsoft.com/scriptcenter"&gt;Microsoft Script repository&lt;/a&gt;. The challenge with this approach is that it’s hard to ensure eveyone has the latest versions of the cmdlets  available and that when someone needs a cmdlet that he’s actually able to find it or actually knows that there’s one available.&lt;/p&gt;</description></item><item><title>PowerShell Script to remove Office 365 Service Plans from a user</title><link>https://www.verboon.info/2015/12/powershell-script-to-remove-office-365-service-plans-from-a-user-6683/</link><pubDate>Sun, 13 Dec 2015 21:09:16 +0000</pubDate><guid>https://www.verboon.info/2015/12/powershell-script-to-remove-office-365-service-plans-from-a-user-6683/</guid><description>&lt;p&gt;When assigning an Office 365 license to a user, by default several service plans are enabled. When assigning an Office 365 &lt;strong&gt;E3&lt;/strong&gt; license to a user, the following service plans are enabled by default:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Azure Rights Management&lt;/li&gt;
&lt;li&gt;Office 365 Pro Plus&lt;/li&gt;
&lt;li&gt;Skype for Business Online (Plan 2)&lt;/li&gt;
&lt;li&gt;Office Online&lt;/li&gt;
&lt;li&gt;SharePoint Online (Plan 2)&lt;/li&gt;
&lt;li&gt;Exchange Online (Plan 2)&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From an end user perspective the user will see the following options when logging on to Office 365.&lt;/p&gt;</description></item><item><title>PowerShell Script to remove Office 365 Service Plans from a user</title><link>https://www.verboon.info/2015/12/powershell-script-to-remove-office-365-service-plans-from-a-user/</link><pubDate>Sun, 13 Dec 2015 20:36:06 +0000</pubDate><guid>https://www.verboon.info/2015/12/powershell-script-to-remove-office-365-service-plans-from-a-user/</guid><description>&lt;p&gt;When assigning an Office 365 license to a user, by default several service plans are enabled. When assigning an Office 365 &lt;strong&gt;E3&lt;/strong&gt; license to a user, the following service plans are enabled by default:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Azure Rights Management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Office 365 Pro Plus&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Skype for Business Online (Plan 2)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Office Online&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SharePoint Online (Plan 2)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exchange Online (Plan 2)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From an end user perspective the user will see the following options when logging on to Office 365.&lt;/p&gt;</description></item><item><title>PowerShell Script: Retrieve all Office 365 URLs and IP Ranges</title><link>https://www.verboon.info/2015/02/powershell-script-retrieve-all-office-365-urls-and-ip-ranges/</link><pubDate>Thu, 05 Feb 2015 23:21:03 +0000</pubDate><guid>https://www.verboon.info/2015/02/powershell-script-retrieve-all-office-365-urls-and-ip-ranges/</guid><description>&lt;p&gt;This week I took the &lt;a href="http://www.microsoftvirtualacademy.com/training-courses/office-365-performance-management"&gt;Office 365 Performance Management&lt;/a&gt; course on the Microsoft Virtual Academy. If you have any plans using Office 365 I strongly recommend taking this course. One of the topics that was often highlighted is the importance of having all Office 365 URLs and IP Ranges configured on the outbound allow list. The Office 365 URLs and IP Ranges are documented &lt;a href="https://technet.microsoft.com/library/hh373144.aspx"&gt;here&lt;/a&gt; and the changes to the list are described &lt;a href="https://technet.microsoft.com/en-us/library/jj129402.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>PowerShell Script to Retrieve Internet Explorer Telemetry Data</title><link>https://www.verboon.info/2014/11/powershell-script-to-retrieve-internet-explorer-telemetry-data/</link><pubDate>Sat, 29 Nov 2014 15:27:40 +0000</pubDate><guid>https://www.verboon.info/2014/11/powershell-script-to-retrieve-internet-explorer-telemetry-data/</guid><description>&lt;p&gt;During the past days I have been busy deploying the &lt;a href="http://blogs.msdn.com/b/ie/archive/2014/10/24/announcing-the-enterprise-site-discovery-toolkit-for-internet-explorer-11.aspx"&gt;Internet Explorer Site Discovery Toolkit&lt;/a&gt; to our Internet Explorer 11 test clients. I will write about the deployment of the Toolkit in a separate post. Today I would like to share with you a PowerShell script I put together that allows you to retrieve the collected Internet Explorer Telemetry data from local or remote computers.&lt;/p&gt;
&lt;p&gt;Internet Explorer Telemetry data is stored into the following WMI Classes&lt;/p&gt;</description></item><item><title>Analysing the file content of Windows Installer files using PowerShell</title><link>https://www.verboon.info/2014/10/analysing-the-file-content-of-windows-installer-files-using-powershell/</link><pubDate>Sun, 05 Oct 2014 18:59:14 +0000</pubDate><guid>https://www.verboon.info/2014/10/analysing-the-file-content-of-windows-installer-files-using-powershell/</guid><description>&lt;p&gt;A few weeks ago we have started with the preparation for introducing Microsoft Office 2013 and Internet Explorer 11. As with every introduction of new software it’s all about compatibility. During the course of testing applications we were informed that some of them caused an issue due to hard coded paths. Each application is going to be installed anyway so that application owners can conduct testing, but at the same time I thought, it would be nice if we could identify potentially affected applications upfront without having to go through an actual install.&lt;/p&gt;</description></item><item><title>Use PowerShell to Troubleshoot Group Policy</title><link>https://www.verboon.info/2014/09/use-powershell-to-troubleshoot-group-policy/</link><pubDate>Thu, 04 Sep 2014 21:44:17 +0000</pubDate><guid>https://www.verboon.info/2014/09/use-powershell-to-troubleshoot-group-policy/</guid><description>&lt;p&gt;While I was on vacation last summer Ed Wilson aka Microsoft Scripting Guy asked me if I would like to write a guest post for the Hey Scripting Guy Blog. Of course !! was my immediate response.&lt;/p&gt;
&lt;p&gt;And here it is:
&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2014/08/24/weekend-scripter-use-powershell-to-troubleshoot-group-policy.aspx"&gt;Weekend Scripter: Use PowerShell to Troubleshoot Group Policy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The script referenced can be downloaded from here
&lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Get-GPProcessingTime-a124aaf5"&gt;http://gallery.technet.microsoft.com/scriptcenter/Get-GPProcessingTime-a124aaf5&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PowerShell Script to retrieve content from Internet Explorer ActiveX blocking log</title><link>https://www.verboon.info/2014/08/powershell-script-to-retrieve-content-from-internet-explorer-activex-blocking-log/</link><pubDate>Wed, 13 Aug 2014 23:12:50 +0000</pubDate><guid>https://www.verboon.info/2014/08/powershell-script-to-retrieve-content-from-internet-explorer-activex-blocking-log/</guid><description>&lt;p&gt;In preparation of the Internet &lt;a href="http://technet.microsoft.com/en-us/ie/dn798785.aspx"&gt;Explorer out of date ActiveX control blocking&lt;/a&gt; activities I wrote the below script that retrieves the content of the log stored under LOCALAPPDATA%\Microsoft\Internet Explorer\AuditMode\VersionAuditLog.csv&lt;/p&gt;
&lt;p&gt;You can download the script from &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Get-ActiveXControlLog-58d33184"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;function&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Get-ActiveXControlLog&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;Synopsis&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-ActiveXControlLog
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;DESCRIPTION&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-ActiveXControlLog retrieves the content of the Internet Explorer ActiveX control log stored locally. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-ActiveXControlLog
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Shows all entries in the log file
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-ActiveXControlLog -Show Allowed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Shows only entries with status &amp;#34;Allowed&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.LINKS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; http://technet.microsoft.com/en-us/ie/dn798785.aspx
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;NOTES&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; version 1.0 by Alex Verboon
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;CmdletBinding&lt;/span&gt;()]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Param&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;Parameter&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;Mandatory&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;Position&lt;/span&gt;=&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;ValidateSet&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;All&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;Allowed&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;Blocked&amp;#34;&lt;/span&gt;)] 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Show&lt;/span&gt;=&lt;span style="color:#f1fa8c"&gt;&amp;#34;All&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Begin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# the default location of the log file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$VersionAuditLog&lt;/span&gt; = [Environment]::GetFolderPath(&lt;span style="color:#f1fa8c"&gt;&amp;#39;LocalApplicationData&amp;#39;&lt;/span&gt;) + &lt;span style="color:#f1fa8c"&gt;&amp;#34;\Microsoft\Internet Explorer\AuditMode\VersionAuditLog.csv&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# check if the log file is present&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;Test-Path&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$VersionAuditLog&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-output&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;ActiveX out of date blocking control log found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;ActiveX out of date blocking control log not found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# let&amp;#39;s check if the logging policy is enabled at all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$lm&lt;/span&gt; = (&lt;span style="color:#8be9fd;font-style:italic"&gt;Get-ItemProperty&lt;/span&gt; -Path &lt;span style="color:#f1fa8c"&gt;&amp;#34;HKLM:Software\Microsoft\Windows\CurrentVersion\Policies\Ext&amp;#34;&lt;/span&gt; -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;AuditModeEnabled&amp;#34;&lt;/span&gt; -ErrorAction SilentlyContinue).AuditModeEnabled 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$cu&lt;/span&gt; = (&lt;span style="color:#8be9fd;font-style:italic"&gt;Get-ItemProperty&lt;/span&gt; -Path &lt;span style="color:#f1fa8c"&gt;&amp;#34;HKCU:Software\Microsoft\Windows\CurrentVersion\Policies\Ext&amp;#34;&lt;/span&gt; -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;AuditModeEnabled&amp;#34;&lt;/span&gt; -ErrorAction SilentlyContinue).AuditModeEnabled
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$lm&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-le&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;write-output&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;ActiveX control logging policy is not enabled at the computer level&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Output&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Active control logging policy is enabled at the computer level, but there&amp;#39;s no log: &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$VersionAuditLog&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$cu&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-le&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;write-output&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;ActiveX control logging policy is not enabled at the User level&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Output&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Active control logging policy is enabled at the user level, but there&amp;#39;s no log: &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$VersionAuditLog&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Throw&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Process&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# Get the content of the log file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$axlog&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;Import-csv&lt;/span&gt; -Delimiter &lt;span style="color:#f1fa8c"&gt;&amp;#34;,&amp;#34;&lt;/span&gt; -Path &lt;span style="color:#8be9fd;font-style:italic"&gt;$VersionAuditLog&lt;/span&gt; -Header URL, Path, ProductVersion, FileVersion, Action, Reason, EPMCompat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$axlogdata&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;@&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;ForEach&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$entry&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$axlog&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;New-Object&lt;/span&gt; -TypeName PSObject
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name URL -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$entry&lt;/span&gt;.URL
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name Path -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$entry&lt;/span&gt;.Path
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name ProductVersion -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$entry&lt;/span&gt;.ProductVersion
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name FileVersion -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$entry&lt;/span&gt;.FileVersion
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name Result -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$entry&lt;/span&gt;.Action
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name Reason -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$entry&lt;/span&gt;.Reason 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name EPMCompatible -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$entry&lt;/span&gt;.EPMCompat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$axlogdata&lt;/span&gt; += &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;End&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$Show&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;All&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$axlogdata&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$axlogdata&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Where-Object&lt;/span&gt; {&lt;span style="color:#8be9fd;font-style:italic"&gt;$_&lt;/span&gt;.Result &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$Show&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>PowerShell Script - Get Group Policy events by CorrelationID</title><link>https://www.verboon.info/2014/07/powershell-script-get-group-policy-events-by-correlationid/</link><pubDate>Thu, 17 Jul 2014 15:00:44 +0000</pubDate><guid>https://www.verboon.info/2014/07/powershell-script-get-group-policy-events-by-correlationid/</guid><description>&lt;p&gt;&lt;strong&gt;Update: 22. August 2014&lt;/strong&gt;: I have posted an updated version of the script &lt;a href="http://gallery.technet.microsoft.com/Get-GPEventByCorrelationID-97944972"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During his &lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2014/WIN-B328#fbid="&gt;Group Policy: Notes from the Field - Tips, Tricks, and Troubleshooting&lt;/a&gt; session at TechEd Group Policy MVP Jeremy Moskowitz demonstrates how to filter the event log using the correlation ID. Now because I love using PowerShell I thought I create a function for that using Jeremy’s XMLquery.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;function&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Get-GPEventByCorrelationID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;Synopsis&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get Group Policy Eventlog entries by Correlation ID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;DESCRIPTION&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; This function retrieves Group Policy event log entries filtered by Correlation ID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-GPEventByCorrelationID -CorrelationID A2A621EC-44B4-4C56-9BA3-169B88032EFD
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; TimeCreated Id LevelDisplayName Message
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; ----------- -- ---------------- -------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; 7/17/2014 3:00:27 PM 5117 Information Group policy session completed successfully.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;CmdletBinding&lt;/span&gt;()]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Param&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# CorrelationID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;Parameter&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;Mandatory&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;ValueFromPipelineByPropertyName&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;Position&lt;/span&gt;=&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [string]&lt;span style="color:#8be9fd;font-style:italic"&gt;$CorrelationID&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Begin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Query&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#39;*[System/Correlation/@ActivityID=&amp;#34;{CorrelationID}&amp;#34;]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$FilterXML&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$Query&lt;/span&gt;.Replace(&lt;span style="color:#f1fa8c"&gt;&amp;#34;CorrelationID&amp;#34;&lt;/span&gt;,&lt;span style="color:#8be9fd;font-style:italic"&gt;$CorrelationID&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Process&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Get-WinEvent&lt;/span&gt; -FilterXml &lt;span style="color:#8be9fd;font-style:italic"&gt;$FilterXML&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;End&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;</description></item><item><title>PowerShell - Retrieve System Startup Time Information</title><link>https://www.verboon.info/2014/01/powershell-retrieve-system-startup-time-information/</link><pubDate>Mon, 06 Jan 2014 20:02:18 +0000</pubDate><guid>https://www.verboon.info/2014/01/powershell-retrieve-system-startup-time-information/</guid><description>&lt;p&gt;The below script gathers the following system startup time information from a local or remote client.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Computername&lt;/li&gt;
&lt;li&gt;Last Wakeup time (from Sleep, Hibernate or Fast boot on Windows 8x clients)
The last wakeup date/time is converted from UTC into the client local time.&lt;/li&gt;
&lt;li&gt;Last Boot time&lt;/li&gt;
&lt;li&gt;The Time Zone of the client&lt;/li&gt;
&lt;li&gt;The system wakeup / sleep message from the Windows event log&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Important: the script uses PowerShell remoting, it’s therefore required that the targeted clients have WinRM enabled.&lt;/p&gt;</description></item><item><title>PowerShell - Creating Dummy files</title><link>https://www.verboon.info/2014/01/powershell-creating-dummy-files/</link><pubDate>Thu, 02 Jan 2014 17:16:27 +0000</pubDate><guid>https://www.verboon.info/2014/01/powershell-creating-dummy-files/</guid><description>&lt;p&gt;Here’s a function I wrote to create a large dummy file either filled with zero’s or random characters. The -Target parameter must be eitehr a file including the path or just the path. If the path does not exist, it will be created. If only a path is provided a file with a random file name is generated.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;Function&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;New-BigFile&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;Synopsis&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Creates a large dummy file with or without random conntent
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;DESCRIPTION&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Creates a large dummy file with or without random conntent 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Credits for the randome content creation logic goes to Robert Robelo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.PARAMETER Target
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; The full path to a folder or file. If the target is a folder a random file name is generated
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.PARAMETER MegaByte
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; The size of the random file to be genrated. Default is one MB
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.PARAMETER Filecontent
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Possible values are or When is specified the file is filled with
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; random values. The value fills the file with nulls. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.PARAMETER ShowProgress
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; This parameter is optional and shows the progress of the file creation. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; New-Bigfile -Target C:\Temp\LF -Megabyte 10 -Filecontent random
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; New-Bigfile -Target C:\Temp\LF\bigfile.txt -Megabyte 10 -Filecontent random
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; New-Bigfile -Target C:\Temp\LF -Megabyte 10 -Filecontent empty
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#8be9fd;font-style:italic"&gt;CmdletBinding&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;SupportsShouldProcess&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$True&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;param&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;Parameter&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;Mandatory&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;, &lt;span style="color:#50fa7b"&gt;Position&lt;/span&gt; = &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [String]&lt;span style="color:#8be9fd;font-style:italic"&gt;$Target&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;Parameter&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;Mandatory&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt;, &lt;span style="color:#50fa7b"&gt;Position&lt;/span&gt; = &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;ValidateRange&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;5120&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [UInt16]&lt;span style="color:#8be9fd;font-style:italic"&gt;$MegaByte&lt;/span&gt; = &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;Parameter&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;Mandatory&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,&lt;span style="color:#50fa7b"&gt;position&lt;/span&gt; = &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;ValidateSet&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;random&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;empty&amp;#34;&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [string]&lt;span style="color:#8be9fd;font-style:italic"&gt;$FileContent&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [Switch]&lt;span style="color:#8be9fd;font-style:italic"&gt;$ShowProgress&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; ([string]::IsNullOrEmpty([System.IO.Path]::GetDirectoryName(&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$target&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)) &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Output&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Specify a directory or file including path!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Throw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;If&lt;/span&gt;([string]::IsNullOrEmpty([System.IO.Path]::GetExtension(&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$target&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Provided input &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$target&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; has no file extension, target is a folder&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$fname&lt;/span&gt; = (&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt; + ([guid]::NewGuid()) + &lt;span style="color:#f1fa8c"&gt;&amp;#34;.LF&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Random generated filename: &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$fname&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Target&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;Join-path&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Target&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$fname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$folder&lt;/span&gt; = [System.IO.Path]::GetDirectoryName(&lt;span style="color:#8be9fd;font-style:italic"&gt;$target&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; ((&lt;span style="color:#8be9fd;font-style:italic"&gt;Test-path&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$folder&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$PSCmdlet&lt;/span&gt;.ShouldProcess(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Directory does not exist, creating directory &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$folder&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; &amp;#34;&lt;/span&gt;)) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; { &lt;span style="color:#8be9fd;font-style:italic"&gt;New-Item&lt;/span&gt; -Path &lt;span style="color:#8be9fd;font-style:italic"&gt;$folder&lt;/span&gt; -ItemType Directory | &lt;span style="color:#8be9fd;font-style:italic"&gt;Out-Null&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; ((&lt;span style="color:#8be9fd;font-style:italic"&gt;Test-path&lt;/span&gt; -Path &lt;span style="color:#8be9fd;font-style:italic"&gt;$target&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#8be9fd;font-style:italic"&gt;Write-verbose&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;File &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$Target&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; already exists, exiting to prevent overwrite&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Break&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;File &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$target&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; does not exist yet&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# Check if the directory actually exists, if not create it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$folder&lt;/span&gt; = [System.IO.Path]::GetDirectoryName(&lt;span style="color:#8be9fd;font-style:italic"&gt;$target&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; ((&lt;span style="color:#8be9fd;font-style:italic"&gt;Test-path&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$folder&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$PSCmdlet&lt;/span&gt;.ShouldProcess(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Creating folder &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$folder&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#8be9fd;font-style:italic"&gt;New-Item&lt;/span&gt; -Path &lt;span style="color:#8be9fd;font-style:italic"&gt;$folder&lt;/span&gt; -ItemType Directory | &lt;span style="color:#8be9fd;font-style:italic"&gt;Out-Null&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$path&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$Target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$total&lt;/span&gt; = &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;mb * &lt;span style="color:#8be9fd;font-style:italic"&gt;$MegaByte&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$strings&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$bytes&lt;/span&gt; = &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$FileContent&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;random&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$PSCmdlet&lt;/span&gt;.ShouldProcess(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Creating random file &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$path&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; with &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$Megabyte&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; MB&amp;#34;&lt;/span&gt;)) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# create the stream writer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$sw&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;New-Object&lt;/span&gt; IO.streamWriter &lt;span style="color:#8be9fd;font-style:italic"&gt;$path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# get a 64 element Char[]; I added the - and _ to have 64 chars&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[char[]]&lt;span style="color:#8be9fd;font-style:italic"&gt;$chars&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#39;azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789-_&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;..&lt;span style="color:#8be9fd;font-style:italic"&gt;$MegaByte&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;ForEach-Object&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# get 1MB of chars from 4 256KB strings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;.&lt;span style="color:#bd93f9"&gt;.4&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;ForEach-Object&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# randomize all chars and...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$rndChars&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$chars&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Get-Random&lt;/span&gt; -Count &lt;span style="color:#8be9fd;font-style:italic"&gt;$chars&lt;/span&gt;.Count
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# ...join them in a string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$str&lt;/span&gt; = -join &lt;span style="color:#8be9fd;font-style:italic"&gt;$rndChars&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# repeat random string 4096 times to get a 256KB string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$str_&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$str&lt;/span&gt; * &lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;kb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# write 256KB string to file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$sw&lt;/span&gt;.Write(&lt;span style="color:#8be9fd;font-style:italic"&gt;$str_&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# show progress&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$ShowProgress&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$strings&lt;/span&gt;++
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$bytes&lt;/span&gt; += &lt;span style="color:#8be9fd;font-style:italic"&gt;$str_&lt;/span&gt;.Length
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Progress&lt;/span&gt; -Activity &lt;span style="color:#f1fa8c"&gt;&amp;#34;Writing String #&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$strings&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt; -Status &lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$bytes&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; Bytes written&amp;#34;&lt;/span&gt; -PercentComplete (&lt;span style="color:#8be9fd;font-style:italic"&gt;$bytes&lt;/span&gt; / &lt;span style="color:#8be9fd;font-style:italic"&gt;$total&lt;/span&gt; * &lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# release resources by clearing string variables&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;Clear-Variable&lt;/span&gt; str, str_
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$sw&lt;/span&gt;.Close()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$sw&lt;/span&gt;.Dispose()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# release resources through garbage collection&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[GC]::Collect()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;If&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$PSCmdlet&lt;/span&gt;.ShouldProcess(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Creating empty file &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$path&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; with &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$Megabyte&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; MB&amp;#34;&lt;/span&gt;)) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# write 4K worth of data at a time&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$bufSize&lt;/span&gt; = &lt;span style="color:#bd93f9"&gt;4096&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$bytes&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;New-Object&lt;/span&gt; byte[] &lt;span style="color:#8be9fd;font-style:italic"&gt;$bufSize&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$file&lt;/span&gt; = [System.IO.File]::Create(&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$path&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# write the first block out to accommodate integer division truncation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$file&lt;/span&gt;.Write(&lt;span style="color:#8be9fd;font-style:italic"&gt;$bytes&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;$bufSize&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$i&lt;/span&gt; = &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;; &lt;span style="color:#8be9fd;font-style:italic"&gt;$i&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;-lt&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Megabyte&lt;/span&gt;*&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;MB; &lt;span style="color:#8be9fd;font-style:italic"&gt;$i&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$i&lt;/span&gt; + &lt;span style="color:#8be9fd;font-style:italic"&gt;$bufSize&lt;/span&gt;) { &lt;span style="color:#8be9fd;font-style:italic"&gt;$file&lt;/span&gt;.Write(&lt;span style="color:#8be9fd;font-style:italic"&gt;$bytes&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#8be9fd;font-style:italic"&gt;$bufSize&lt;/span&gt;) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$ShowProgress&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Progress&lt;/span&gt; -Activity &lt;span style="color:#f1fa8c"&gt;&amp;#34;Writing String #&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$strings&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt; -Status &lt;span style="color:#f1fa8c"&gt;&amp;#34;Bytes written&amp;#34;&lt;/span&gt; -PercentComplete (&lt;span style="color:#8be9fd;font-style:italic"&gt;$i&lt;/span&gt;/(&lt;span style="color:#8be9fd;font-style:italic"&gt;$megabyte&lt;/span&gt;*&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;MB)*&lt;span style="color:#bd93f9"&gt;100&lt;/span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$file&lt;/span&gt;.Close()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;} 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;} 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;} 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Run the following command to create a dummy file of &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt; MB with random content
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;New-bigfile&lt;/span&gt; c:\temp\lf &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt; random -Verbose 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Run the following command to create a dummy file dummy10mb.txt with random content
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;New-bigfile&lt;/span&gt; c:\temp\lf\dummy10mb.txt &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt; random -Verbose 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Run the following command to create a dummy file of &lt;span style="color:#bd93f9"&gt;20&lt;/span&gt; MB filled with zeros
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;New-bigfile&lt;/span&gt; c:\temp\lf &lt;span style="color:#bd93f9"&gt;20&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;empty-Verbose&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you prefer to see what is going on, add the -Showprogress option. And last but not least the function also supports the -whatif option.&lt;/p&gt;</description></item><item><title>PowerShell - Using the WordPress Rest API</title><link>https://www.verboon.info/2013/12/powershell-using-the-wordpress-rest-api/</link><pubDate>Sun, 29 Dec 2013 19:07:27 +0000</pubDate><guid>https://www.verboon.info/2013/12/powershell-using-the-wordpress-rest-api/</guid><description>&lt;p&gt;I just found out that meanwhile (since October last year) the Rest API for wordpress now also works on self-hosted wordpress sites. So i can now access the content of my blog through PowerShell.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$posts&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;Invoke-RestMethod&lt;/span&gt; -uri &lt;span style="color:#f1fa8c"&gt;&amp;#34;https://public-api.wordpress.com/rest/v1/sites/www.verboon.info/posts/?number=50&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$posts&lt;/span&gt;.posts | &lt;span style="color:#8be9fd;font-style:italic"&gt;Select-Object&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;@&lt;/span&gt;{&lt;span style="color:#f1fa8c"&gt;&amp;#34;Name&amp;#34;&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Title&amp;#34;&lt;/span&gt;;&lt;span style="color:#f1fa8c"&gt;&amp;#34;e&amp;#34;&lt;/span&gt;= {(&lt;span style="color:#8be9fd;font-style:italic"&gt;$_&lt;/span&gt;.Title)&lt;span style="color:#ff79c6"&gt;-replace&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;–&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;-&amp;#34;&lt;/span&gt;}}, &lt;span style="color:#8be9fd;font-style:italic"&gt;@&lt;/span&gt;{&lt;span style="color:#f1fa8c"&gt;&amp;#34;Name&amp;#34;&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Date&amp;#34;&lt;/span&gt;; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Expression&amp;#34;&lt;/span&gt; = {&lt;span style="color:#8be9fd;font-style:italic"&gt;get-date&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$_&lt;/span&gt;.Date) -Format &lt;span style="color:#f1fa8c"&gt;&amp;#34;yyyy-MMM-dd&amp;#34;&lt;/span&gt;}} | &lt;span style="color:#8be9fd;font-style:italic"&gt;ft &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
 &lt;img src="images/2013-12-29_20h05_20_thumb.png" alt="2013-12-29_20h05_20"&gt;

&lt;/p&gt;
&lt;p&gt;More details abou the WordPress Rest API can be found &lt;a href="http://developer.wordpress.com/docs/api/"&gt;here&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PowerShell - Creating Scheduled Tasks with PowerShell version 3</title><link>https://www.verboon.info/2013/12/powershell-creating-scheduled-tasks-with-powershell-version-3/</link><pubDate>Sun, 29 Dec 2013 17:45:30 +0000</pubDate><guid>https://www.verboon.info/2013/12/powershell-creating-scheduled-tasks-with-powershell-version-3/</guid><description>&lt;p&gt;I am currently working on a script where I need to create a scheduled task that runs a powershell script at a given time. With PowerShell 4.0 a scheduled task can be easily created with the new cmdlets &lt;a href="http://technet.microsoft.com/en-us/library/jj649817.aspx"&gt;New-ScheduledTaskAction&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/library/jj649821.aspx"&gt;New-ScheduledTaskTrigger&lt;/a&gt; and &lt;a href="http://technet.microsoft.com/en-us/library/jj649811.aspx"&gt;Register-ScheduledTask&lt;/a&gt;, but unfortunately i have to create a solution that works on clients running PowerSshell version 3.0.&lt;/p&gt;
&lt;p&gt;When searching the web for examples how others have solved this I found many examples where people invoke the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx"&gt;schtasks.exe&lt;/a&gt; command but in order to further improve my PowerShell skills I wanted to avoid calling external executables and do as much in PowerShell as possible. So after a bit of further searching I found an interesting &lt;a href="http://letitknow.wordpress.com/2011/05/20/create-scheduled-task-by-using-powershell/"&gt;post&lt;/a&gt; from @letitknowblog who uses the Task Scheduler’s com object for creating a scheduled task.&lt;/p&gt;</description></item><item><title>PowerShell - Get Stock Quote Information</title><link>https://www.verboon.info/2013/12/powershell-get-stock-quote-information/</link><pubDate>Sun, 15 Dec 2013 13:29:17 +0000</pubDate><guid>https://www.verboon.info/2013/12/powershell-get-stock-quote-information/</guid><description>&lt;p&gt;The below script makes use of a webservice hosted by webserviceX.net and provides stock quote information.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;Synopsis&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Retrieve stock information
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;DESCRIPTION&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Retrieve stock information 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.PARAMETER Symbol
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Stock symbol of one or more companies
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-StockInfo -Symbol MSFT,INTC
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;LINK&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;NOTES&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Version 1.0, by Alex Verboon
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#8be9fd;font-style:italic"&gt;CmdletBinding&lt;/span&gt;()]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Param&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#8be9fd;font-style:italic"&gt;Parameter&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;Mandatory&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;ValueFromPipelineByPropertyName&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;HelpMessage&lt;/span&gt;= &lt;span style="color:#f1fa8c"&gt;&amp;#39;Stock Symbol for the company&amp;#39;&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [String[]]&lt;span style="color:#8be9fd;font-style:italic"&gt;$Symbol&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;begin&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;process&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; ([string]::IsNullOrEmpty(&lt;span style="color:#8be9fd;font-style:italic"&gt;$Symbol&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Output&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;You must provide a Symbol&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Exit}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;ForEach&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$stock&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Symbol&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [xml][/xml]&lt;span style="color:#8be9fd;font-style:italic"&gt;$sq&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;Invoke-WebRequest&lt;/span&gt; -uri http://www.webservicex.net/stockquote.asmx/GetQuote&lt;span style="color:#ff79c6"&gt;?&lt;/span&gt;symbol=&lt;span style="color:#8be9fd;font-style:italic"&gt;$stock&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$sqdetail&lt;/span&gt; = [xml][/xml]&lt;span style="color:#8be9fd;font-style:italic"&gt;$sq&lt;/span&gt;.DocumentElement.&lt;span style="color:#f1fa8c"&gt;&amp;#39;#text&amp;#39;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$sqdetail&lt;/span&gt;.StockQuotes.stocK
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;End&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
 &lt;img src="images/2013-12-15_14h28_47_thumb.png" alt="2013-12-15_14h28_47"&gt;

&lt;/p&gt;</description></item><item><title>PowerShell - Retrieve App-V 4.6 Package Information</title><link>https://www.verboon.info/2013/12/powershell-retrieve-app-v-4-6-package-information/</link><pubDate>Mon, 02 Dec 2013 21:44:12 +0000</pubDate><guid>https://www.verboon.info/2013/12/powershell-retrieve-app-v-4-6-package-information/</guid><description>&lt;p&gt;Today we’ve been looking at App-V 4.6 package settings before and after migrating them from ConfigMgr 2007 to ConfigMgr 2012, so after opening the App-V mmc console 3x manually…..another script was born.&lt;/p&gt;
&lt;p&gt;The below Get-Appv4PkgInfo.ps1 script retrieves information from the App-V Package WMI class. You can run the script against one or more computers and the optional –View parameter lets you define what information you want to see.&lt;/p&gt;
&lt;p&gt;
 &lt;img src="images/image_thumb.png" alt="image"&gt;

&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;Synopsis&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Retrieve local App-V 4.6 Package information
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;DESCRIPTION&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Retrieve local App-v Package Information from root\Microsoft\appvirt\client
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.PARAMETER Computer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; One or multiple computernames
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.PARAMETER View
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Specifies the information that is displayed for the identified App-V Package
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Valid options for the view parameter are Default,Path, Cache, Inuse, Size, GUIDS, Locked,All
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-Appv4PkgInfo.ps1 -Computer TestClient1, TestClient2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Shows the same output as when providing the -View Default parameter
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-Appv4PkgInfo.ps1 -Computer TestClient1 -View Default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Computer AppVname Version 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; -------- -------- ------- 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; TestClient1 SCCM Client Center 2.0.4.1 x64 R1 5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-Appv4PkgInfo.ps1 -Computer TestClient1,Testclient2 -View Path 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Computer AppVname SFTPath 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; -------- -------- ------- 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; TestClient1 SCCM Client Center 2.0.4.1 x64 R1 FILE://c:\windows\ccmcache\7\sccm client.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;LINK&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; http://technet.microsoft.com/en-us/library/cc843631.aspx
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;NOTES&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Version 1.0, by Alex Verboon
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#8be9fd;font-style:italic"&gt;CmdletBinding&lt;/span&gt;()]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Param&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;Parameter&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;Mandatory&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;ValueFromPipelineByPropertyName&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,&lt;span style="color:#50fa7b"&gt;HelpMessage&lt;/span&gt;=&lt;span style="color:#f1fa8c"&gt;&amp;#34;Enter Computername(s)&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;Position&lt;/span&gt;=&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;Alias&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;ipaddress&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;host&amp;#34;&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [String[]]&lt;span style="color:#8be9fd;font-style:italic"&gt;$Computer&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;Parameter&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;Mandatory&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;ValueFromPipelineByPropertyName&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,&lt;span style="color:#50fa7b"&gt;HelpMessage&lt;/span&gt;=&lt;span style="color:#f1fa8c"&gt;&amp;#34;Select the type of information to display&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;Position&lt;/span&gt;=&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#8be9fd;font-style:italic"&gt;ValidateSet&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Default&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;Path&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;Cache&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;Inuse&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;Size&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;GUIDS&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;Locked&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;All&amp;#34;&lt;/span&gt;)] 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$View&lt;/span&gt;=&lt;span style="color:#f1fa8c"&gt;&amp;#34;Default&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Begin&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Process&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$appv&lt;/span&gt; =&lt;span style="color:#8be9fd;font-style:italic"&gt;@&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;ForEach&lt;/span&gt;(&lt;span style="color:#8be9fd;font-style:italic"&gt;$c&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$Computer&lt;/span&gt;) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$applications&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;get-wmiobject&lt;/span&gt; -ComputerName &lt;span style="color:#8be9fd;font-style:italic"&gt;$c&lt;/span&gt; -query &lt;span style="color:#f1fa8c"&gt;&amp;#34;SELECT * FROM Package&amp;#34;&lt;/span&gt; -namespace &lt;span style="color:#f1fa8c"&gt;&amp;#34;root\Microsoft\appvirt\client&amp;#34;&lt;/span&gt; -ErrorAction SilentlyContinue
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;ForEach&lt;/span&gt;(&lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$applications&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;New-Object&lt;/span&gt; -TypeName PSObject
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;Computer&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;AppVname&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.Name
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;Version&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.Version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;SFTPath&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.SftPath
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;PackageGUID&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.PackageGUID
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;VersionGUID&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.VersionGUID
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;Locked&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.Locked
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;LaunchSize&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.LaunchSize
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;InUse&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.InUse
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;CachedSize&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.CachedSize
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;CachedPercentage&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.CachedPercentage
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;CachedLaunchSize&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.CachedLaunchSize
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Add-Member&lt;/span&gt; -MemberType NoteProperty -Name &lt;span style="color:#f1fa8c"&gt;&amp;#34;TotalSize&amp;#34;&lt;/span&gt; -Value &lt;span style="color:#8be9fd;font-style:italic"&gt;$app&lt;/span&gt;.TotalSize
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$appv&lt;/span&gt; += &lt;span style="color:#8be9fd;font-style:italic"&gt;$object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#6272a4"&gt;# end foreach application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;} &lt;span style="color:#6272a4"&gt;# end foreach computer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;} &lt;span style="color:#6272a4"&gt;# end process &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;End&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Define the properties to display based on -View parameter option&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;switch&lt;/span&gt;(&lt;span style="color:#8be9fd;font-style:italic"&gt;$view&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Default&lt;/span&gt; {&lt;span style="color:#8be9fd;font-style:italic"&gt;$selcol&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Computer&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;AppVname&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Inuse {&lt;span style="color:#8be9fd;font-style:italic"&gt;$selcol&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Computer&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;AppVname&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;Inuse&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Size {&lt;span style="color:#8be9fd;font-style:italic"&gt;$selcol&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Computer&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;AppVname&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;LaunchSize&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;TotalSize&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Cache {&lt;span style="color:#8be9fd;font-style:italic"&gt;$selcol&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Computer&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;AppVname&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;CachedSize&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;CachedPercentage&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;CachedLaunchSize&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; GUIDS {&lt;span style="color:#8be9fd;font-style:italic"&gt;$selcol&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Computer&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;AppVname&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;PackageGUID&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;VersionGUID&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Path {&lt;span style="color:#8be9fd;font-style:italic"&gt;$selcol&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Computer&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;AppVname&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;SFTPath&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Locked {&lt;span style="color:#8be9fd;font-style:italic"&gt;$selcol&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;Computer&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;AppVname&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;Locked&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; All {&lt;span style="color:#8be9fd;font-style:italic"&gt;$selcol&lt;/span&gt; = &lt;span style="color:#f1fa8c"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$appv&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;Select-Object&lt;/span&gt; -Property &lt;span style="color:#8be9fd;font-style:italic"&gt;$selcol&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>PowerShell - Yet another Sysinternals download script</title><link>https://www.verboon.info/2013/12/powershell-yet-another-sysinternals-download-script/</link><pubDate>Sun, 01 Dec 2013 22:10:33 +0000</pubDate><guid>https://www.verboon.info/2013/12/powershell-yet-another-sysinternals-download-script/</guid><description>&lt;p&gt;Today I completed the Microsoft Virtual Academy &lt;a href="http://www.microsoftvirtualacademy.com/training-courses/advanced-tools-scripting-with-powershell-3-0-jump-start"&gt;Advanced Tools &amp;amp; Scripting with PowerShell 3.0 Jump Start&lt;/a&gt; course. If you haven’t looked at it yet, I realy recommend you do so, lots of good stuff there. So for the purpose of applying some of the stuff I’ve learned there regarding the use of -Whatif and -verbose messages i wrote the below script which downloads the sysinternals tools.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;Synopsis&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Download Sysinternals Tools
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;DESCRIPTION&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Download the Sysinternals tools from live.sysinternals.com to the local machine
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;NOTES&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; version 1.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-Sysinternals -Path C:\Data|sysinternals
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;.&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;EXAMPLE&lt;/span&gt;&lt;span style="color:#6272a4"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; Get-Sysinternals.ps1 -Path C:\Data\Sysinternals -Whatif -verbose
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#8be9fd;font-style:italic"&gt;CmdletBinding&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;SupportsShouldProcess&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Param&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#8be9fd;font-style:italic"&gt;Parameter&lt;/span&gt;(&lt;span style="color:#50fa7b"&gt;Mandatory&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,&lt;span style="color:#50fa7b"&gt;ValueFromPipelineByPropertyName&lt;/span&gt;=&lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt;,&lt;span style="color:#50fa7b"&gt;ParameterSetName&lt;/span&gt;=&lt;span style="color:#f1fa8c"&gt;&amp;#34;Directory&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;HelpMessage&lt;/span&gt;= &lt;span style="color:#f1fa8c"&gt;&amp;#39;The local download folder&amp;#39;&lt;/span&gt;)]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[String]&lt;span style="color:#8be9fd;font-style:italic"&gt;$Directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Begin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Starting Sysinternals Tool download&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$url&lt;/span&gt;=&lt;span style="color:#f1fa8c"&gt;&amp;#34;http://live.sysinternals.com/tools/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; ((&lt;span style="color:#8be9fd;font-style:italic"&gt;Test-path&lt;/span&gt; -path &lt;span style="color:#8be9fd;font-style:italic"&gt;$Directory&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$False&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Creating Directory &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$Directory&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$PScmdlet&lt;/span&gt;.ShouldProcess(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Creating folder &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$Directory&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#8be9fd;font-style:italic"&gt;New-Item&lt;/span&gt; -ItemType Directory -Path &lt;span style="color:#8be9fd;font-style:italic"&gt;$Directory&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$siuri&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;Invoke-WebRequest&lt;/span&gt; -Uri &lt;span style="color:#8be9fd;font-style:italic"&gt;$url&lt;/span&gt; -EA SilentlyContinue
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$siuri&lt;/span&gt;.BaseResponse.StatusCode &lt;span style="color:#ff79c6"&gt;-eq&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;OK&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$sfiles&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$siuri&lt;/span&gt;.Links | &lt;span style="color:#8be9fd;font-style:italic"&gt;Where-Object&lt;/span&gt; {&lt;span style="color:#8be9fd;font-style:italic"&gt;$_&lt;/span&gt;.href &lt;span style="color:#ff79c6"&gt;-ne&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;} | &lt;span style="color:#8be9fd;font-style:italic"&gt;Select-Object&lt;/span&gt; -ExpandProperty innerText
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;Else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Unable to reach &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$url&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Exit &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;Process&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;ForEach&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$st&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$sfiles&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$downloadfile&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;$url&lt;/span&gt;+&lt;span style="color:#8be9fd;font-style:italic"&gt;$st&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;#Write-Verbose -Message &amp;#34;Downloading $downloadfile to $Directory\$st&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$PScmdlet&lt;/span&gt;.ShouldProcess(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Downloading now &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$downloadfile&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; to &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$Directory&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$st&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#8be9fd;font-style:italic"&gt;Start-BitsTransfer&lt;/span&gt; -Description &lt;span style="color:#f1fa8c"&gt;&amp;#34;SysinternalsDownload - &lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$st&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt; -Source &lt;span style="color:#8be9fd;font-style:italic"&gt;$downloadfile&lt;/span&gt; -Destination &lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$Directory&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$st&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;End&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Write-Verbose&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;Download complete&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>PowerShell Script&amp;ndash;Set App-V 4.6 Cache Size</title><link>https://www.verboon.info/2013/11/powershell-scriptset-app-v-4-6-cache-size/</link><pubDate>Fri, 29 Nov 2013 18:13:07 +0000</pubDate><guid>https://www.verboon.info/2013/11/powershell-scriptset-app-v-4-6-cache-size/</guid><description>&lt;p&gt;Background: As part of our migration process from Configuration Manager 2007 to Configuration Manager 2012 R2 we also adjust the App-V Cache Size that is currently set to 6GB to 11GB because the ConfigMgr Agent Cache is set to 10GB, this by following the best practice described in Microsoft’s whitepaper &lt;a href="http://www.google.ch/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;frm=1&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CCsQFjAA&amp;amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2Ff%2F7%2F8%2Ff784a197-73be-48ff-83da-4102c05a6d44%2FAPP-V%2FApp-V_and_ConfigMgr_Whitepaper_Final.docx&amp;amp;ei=ZdaYUrSUM_PzyAOOq4CwDQ&amp;amp;usg=AFQjCNG4EECrJQw6YqoBPTF3BYBCTh9Fnw&amp;amp;sig2=Za3zNXB5Gjb_YZg0Yw8zzw&amp;amp;bvm=bv.57155469,d.bGQ"&gt;Virtual Application Management with Microsoft Application Virtualization 4.5/4.6 and System Center Configuration Manager 2007 R2&lt;/a&gt;**** where it says.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“The App-V Client cache free disk space threshold parameter should be set to ensure that the available disk space on the client PC is at least 1 GB larger than the Configuration Manager Client cache size.”&lt;/em&gt;&lt;/p&gt;</description></item><item><title>PowerShell App Deployment Toolkit&amp;ndash; How to make the message Font size larger</title><link>https://www.verboon.info/2013/11/powershell-app-deployment-toolkit-how-to-make-the-message-font-size-larger/</link><pubDate>Fri, 22 Nov 2013 14:32:33 +0000</pubDate><guid>https://www.verboon.info/2013/11/powershell-app-deployment-toolkit-how-to-make-the-message-font-size-larger/</guid><description>&lt;p&gt;I have had a request this week to make the font size of the Message text displayed by the PowerShell App Deployment Tookit function **Show-InstallationPrompt **a bit larger.&lt;/p&gt;
&lt;p&gt;
 &lt;img src="images/SNAGHTML173a21f_thumb.png" alt="SNAGHTML173a21f"&gt;

&lt;/p&gt;
&lt;p&gt;To make the font of the message larger, all you need to do is adding 2 lines of code to the &lt;strong&gt;Function&lt;/strong&gt;
&lt;strong&gt;Show-InstallationPrompt&lt;/strong&gt; that is embedded within the &lt;strong&gt;AppDeployToolkitMain.ps1&lt;/strong&gt; file.&lt;/p&gt;
&lt;p&gt;Add the following code just above the “#button left” section.&lt;/p&gt;
&lt;p&gt;#custom - Bigger text size
$Font = New-Object System.Drawing.Font(&amp;ldquo;Arial&amp;rdquo;,14,[System.Drawing.FontStyle]::Regular)
$labelText.Font = $Font
#custom - Bigger Text Size&lt;/p&gt;</description></item><item><title>How to change the SCCM 2012 Package Source Path with PowerShell</title><link>https://www.verboon.info/2013/05/how-to-change-the-sccm-2012-package-source-path-with-powershell/</link><pubDate>Mon, 13 May 2013 20:08:57 +0000</pubDate><guid>https://www.verboon.info/2013/05/how-to-change-the-sccm-2012-package-source-path-with-powershell/</guid><description>&lt;p&gt;Let’s assume you’ve just created a larger number of packages within SCCM 2012 and then you’re asked to move the package sources to a different location. I guess no-one on earth would want to visit each package and update the data source manually, So I wrote 2 scripts that automate this task. It could actually be done with one script, but when it comes to changing such things I prefer to validate things.&lt;/p&gt;</description></item><item><title>PowerShell: Script to Retrieve SCCM 2012 Client Settings</title><link>https://www.verboon.info/2013/04/powershell-script-to-retrieve-sccm-2012-client-settings/</link><pubDate>Tue, 30 Apr 2013 22:16:54 +0000</pubDate><guid>https://www.verboon.info/2013/04/powershell-script-to-retrieve-sccm-2012-client-settings/</guid><description>&lt;p&gt;&lt;strong&gt;4/3/2017 - Update:  here&amp;rsquo;s a better version:&lt;/strong&gt; &lt;a href="https://www.verboon.info/2017/03/configmgr-client-policy-settings-get-cmclientpolicysettings/"&gt;https://www.verboon.info/2017/03/configmgr-client-policy-settings-get-cmclientpolicysettings/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;To make documenting the configured SCCM Client configuration settings a bit easier I wrote a small script that retrieves all the configured settings for the Default and custom  configuration settings.&lt;/p&gt;
&lt;p&gt;To run this script the Configuration Manager powershell module must be loaded and connected to the site.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# Get the different Client settings Names&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;$a&lt;/span&gt; = &lt;span style="color:#8be9fd;font-style:italic"&gt;Get-CMClientSetting&lt;/span&gt; | &lt;span style="color:#8be9fd;font-style:italic"&gt;select &lt;/span&gt;Name
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;foreach&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$a&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$a&lt;/span&gt; ) 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#6272a4"&gt;# Get all possible values for the Get-CMClientSetting -Setting parameter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#8be9fd;font-style:italic"&gt;$xsettings&lt;/span&gt; = [Enum]::GetNames( [Microsoft.ConfigurationManagement.Cmdlets.ClientSettings.Commands.SettingType])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#6272a4"&gt;# dump the detailed configuration settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#ff79c6"&gt;foreach&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$xsettings&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;$xsettings&lt;/span&gt; ) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 	&lt;span style="color:#6272a4"&gt;#write-host $a.Name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	 &lt;span style="color:#8be9fd;font-style:italic"&gt;Get-CMClientSetting&lt;/span&gt; -Setting &lt;span style="color:#8be9fd;font-style:italic"&gt;$xsettings&lt;/span&gt; -Name &lt;span style="color:#8be9fd;font-style:italic"&gt;$a&lt;/span&gt;.Name | &lt;span style="color:#8be9fd;font-style:italic"&gt;format-table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>How to automate SCCM 2012 Task Sequence Media Creation</title><link>https://www.verboon.info/2013/04/how-to-automate-sccm-2012-task-sequence-media-creation/</link><pubDate>Mon, 15 Apr 2013 20:46:29 +0000</pubDate><guid>https://www.verboon.info/2013/04/how-to-automate-sccm-2012-task-sequence-media-creation/</guid><description>&lt;p&gt;Just recently I went through the CM12 Console Task Sequence media creation wizard several times a day, so at some point I thought, this is a good candidate for automation.&lt;/p&gt;
&lt;p&gt;If you have &lt;a href="http://support.microsoft.com/kb/2817245/en-us"&gt;CU1&lt;/a&gt; for SCCM 2012 SP1 already installed, you can take advantage of the new cmdlet **New-CMTaskSequenceMedia **Below an example.&lt;/p&gt;
&lt;p&gt;CreateTaskMedia.ps1&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;import-module&lt;/span&gt; (&lt;span style="color:#8be9fd;font-style:italic"&gt;$Env:SMS_ADMIN_UI_PATH&lt;/span&gt;.Substring(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;,&lt;span style="color:#8be9fd;font-style:italic"&gt;$Env:SMS_ADMIN_UI_PATH&lt;/span&gt;.Length-&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;) + &lt;span style="color:#f1fa8c"&gt;&amp;#39;\ConfigurationManager.psd1&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;cd &lt;/span&gt;NL1:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;New-CMTaskSequenceMedia&lt;/span&gt; -BootableMediaOption -MediaInputType CDDVD -ProtectPassword &lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt; -BootImageId NL100002 -DistributionPointServerName labsccm01.labhome.local -ManagementPointServerName labsccm01.labhome.local -MediaMode Dynamic -MediaPath C:\Sources\TSMedia\batchcreatedmedia1.iso -MediaSize SizeUnlimited -EnableUnknownSupport &lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt;  -CreateMediaSelfCertificate &lt;span style="color:#8be9fd;font-style:italic"&gt;$true&lt;/span&gt; -AllowUnattendedDeployment &lt;span style="color:#8be9fd;font-style:italic"&gt;$false&lt;/span&gt; -UserDeviceAffinity DoNotAllow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you haven’t installed CU1 yet, no worries. the command line tool CreateMedia.exe located in the SCCM Administrator Console’s bin directory does the same thing.&lt;/p&gt;</description></item><item><title>Group Policy changes included in the Windows Management Framework 3.0</title><link>https://www.verboon.info/2013/02/group-policy-changes-included-in-the-windows-management-framework-3-0/</link><pubDate>Tue, 26 Feb 2013 06:48:22 +0000</pubDate><guid>https://www.verboon.info/2013/02/group-policy-changes-included-in-the-windows-management-framework-3-0/</guid><description>&lt;p&gt;While creating a new Group Policy object to enable WinRM (Windows Remote Management) on clients, I noticed some Group Policy changes that are introduced with the Windows Management Framework 3.0. The Windows Management Framework 3.0 contains the following updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Windows PowerShell 3.0&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows Management Instrumentation (WMI) 3.0&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows Remote Management (WinRM)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Management OData IIS Extension&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Server Manager CIM Provider&lt;/p&gt;
&lt;p&gt;I became aware of the changes as I was referring to a blog post I had written a while back about &lt;a href="https://www.verboon.info/index.php/2011/11/enable-windows-remote-management-through-group-policy/"&gt;how to enable Windows Remote Management via Group Policy.&lt;/a&gt;I noticed that the name of the Group Policy setting located under Computer Configuration \ Windows Components \ Windows Remote Management (WinRM) \ WinRM Service \ &lt;strong&gt;Allow automatic configuration of listeners&lt;/strong&gt; was changed to &lt;strong&gt;Allow Remote Server management through WinRM&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Exploring the functions included in Microsoft.BDD.Utility.dll</title><link>https://www.verboon.info/2012/12/exploring-the-functions-included-in-microsoft-bdd-utility-dll/</link><pubDate>Sun, 23 Dec 2012 15:33:45 +0000</pubDate><guid>https://www.verboon.info/2012/12/exploring-the-functions-included-in-microsoft-bdd-utility-dll/</guid><description>&lt;p&gt;While browsing through the MDT 2012 scripts, I noticed that here and there MDT uses functions included in the Microsoft.BDD.Utility.dll which is loaded by ZTIUtility.vbs. A good example is the ZTIGather.wsf where the following function is used to determine whether the system is running UEFI or native BIOS.&lt;/p&gt;
&lt;p&gt;&amp;rsquo; Determine if we are running UEFI&lt;/p&gt;
&lt;p&gt;bIsUEFI = FALSE&lt;/p&gt;
&lt;p&gt;On Error Resume Next&lt;/p&gt;
&lt;p&gt;bIsUEFI = oUtility.BDDUtility.IsUEFI&lt;/p&gt;
&lt;p&gt;On Error Goto 0&lt;/p&gt;
&lt;p&gt;So I took Nir Sofer’s &lt;a href="http://www.nirsoft.net/utils/dll_export_viewer.html"&gt;DLL Export Viewer&lt;/a&gt; to find out what other functions are included in Microsoft.BDD.Utility.dll&lt;/p&gt;</description></item><item><title>Explore the Microsoft Open Specifications</title><link>https://www.verboon.info/2012/12/explore-the-microsoft-open-specifications/</link><pubDate>Tue, 11 Dec 2012 07:59:42 +0000</pubDate><guid>https://www.verboon.info/2012/12/explore-the-microsoft-open-specifications/</guid><description>&lt;p&gt;If you’re interested in reading how things really work, the Microsoft Open Specifications are a great resource. Microsoft Open Specifications is primarily intended for software developers but can also be of interest for anyone else who works with Microsoft products. The reason why these documents are little-known is because it isn’t easy to find them on MSDN where they are published.&lt;/p&gt;
&lt;p&gt;This has changed now. On the Microsoft Open Specifications Developer Center you can now easily find the open specification documents through an intuitive Tiles or Pivot explorer.&lt;/p&gt;</description></item><item><title>How to use vbscripts in BGINFO</title><link>https://www.verboon.info/2012/02/how-to-use-vbscripts-in-bginfo/</link><pubDate>Thu, 09 Feb 2012 21:47:45 +0000</pubDate><guid>https://www.verboon.info/2012/02/how-to-use-vbscripts-in-bginfo/</guid><description>&lt;p&gt;Out of the box &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb897557"&gt;BGINFO&lt;/a&gt; includes a number of predefined fields that can be used to display information on the desktop such as Computer name, IP Address etc. But if the standard fields aren’t enough,BGINFO allows creating custom fields that can pull data from various sources like WMI, Registry, File content, Environment variables or VBScript.&lt;/p&gt;
&lt;p&gt;The below example shows how to embed VBSCRIPT code output in BGINFO. First we create a VBSCRIPT file called &lt;strong&gt;comp.vbs&lt;/strong&gt; that has the following content. (Credit for the script goes to &lt;a href="http://www.vsubhash.com/article.asp?MV-RFM-IE=on&amp;amp;id=96&amp;amp;info=Moral_Volcano%C3%A2%E2%82%AC%E2%84%A2s_VBScript_Add_Ons_for_Microsoft_BgInfo"&gt;Moral Volcano&lt;/a&gt;)&lt;/p&gt;</description></item><item><title>Running within an SCCM 2007 Tasksequence or not?</title><link>https://www.verboon.info/2011/12/running-within-an-sccm-2007-tasksequence-or-not/</link><pubDate>Thu, 22 Dec 2011 19:18:52 +0000</pubDate><guid>https://www.verboon.info/2011/12/running-within-an-sccm-2007-tasksequence-or-not/</guid><description>&lt;p&gt;I’ve been working on a batch script that runs as part of an SCCM 2007 TaskSequence or simply as a regular program. Because there were different conditions whether I run the script as part of a TaskSequence or just as a program and did not want to create two separate scripts I needed a way to detect within what environment the script is running.&lt;/p&gt;
&lt;p&gt;I was first thinking of looking for the existence of any &lt;a href="http://technet.microsoft.com/en-us/library/bb632442.aspx"&gt;_SMSxyz Task Sequence variables&lt;/a&gt; as they don’t exist when running a script within an advertised program, but that would have required some extra code I wanted to avoid. So I ended up with the code below.&lt;/p&gt;</description></item><item><title>A quick look at the Windows PowerShell Module for Intel vPro</title><link>https://www.verboon.info/2010/09/a-quick-look-at-the-windows-powershell-module-for-intel-vpro/</link><pubDate>Sat, 04 Sep 2010 18:41:44 +0000</pubDate><guid>https://www.verboon.info/2010/09/a-quick-look-at-the-windows-powershell-module-for-intel-vpro/</guid><description>&lt;p&gt;In a previous post &lt;a href="https://www.verboon.info/index.php/2009/07/using-intel-amt-power-management-home/"&gt;Using Intel AMT Power Management @ Home&lt;/a&gt; I wrote about how to use Intel AMT Power Management at home or let’s say in an environment where you don’t have systems managed by an infrastructure that provides integrated support for Intel AMT.&lt;/p&gt;
&lt;p&gt;Now Intel has released a PowerShell Module for Intel vPro. You find all the details in the following blog posts.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://communities.intel.com/community/openportit/vproexpert/blog/2010/07/19/intel-core-vpro-processor-powershell-module--release-introduction"&gt;Intel Core vPro Processor PowerShell Module - Release &amp;amp; Introduction&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Scripting HP Wireless Device State</title><link>https://www.verboon.info/2009/10/scripting-hp-wireless-device-state/</link><pubDate>Tue, 13 Oct 2009 15:20:45 +0000</pubDate><guid>https://www.verboon.info/2009/10/scripting-hp-wireless-device-state/</guid><description>&lt;p&gt;An old colleague called me up this week (well in fact it was my old boss who has left our company), and told me about an issue they had when deploying an ISP specific Software Package that interacts with the Wireless Devices on their HP notebooks.&lt;/p&gt;
&lt;p&gt;The problem was that if the WWAN device has been turned of via the quick launch button by the end user, the software would not install.&lt;/p&gt;</description></item><item><title>ToolTip &amp;ndash; less mis&amp;eacute;rables (MSI file extractor)</title><link>https://www.verboon.info/2009/04/tooltip-less-misrables-msi-file-extractor/</link><pubDate>Fri, 03 Apr 2009 17:59:53 +0000</pubDate><guid>https://www.verboon.info/2009/04/tooltip-less-misrables-msi-file-extractor/</guid><description>&lt;p&gt;Today I found a nice utility that allows you to easily extract individual files from an MSI package. The tool is called “&lt;a href="http://blogs.pingpoet.com/overflow/archive/2005/06/02/2449.aspx"&gt;less miséreables&lt;/a&gt;”. it’s a kind of a funny name, but it does the job.&lt;/p&gt;
&lt;p&gt;To extract a file, simply launch the utility, select the file(s) you want to extract and click on the extract button.&lt;/p&gt;
&lt;p&gt;
 &lt;img src="images/image-thumb2.png" alt="image"&gt;

&lt;/p&gt;
&lt;p&gt;Of course the same can be done by using the MSIEXEC command from the command line as shown below, but that does extract all files.&lt;/p&gt;</description></item><item><title>Active Directory Powershell Blog</title><link>https://www.verboon.info/2009/03/active-directory-powershell-blog/</link><pubDate>Wed, 25 Mar 2009 22:34:48 +0000</pubDate><guid>https://www.verboon.info/2009/03/active-directory-powershell-blog/</guid><description>&lt;p&gt;Those interested in managing Active Directory with PowerShell, have a look at the &lt;a href="http://blogs.msdn.com/adpowershell/default.aspx"&gt;Active Directory Power Shell Blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;
 &lt;img src="http://blogs.msdn.com/adpowershell/" alt="The Active Directory Powershell Blog"&gt;

&lt;/p&gt;</description></item><item><title>Hyper-V Terminology</title><link>https://www.verboon.info/2009/03/hyper-v-terminology/</link><pubDate>Mon, 16 Mar 2009 21:04:25 +0000</pubDate><guid>https://www.verboon.info/2009/03/hyper-v-terminology/</guid><description>&lt;p&gt;Talking to people about virtualization almost every day, I notice that many aren’t that familiar yet with all the terminologies. &lt;a href="http://blogs.msdn.com/Virtual_PC_Guy/"&gt;Ben Armstrong&lt;/a&gt; has written two good articles on his &lt;a href="http://blogs.msdn.com/Virtual_PC_Guy/"&gt;blog&lt;/a&gt;, describing all the terminologies used around Hyper-V.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/02/25/hyper-v-terminology.aspx"&gt;Hyper-V Terminology&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/03/04/hyper-v-terminology-update.aspx"&gt;Hyper-V Terminology Update&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of the things that seems to confuse people a lot is understanding the difference between Hyper-V Server and Hyper-V on Server 2008. I take the freedom of copying Ben’s explanation (below).&lt;/p&gt;</description></item><item><title>Windows PowerShell - Free booklet</title><link>https://www.verboon.info/2008/11/windows-powershell-free-booklet/</link><pubDate>Thu, 27 Nov 2008 22:10:10 +0000</pubDate><guid>https://www.verboon.info/2008/11/windows-powershell-free-booklet/</guid><description>&lt;p&gt;As it looks like, Windows PowerShell will become part of Windows7, so it&amp;rsquo;s about time to start learning this powerfull scripting language. After i had &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx"&gt;downloaded &lt;/a&gt;PowerShell v1.0 (v2.0 is currently in CTP), i&amp;rsquo;ve started collecting and searching the documentation and learning guides. I&amp;rsquo;m not goig to list them all here, most resources and further links can be found on the &lt;a href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;Microsoft Technet Script Center&lt;/a&gt;. But there is one i would like to reference as it is a comprehensive and well written booklet provided and written by a Microsoft Consultant.  &lt;a href="http://blogs.technet.com/chitpro-de/archive/2008/02/28/free-windows-powershell-workbook-server-administration.aspx"&gt;Free Windows PowerShell workbook: server administration&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Creating GPO reports</title><link>https://www.verboon.info/2008/11/creating-gpo-reports/</link><pubDate>Thu, 13 Nov 2008 22:00:05 +0000</pubDate><guid>https://www.verboon.info/2008/11/creating-gpo-reports/</guid><description>&lt;p&gt;Usually when you need a report for a given Group Policy object, you would launch the Group Policy Management Console, select the GPO and then select the settings tab that produces the report.&lt;/p&gt;
&lt;p&gt;But what if you need a report for multiple or even all your GPOs you have within your Active Directory ? Going through each GPO and produce the report manually is going to take ages and is boring.&lt;/p&gt;</description></item><item><title>Scripting Registry permissions</title><link>https://www.verboon.info/2008/07/scripting-registry-permissions/</link><pubDate>Tue, 08 Jul 2008 11:30:28 +0000</pubDate><guid>https://www.verboon.info/2008/07/scripting-registry-permissions/</guid><description>&lt;p&gt;Today some e-mails where exchanged on how to best script registry permissions.&lt;/p&gt;
&lt;p&gt;Depending on what you want to achieve here&amp;rsquo;s a couple of tools that can be of help.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SetACL.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.helge.mynetcologne.de/setacl/index.htm"&gt;http://www.helge.mynetcologne.de/setacl/index.htm&lt;/a&gt;
&lt;a href="http://setacl.sourceforge.net/"&gt;http://setacl.sourceforge.net/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SubinACL.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Regini.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://support.microsoft.com/kb/237607"&gt;http://support.microsoft.com/kb/237607&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Scripting XP quicklaunchbar</title><link>https://www.verboon.info/2008/06/scripting-xp-quicklaunchbar/</link><pubDate>Sat, 28 Jun 2008 08:20:27 +0000</pubDate><guid>https://www.verboon.info/2008/06/scripting-xp-quicklaunchbar/</guid><description>&lt;p&gt;I posted this a couple of years ago into the MyITforum site and received plenty of replies on this, as at that stage it was an unknown trick. Below the trick how to enable the Windows XP quicklaunch bar by using a registry hack.&lt;/p&gt;
&lt;p&gt;copy the reg key
&amp;ldquo;HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\Default Taskbar&amp;rdquo;
to:
&amp;ldquo;HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\Taskbar&amp;rdquo;
(for XP RTM)
&amp;ldquo;HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\TaskbarWinXP&amp;rdquo;
(for XP SP1) (to be safe copy it to both locations)&lt;/p&gt;</description></item></channel></rss>