<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Christopher Kibble's Technical Ramblings</title><link>https://christopherkibble.com/post/</link><description>Recent content in Posts on Christopher Kibble's Technical Ramblings</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Chris Kibble</copyright><lastBuildDate>Thu, 12 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://christopherkibble.com/post/index.xml" rel="self" type="application/rss+xml"/><item><title>Radeon Driver Causing System Reboots with MS Teams</title><link>https://christopherkibble.com/post/amd-radeon-driver-causes-system-restarts-in-teams-meetings/</link><pubDate>Thu, 12 Feb 2026 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/amd-radeon-driver-causes-system-restarts-in-teams-meetings/</guid><description>
&lt;p&gt;Last week I experienced a widespread issue that was also discussed in small groups on Reddit (&lt;a href="https://www.reddit.com/r/MicrosoftTeams/comments/1qvr5p6/pc_restarts_randomly_during_teams_calls_is_anyone/"&gt;here&lt;/a&gt; and &lt;a href="https://www.reddit.com/r/thinkpad/comments/1qq45oh/thinkpad_p14s_gen_5_randomly_rebooting_after/"&gt;here&lt;/a&gt;.)&lt;/p&gt;
&lt;div class="notices tip"&gt;
&lt;div class="label"&gt;Summary&lt;/div&gt;
&lt;p&gt;Skipping the fluff, if you have the AMD Radeon Driver v32.0.13040.12005 driver installed, you may experience your PC rebooting unexpectedly when sharing camera or content in Microsoft Teams, and it may happen only (or more frequently) when the system has recently come out of sleep. To resolve, downgrade to 32.0.13040.12005, or upgrade to the latest version of the driver available at the time you come and read this.&lt;/p&gt;</description></item><item><title>Using Hyper-V for IGEL Managed Hypervisor Testing</title><link>https://christopherkibble.com/post/using-hyperv-for-igel-managed-hypervisor-testing/</link><pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/using-hyperv-for-igel-managed-hypervisor-testing/</guid><description>
&lt;p&gt;The IGEL Managed Hypervisor (IMH) is a relatively new add-on for IGEL and you may want to start testing it in your environment. Although I'm not able to find an official word on if it's supported to run in a Hyper-V environment, with a few tweaks it runs fine and is certainly good enough for toying around with.&lt;/p&gt;
&lt;p&gt;In this post I'm going to show you how to setup an IMH on a Hyper-V virtual machine. I am writing this making some assumptions:&lt;/p&gt;</description></item><item><title>Setting up a WebDAV Server on IGEL OS</title><link>https://christopherkibble.com/post/igel-local-webdav-server/</link><pubDate>Fri, 03 Oct 2025 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/igel-local-webdav-server/</guid><description>
&lt;p&gt;In my test environment, the WebDAV server is physically far from my IGEL clients. Exporting images from IGEL to WebDAV can take hours, so I wanted a faster way to test the IMH Exporter experience without waiting for long uploads. To test what the IGEL Managed Hypervisor (IMH) Exporter looks like without needing to wait for the uploads to complete, I set up WebDAV right on my IGEL client.&lt;/p&gt;
&lt;p&gt;In this post, I'll outline the steps I took to set this up.&lt;/p&gt;</description></item><item><title>Set up IGEL with Zscaler Root Certificate Authority</title><link>https://christopherkibble.com/post/installing-zscaler-root-ca-igel-setup/</link><pubDate>Tue, 30 Sep 2025 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/installing-zscaler-root-ca-igel-setup/</guid><description>
&lt;p&gt;In a &lt;a href="https://christopherkibble.com/post/igel-first-time-setup/"&gt;previous post&lt;/a&gt; outlining how to set up IGEL for the first time, I mentioned that if you're using a technology that swaps out the SSL/TLS certificate on your network (the most popular solution being Zscaler), you'll run into problems getting a demo license. This will cause to several other issues down the line - this is just the first.&lt;/p&gt;
&lt;p&gt;In this post I will walk you through installing your Root CA certificate during the build process of your IGEL client. I'm assuming your other clients are Windows and including steps on obtaining the certificate from Windows. There are methods to get it from a Mac, but I'm not familiar with those steps so I'm not including them here. You can also get the certificate from your Zscaler administrators.&lt;/p&gt;</description></item><item><title>IGEL First Time Setup</title><link>https://christopherkibble.com/post/igel-first-time-setup/</link><pubDate>Fri, 26 Sep 2025 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/igel-first-time-setup/</guid><description>
&lt;p&gt;Over the past several months, I've been looking at IGEL as a Thin Client solution in some niche spots. There are plenty of guides and communities online, but most assumed you already understood the IGEL ecosystem (I didn't) or had prior experience setting up thin-client environments (I didn't). To further the complexity, I decided to step in right when many IGEL administrators were in the midst of a massive move from Version 11 to Version 12 of their OS, so much of the content I found was no longer applicable.&lt;/p&gt;</description></item><item><title>Finding or Recovering your WSL Data</title><link>https://christopherkibble.com/post/wsl-vhdx-recovery/</link><pubDate>Thu, 30 Dec 2021 14:47:00 -0400</pubDate><guid>https://christopherkibble.com/post/wsl-vhdx-recovery/</guid><description>
&lt;p&gt;After a recent complete failure of my Windows 11 insider build, I was forced to do a Windows reset. The process promises to preserve all of your files, but should probably be asterisked to note that data stored in WSL won't stick around (although technically is not deleted).&lt;/p&gt;
&lt;h2 id="wheres-my-wsl-data"&gt;Where's my WSL Data?&lt;/h2&gt;
&lt;p&gt;Data stored in WSL v2 distros are kept in a &lt;a href="https://docs.microsoft.com/openspecs/windows_protocols/ms-vhdx/83e061f8-f6e2-4de1-91bd-5d518a43d477"&gt;VHDX&lt;/a&gt; file and is located in &lt;code&gt;%LocalAppData%\Packages\&lt;/code&gt; under a subfolder specific to the distribution. For my Ubuntu install, the folder was &lt;code&gt;CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc&lt;/code&gt;. Once in that folder, open &lt;code&gt;LocalState&lt;/code&gt; and you'll find your VHDX file. Don't bother trying to mount this file with Disk Manager or using &lt;code&gt;diskpart&lt;/code&gt;, it's ext4 which Windows won't natively read (outside of WSL).&lt;/p&gt;</description></item><item><title>Lenovo Vantage IMController Vulnerability - ConfigMgr Query</title><link>https://christopherkibble.com/post/lenovo-vantage-imcontroller-vulnerability-len-75210/</link><pubDate>Mon, 20 Dec 2021 09:19:00 -0400</pubDate><guid>https://christopherkibble.com/post/lenovo-vantage-imcontroller-vulnerability-len-75210/</guid><description>
&lt;p&gt;Lenovo recently announced &lt;a href="https://support.lenovo.com/us/en/product_security/LEN-75210"&gt;LEN-75210&lt;/a&gt; where a privileged service can be vulnerable to attack. This service is used on many of their laptop and desktop classes. In this post I'll share a query to identify your systems impacted by LEN-75210&lt;/p&gt;
&lt;p&gt;This query has the following rquirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your ConfigMgr hardware inventory must be querying services (else we don't know if it's installed).&lt;/li&gt;
&lt;li&gt;You must be gathering Software Inventory on EXE files and it must not exclude &lt;code&gt;%WINDIR%&lt;/code&gt;. If you'd prefer not to include &lt;code&gt;%WINDIR%&lt;/code&gt;, you can add &lt;code&gt;%WINDIR%\Lenovo&lt;/code&gt; specifically. Without this data you won't have the version of the EXE.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Query Updated 2021-12-21 in an attempt to make it more future proof with the &lt;code&gt;CASE&lt;/code&gt; statements.&lt;/p&gt;</description></item><item><title>Lenovo Thunderbolt Firmware Version Detection</title><link>https://christopherkibble.com/post/lenovo-thunderbolt-get-firmware-nvm-version/</link><pubDate>Fri, 12 Nov 2021 09:48:27 -0400</pubDate><guid>https://christopherkibble.com/post/lenovo-thunderbolt-get-firmware-nvm-version/</guid><description>
&lt;p&gt;When Lenovo announced &lt;a href="https://pcsupport.lenovo.com/us/en/solutions/ht508988-critical-intel-thunderbolt-software-and-firmware-updates-thinkpad"&gt;HT508988&lt;/a&gt; back in late 2019, I found there was no built-in method to get the firmware version on impacted Lenovo models using traditional hardware inventory or WMI. The only solution I found in the forums was to collect the data using the firmware update itself. Through trial and error, I found that although there are dozens of different firmware updates, the detection binaries from just two of them covered my entire fleet. Below, I'll share the steps you can use to gather this information yourself.&lt;/p&gt;</description></item><item><title>Import Teams Meeting Into Camtasia</title><link>https://christopherkibble.com/post/import-teams-meeting-into-camtasia/</link><pubDate>Wed, 13 Oct 2021 16:45:29 -0400</pubDate><guid>https://christopherkibble.com/post/import-teams-meeting-into-camtasia/</guid><description>
&lt;p&gt;I've had an issue loading meeting recordins from Microsoft Teams into Camtasia recently. The video imports perfectly, but the audio cuts out after about a minute. After a lot of message board posting and troubleshooting of my own, the consensus seems to be that it's something about the bitrate that the audio is saved as within the MP4. Folks have posted about similar issues with GoToMeeting.&lt;/p&gt;
&lt;p&gt;To resolve, I'm using the free &lt;a href="https://www.videolan.org/vlc"&gt;VLC&lt;/a&gt; application to convert the video file first, after which it loads fine into Camtasia. Below I will outline the steps I take to export to a useable video.&lt;/p&gt;</description></item><item><title>WizTree Scan Remote System</title><link>https://christopherkibble.com/post/wiztree-scan-remote-system/</link><pubDate>Tue, 07 Sep 2021 09:33:27 -0400</pubDate><guid>https://christopherkibble.com/post/wiztree-scan-remote-system/</guid><description>
&lt;p&gt;I'm a huge fan of the &lt;a href="https://diskanalyzer.com/"&gt;WizTree Disk Space Analyzer&lt;/a&gt; solution, which generates a graphical representation of what's taking up space on your disk. If you haven't used it before, it competes nicely with &lt;a href="https://www.jam-software.com/treesize_free"&gt;TreeSize&lt;/a&gt; and &lt;a href="https://windirstat.net/"&gt;WinDirStat&lt;/a&gt;. WizTree is free for personal use, but requires a license to use in a commercial environment.&lt;/p&gt;
&lt;p&gt;What WizTree is missing, however, is an option to scan a remote disk over the network. Since WizTree allows you to save a copy of the MFT (Master File Table) using the command line and then view it (in read only mode) later, I've overcome this limitation by capturing the remote MFT dump file and then viewing it locally.&lt;/p&gt;</description></item><item><title>Collecting Tenable Nessus Agent Status With Powershell</title><link>https://christopherkibble.com/post/collecting-tenable-nessus-agent-status-with-powershell/</link><pubDate>Wed, 25 Aug 2021 11:02:10 -0400</pubDate><guid>https://christopherkibble.com/post/collecting-tenable-nessus-agent-status-with-powershell/</guid><description>
&lt;p&gt;Information from the Tenable Nessus Agent, as far as I'm aware, is only available when using the Nessus Client command line application (&lt;code&gt;NessusCli.exe&lt;/code&gt;). In this post, I'm going to show how we can capture this with PowerShell. I'm going to walk through how I do this step-by-step. If you're looking for just the script, you can skip all the way to the bottom.&lt;/p&gt;
&lt;p&gt;The first step is to identify where to find our &lt;code&gt;NessusCli.exe&lt;/code&gt; file. You could get dynamic about this if you wanted, but for the purposes of this post we'll assume it's always in the default location, like so.&lt;/p&gt;</description></item><item><title>Configmgr Comparison of Update Views</title><link>https://christopherkibble.com/post/configmgr-comparison-of-update-views/</link><pubDate>Tue, 20 Jul 2021 09:38:18 -0400</pubDate><guid>https://christopherkibble.com/post/configmgr-comparison-of-update-views/</guid><description>
&lt;p&gt;Inspired by &lt;a href="https://social.technet.microsoft.com/Forums/en-US/6efe8b09-f82a-4211-891c-9e870f5c076d/information-needed-about-sql-views-about-updates-and-patching-compliance?forum=ConfigMgrCompliance"&gt;this post&lt;/a&gt; on TechNet and trying to help out someone on the &lt;a href="https://winadmins.io/discord"&gt;WinAdmins Discord&lt;/a&gt;, I took a bit of a dive into the v_Update_ComplianceStatus view and how it compares to &lt;code&gt;v_Update_ComplianceStatusAll&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="the-v_update_compliancestatus--v_updatecompliancestatus-views"&gt;The v_Update_ComplianceStatus &amp;amp; v_UpdateComplianceStatus Views&lt;/h2&gt;
&lt;p&gt;I cover these views together because they are the same. The &lt;code&gt;v_Update_ComplianceStatus&lt;/code&gt; view just pulls all records from &lt;code&gt;v_UpdateComplianceStatus&lt;/code&gt;. I haven't looked into why, but I'd imagine one follows a newer name format but Microsoft didn't want to break old reports.&lt;/p&gt;</description></item><item><title>Standing Up a Microsoft Certificate Authority - Part 9</title><link>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-9/</link><pubDate>Fri, 28 May 2021 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-9/</guid><description>
In this final page of the series, I'll list out some other resources that might be helpful now that you have a working Certificate Authority.</description></item><item><title>Excel COM Error Cant Load Library Fix</title><link>https://christopherkibble.com/post/excel-com-error-cant-load-library-fix/</link><pubDate>Mon, 08 Feb 2021 09:08:15 -0500</pubDate><guid>https://christopherkibble.com/post/excel-com-error-cant-load-library-fix/</guid><description>
&lt;p&gt;I've been getting the following error when trying to access a new Excel COM object:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Unable to cast COM object of type 'Microsoft.Office.Interop.Excel.ApplicationClass' to interface type 'Microsoft.Office.Interop.Excel._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208D5-0000-0000-C000-000000000046}' failed due to the following error: Error loading type library/DLL. (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The code I'm using was pretty simple PoSH that has worked for me before:&lt;/p&gt;</description></item><item><title>Running Powerpoint in Windowed Mode</title><link>https://christopherkibble.com/post/running-powerpoint-in-windowed-mode/</link><pubDate>Tue, 02 Feb 2021 10:28:49 -0500</pubDate><guid>https://christopherkibble.com/post/running-powerpoint-in-windowed-mode/</guid><description>
I'm fortunate enough to have a single 44" ultrawide screen as my daily monitor when I'm docked. Unfortunately this means that when I'm presenting a slide deck, I lose access to other applications since I'm using a single monitor and it's taking up all of it.</description></item><item><title>Managing Chrome in the Enterprise</title><link>https://christopherkibble.com/post/speaking-managing-chrome-enterprise/</link><pubDate>Fri, 29 Jan 2021 11:49:59 -0500</pubDate><guid>https://christopherkibble.com/post/speaking-managing-chrome-enterprise/</guid><description>
Thanks to everyone who joined me at The Browser Summit hosted by the Charlotte Systems Management User Group and sponsored by Jeremy Moskowitz PolicyPak.</description></item><item><title>Setup Google Cloud Certificate Authority - Part 2</title><link>https://christopherkibble.com/post/setup-google-cloud-ca-part-2/</link><pubDate>Sun, 17 Jan 2021 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/setup-google-cloud-ca-part-2/</guid><description>
In this post, we're going to stand up the issuing CA. There's no rule that says your issuing CA needs to be the child of a Root CA owned by Google. If you already have an internal Root CA, you could submit the certificate request to that root, however that is outside of the scope of this post.</description></item><item><title>Standing Up a Microsoft Certificate Authority - Part 8</title><link>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-8/</link><pubDate>Sun, 17 Jan 2021 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-8/</guid><description>
In this post we're going to talk about the operational work associated with managing the Microsoft CA. There are three things we'll touch on here. First, manually updating your Root CA CRL which should be done based on how you setup your CA. In this lab, that would be at least once every 6 months. Second, we'll talk about how to approve pending certificate requests. Finally, we'll cover how to revoke certificates that either no longer required, or that may have become compromised.</description></item><item><title>Setup Google Cloud Certificate Authority - Part 1</title><link>https://christopherkibble.com/post/setup-google-cloud-ca-part-1/</link><pubDate>Wed, 13 Jan 2021 19:44:07 -0500</pubDate><guid>https://christopherkibble.com/post/setup-google-cloud-ca-part-1/</guid><description>
Google currently offers cloud based Certificate Authority in their suite of services available to enterprises. In this post, I'm going to stand up a new Root CA in the Google Cloud Platform.</description></item><item><title>Standing Up a Microsoft Certificate Authority - Part 7</title><link>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-7/</link><pubDate>Mon, 28 Dec 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-7/</guid><description>
In this post, we'll discuss how to use the Certificate Enrollment Web Interface that we installed back in Part 2 of this series. The web interface doesn't seem to be widely used since the Certificates MMC snap-in does most of the work, but it's useful to know it's there.</description></item><item><title>How to Query the SCCM Database With SQL Server Mgmt Studio</title><link>https://christopherkibble.com/post/query-the-sccm-database-with-sql-server-mgmt-studio/</link><pubDate>Sat, 26 Dec 2020 12:27:08 -0500</pubDate><guid>https://christopherkibble.com/post/query-the-sccm-database-with-sql-server-mgmt-studio/</guid><description>
&lt;p&gt;I'm going to show you how to use SQL Server Management Studio to get data from Configuration Manager. I want to thank Adam Cook and Adam Gross who both gave me the encouragement to finally put this together.&lt;/p&gt;
&lt;p&gt;For best SQL readability, make sure you're watching in HD.&lt;/p&gt;
&lt;div class="video"&gt;
&lt;iframe src="https://www.youtube.com/embed/f71cR02Eujk?controls=1&amp;rel=0" loading="lazy"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Using Flash Beyond the End of Life Date</title><link>https://christopherkibble.com/post/using-flash-beyond-end-of-life-date/</link><pubDate>Mon, 21 Dec 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/using-flash-beyond-end-of-life-date/</guid><description>
&lt;p&gt;It really didn't matter how much notice that Adobe gave organizations, there were always going to be applications that were going to live beyond the end of life. It's one of those truisms that you learn when you've been in IT long enough. In this post, I'm going to share what your experience is going to be like with Flash once it goes end of life, what the &lt;em&gt;supported&lt;/em&gt; (read: not free) options you have are, and what the quasi-supported option available is.&lt;/p&gt;</description></item><item><title>Standing Up a Microsoft Certificate Authority - Part 6</title><link>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-6/</link><pubDate>Thu, 10 Dec 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-6/</guid><description>
Finally – the moment you’ve been waiting for!  Issuing Certificates!  We’re going to cover three enrollments for our three different certificate templates created in Part 4.</description></item><item><title>Standing Up a Microsoft Certificate Authority - Part 5</title><link>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-5/</link><pubDate>Mon, 07 Dec 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-5/</guid><description>
In this part of the series, we’re going to start getting ready to issue some certificates, and we’re going to do that by creating some Certificate Templates.  This can be done from any workstation that has domain access and has the Certificate Templates console installed (part of the Remote Server Administration Tools), but we’re going to do it from our Intermediate Server in this lab since we know everything we need is already installed there from Part 2 of the series.</description></item><item><title>Standing Up a Microsoft Certificate Authority - Part 4</title><link>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-4/</link><pubDate>Sat, 05 Dec 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-4/</guid><description>
In this post we’re going to setup the trust for your Root Certificate in your environment. If we think about what we talked about back in Part 1 of this series, you’ll remember that once we trust the guy at the top, we trust anyone down the chain as well.  By trusting your Root Certificate, we automatically trust your intermediate certificate and anyone who your intermediate authority generates a certificate for.</description></item><item><title>Standing Up a Microsoft Certificate Authority - Part 3</title><link>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-3/</link><pubDate>Wed, 02 Dec 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-3/</guid><description>
I'd like to tie together everything we've done so far.  If you're following along, you've probably gotten through standing up two servers in a lab environment in under 30 minutes, but perhaps without understanding the implications of the changes you've made along the way. We're not going to make any changes to your environment in this part of the series, so you're welcome to skip it and you'll still end up with a perfectly valid environment, but I feel like there might be _some_ value here for you.</description></item><item><title>Standing Up a Microsoft Certificate Authority - Part 2</title><link>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-2/</link><pubDate>Thu, 26 Nov 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-2/</guid><description>
In this post, we'll stand up a subordinate Certificate Authority server.  This will be your domain joined, always online server that will actually hand out the certificates to clients.</description></item><item><title>Standing up a Microsoft Certificate Authority - Part 1</title><link>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-1/</link><pubDate>Mon, 23 Nov 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/standing-up-a-microsoft-certificate-authority-part-1/</guid><description>
In this post I'm going to walk through the steps necessary to standup a pretty basic Certificate Authority (CA) within your on-premises Active Directory environment.  This is an introduction to CA only, and I'll admit that all of my knowledge is from working with consultants to stand environments up and from reading Microsoft's documentation.</description></item><item><title>Error "The specified server cannot perform the requested operation" when using Export-CMApplication</title><link>https://christopherkibble.com/post/error-the-specified-server-cannot-perform-the-requested-operation-when-using-export-cmapplication/</link><pubDate>Tue, 08 Sep 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/error-the-specified-server-cannot-perform-the-requested-operation-when-using-export-cmapplication/</guid><description>
&lt;p&gt;Quick post today because I couldn't find this error anywhere online.  I'm running Configuration Manager 2002 and was exporting an application and was getting this error thrown in Powershell:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Export-CMApplication : The specified server cannot perform the requested operation.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;After some digging around, I realized it was an older application with a source path that was moved on the SAN, but not ever updated in the application since it was already distributed to all of the DPs.  I suspect changing the application source path would fix the issue, but to work around it, I just used -omitcontent on the Export-CMApplication function since I didn't need it anyway.&lt;/p&gt;</description></item><item><title>Script to Find Attached USB Mass Storage Devices</title><link>https://christopherkibble.com/post/script-to-find-attached-usb-mass-storage-devices/</link><pubDate>Thu, 20 Aug 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/script-to-find-attached-usb-mass-storage-devices/</guid><description>
&lt;p&gt;I wrote the following script to find and list attached USB Mass Storage Devices and determine the disks and partitions associated with them.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$usbKeysAttached&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-PnpDevice&lt;/span&gt; &lt;span class="n"&gt;-Class&lt;/span&gt; &lt;span class="n"&gt;USB&lt;/span&gt; &lt;span class="n"&gt;-Status&lt;/span&gt; &lt;span class="n"&gt;OK&lt;/span&gt; &lt;span class="n"&gt;-FriendlyName&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;USB Mass Storage Device&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$aAttachedDisks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="vm"&gt;@&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ForEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$usbKeysAttached&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$pnpProperties&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$key&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Get-PnpDeviceProperty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$pnpBusRelations&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$pnpProperties&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Where&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;KeyName&lt;/span&gt; &lt;span class="o"&gt;-eq&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DEVPKEY_Device_BusRelations&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;})).&lt;/span&gt;&lt;span class="py"&gt;Data&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Select &lt;/span&gt;&lt;span class="n"&gt;-First&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$usbDisk&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-Disk&lt;/span&gt; &lt;span class="n"&gt;-UniqueId&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$pnpBusRelations&lt;/span&gt;&lt;span class="s2"&gt;\`:&lt;/span&gt;&lt;span class="nv"&gt;$env:COMPUTERNAME&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$usbPartitions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-Partition&lt;/span&gt; &lt;span class="n"&gt;-DiskId&lt;/span&gt; &lt;span class="nv"&gt;$usbDisk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-not&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$usbPartitions&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# There are no partitions, just show the disk info.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;New-Object&lt;/span&gt; &lt;span class="n"&gt;PSObject&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-InputObject&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DiskName&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$usbDisk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;FriendlyName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-InputObject&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DiskSize&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$usbDisk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-InputObject&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PnPInstanceId&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;InstanceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$aAttachedDisks&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ForEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$partition&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$usbPartitions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;New-Object&lt;/span&gt; &lt;span class="n"&gt;PSObject&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-InputObject&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DiskName&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$usbDisk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;FriendlyName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-InputObject&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DiskSize&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$usbDisk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-InputObject&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PnPInstanceId&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;InstanceId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-InputObject&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DriveLetter&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$partition&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveLetter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-InputObject&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DriveSize&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$partition&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$aAttachedDisks&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;$oData&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;33&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ForEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$aAttachedDisks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;34&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;35&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveSize&lt;/span&gt; &lt;span class="o"&gt;-ge&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;TB)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;36&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;$([&lt;/span&gt;&lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DriveSize&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;TB,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; TB&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;37&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveSize&lt;/span&gt; &lt;span class="o"&gt;-gt&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;GB)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;38&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;$([&lt;/span&gt;&lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DriveSize&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;GB,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; GB&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;39&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveSize&lt;/span&gt; &lt;span class="o"&gt;-gt&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;MB)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;40&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;$([&lt;/span&gt;&lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DriveSize&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;MB,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; MB&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;41&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;42&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;$([&lt;/span&gt;&lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DriveSize&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;MB,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; B&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;43&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;44&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;45&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DiskSize&lt;/span&gt; &lt;span class="o"&gt;-ge&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;TB)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;46&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DiskSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;$([&lt;/span&gt;&lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DiskSize&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;TB,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; TB&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;47&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DiskSize&lt;/span&gt; &lt;span class="o"&gt;-gt&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;GB)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;48&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DiskSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;$([&lt;/span&gt;&lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DiskSize&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;GB,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; GB&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;49&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DiskSize&lt;/span&gt; &lt;span class="o"&gt;-gt&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;MB)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;50&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DiskSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;$([&lt;/span&gt;&lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DiskSize&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;MB,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; MB&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;51&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;52&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DiskSize&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;$([&lt;/span&gt;&lt;span class="no"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DiskSize&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;MB,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; B&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;53&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;54&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;55&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveLetter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-eq&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;56&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DriveLetter&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;$(&lt;/span&gt;&lt;span class="nv"&gt;$drive&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DriveLetter&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;57&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;58&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;59&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;60&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Clear-Host&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;61&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$aAttachedDisks&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Sort &lt;/span&gt;&lt;span class="n"&gt;DriveLetter&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;FT &lt;/span&gt;&lt;span class="n"&gt;PnpInstanceId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DiskName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DiskSize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DriveLetter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DriveSize&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Recovering Data from Synology Mirror on New NAS</title><link>https://christopherkibble.com/post/recovering-data-from-synology-mirror-on-new-nas/</link><pubDate>Tue, 30 Jun 2020 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/recovering-data-from-synology-mirror-on-new-nas/</guid><description>
&lt;p&gt;So, my DS218+ recently died and I picked up a new DS918+. After setting it up with two new 4TB disks, I thought I was going to be able to put my two old 2 TB disks that were setup as a mirror in my old system and just copy the data over, but unfortunately that's not an option. The solution in the community seemed to be to buy a hard drive caddy, hook it up to my laptop, and drag the files over that way. As I don't have a caddy available right now, I thought I'd try and figure it out on my own to get the data.&lt;/p&gt;</description></item><item><title>Quickly Editing a Microsoft Doc (Video)</title><link>https://christopherkibble.com/post/quickly-editing-a-microsoft-doc-video/</link><pubDate>Wed, 13 Nov 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/quickly-editing-a-microsoft-doc-video/</guid><description>
&lt;p&gt;The following 60-second video is the one I demoed at MMS Jazz 2019 to show how to quickly edit a &lt;a href="https://docs.microsoft.com/"&gt;Microsoft Doc&lt;/a&gt; without needing to understand Git command line tools or using VSCode.&lt;/p&gt;
&lt;div class="video"&gt;
&lt;iframe src="https://www.youtube.com/embed/adkf-bR498g?controls=1&amp;rel=0" loading="lazy"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Better PoSH: Using $PSDefaultParameterValues</title><link>https://christopherkibble.com/post/better-posh-using-psdefaultparametervalues/</link><pubDate>Mon, 15 Jul 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/better-posh-using-psdefaultparametervalues/</guid><description>
&lt;p&gt;Today's quick PoSH tip comes from a conversation I had with Kevin Crouch (&lt;a href="https://twitter.com/PsychoData"&gt;@PsychoData&lt;/a&gt;) and Brett Miller (&lt;a href="https://twitter.com/BrettMiller_IT"&gt;@BrettMiller_IT&lt;/a&gt;), and I got to learn about the $PSDefaultParameterValues variable, which I'd never used before.&lt;/p&gt;
&lt;p&gt;Essentially, &lt;code&gt;$PSDefaultParameterValue&lt;/code&gt; allows you to define ahead of your functions how certain parameters should be answered. A great use case is when using Active Directly cmdlets to ensure that multiple calls to Domain Controllers always use the same one. Instead of a drawn out explanation about how it's used, I think a few lines of code will draw a better picture.&lt;/p&gt;</description></item><item><title>Detecting Skype Activity with PowerShell</title><link>https://christopherkibble.com/post/detecting-skype-activity-with-powershell/</link><pubDate>Thu, 11 Jul 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/detecting-skype-activity-with-powershell/</guid><description>
&lt;p&gt;I'm working on a project to get a number of drivers updated across an environment. One of the biggest problems is that if we update certain audio, video, or network drivers while the user is in a Skype call, the call will fail. Often in testing I found that reconnecting to the Skype call or presentation was difficult or impossible and they were left as a &amp;quot;ghost participant&amp;quot; in the meeting without actually being there. To avoid this problem, I started work on a short script to detect activity before the installation began.&lt;/p&gt;</description></item><item><title>Better PoSH: Avoid Using += for Arrays</title><link>https://christopherkibble.com/post/better-posh-avoid-using-for-arrays/</link><pubDate>Mon, 08 Jul 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/better-posh-avoid-using-for-arrays/</guid><description>
&lt;p&gt;I've found myself hanging around some PowerShell chats lately, and I've been picking up on a lot of neat tricks to write better code. This one comes my way via &lt;a href="https://www.cookadam.co.uk/"&gt;Adam Cook&lt;/a&gt; from his blog post on his awesome new function &lt;a href="https://www.cookadam.co.uk/get-cmunusedsources"&gt;Get-CMUnusedSources&lt;/a&gt; (seriously, if you're a ConfigMgr shop, check it out).&lt;/p&gt;
&lt;p&gt;Since PowerShell is one of those languages we learn as we read other's code and hack things together (at least to start), it's easy to pick up on ways of doing things that are quick, but might not be the best idea in terms of performance. Most of the time it's insignificant as it'll barely matter on smaller scripts, but it's always a good idea in this bloggers opinion to get into good habits for when you do start writing larger and more complex scripts.&lt;/p&gt;</description></item><item><title>Updating Microsoft Docs using GitHub and Git Bash</title><link>https://christopherkibble.com/post/updating-microsoft-docs-using-github-and-git-bash/</link><pubDate>Tue, 02 Jul 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/updating-microsoft-docs-using-github-and-git-bash/</guid><description>
&lt;p&gt;In the six minute video below, I'm going to walk you through the process of forking a Microsoft Docs repository from GitHub, cloning it to your local machine, making changes, pushing those changes back into your repository, and finally creating a pull request with Microsoft to prompt them to bring your changed content into the public repository.&lt;/p&gt;
&lt;div class="video"&gt;
&lt;iframe src="https://www.youtube.com/embed/7l85MJrUl8E?controls=1&amp;rel=0" loading="lazy"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I'd encourage you to watch at full screen to see all of the code examples clearly.&lt;/p&gt;</description></item><item><title>Inventory Java with Configuration Manager</title><link>https://christopherkibble.com/post/inventory-java-with-configuration-manager/</link><pubDate>Wed, 08 May 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/inventory-java-with-configuration-manager/</guid><description>
&lt;p&gt;Short and sweet for those at MMS 2019 who were looking to inventory java usage with Configuration Manager.  There is a &lt;a href="https://www.systemcenterdudes.com/sccm-java-inventory-and-metering/"&gt;2018 System Center Dudes post&lt;/a&gt; on metering java.  The post was based on a CI created by &lt;a href="https://mnscug.org/blogs/steve-jesok/390-java-7-end-of-life-java-software-metering"&gt;Steve Jesok of TCSMUG back in 2015&lt;/a&gt;.  The original script doesn't account for problems with newer versions of Java, for non-Oracle Java, or for Java 64-bit.  I've resolved this and posted the updated script on my &lt;a href="https://github.com/ChrisKibble/JavaUsageTracking"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Calling sendmail from PowerShell on Linux</title><link>https://christopherkibble.com/post/calling-sendmail-from-powershell-on-linux/</link><pubDate>Wed, 03 Apr 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/calling-sendmail-from-powershell-on-linux/</guid><description>
&lt;p&gt;I haven't blogged about it a lot, but I am trying to learn what I can about PowerShell on Linux. I feel like more and more services are headed to the cloud, and (even in Azure) will be able to run on Linux devices. Being able to write portable scripts to move between what I manage today, and what I may be asked to manage in the future, can't be anything but beneficial.&lt;/p&gt;</description></item><item><title>Getting the Email Address of all Configuration Manager Users</title><link>https://christopherkibble.com/post/getting-the-email-address-of-all-configuration-manager-users/</link><pubDate>Wed, 20 Feb 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/getting-the-email-address-of-all-configuration-manager-users/</guid><description>
&lt;p&gt;The following short and sweet snippet of PowerShell will extract the list of admins from your SCCM environment and then get their email addresses. At the end, you can dump $email into a text file, or perhaps set it to your clipboard to paste into Outlook.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Script assumes you have CM Module Loaded&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Script assumes you have access to AD CmdLets.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$users&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-CMAdministrativeUser&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Where-Object&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;AccountType&lt;/span&gt; &lt;span class="o"&gt;-ne&lt;/span&gt; &lt;span class="mf"&gt;2&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$adUsers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="vm"&gt;@&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$index&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ForEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$users&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$index&lt;/span&gt;&lt;span class="p"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Progress&lt;/span&gt; &lt;span class="n"&gt;-Activity&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Getting Administrative Users from ConfigMgr (&lt;/span&gt;&lt;span class="nv"&gt;$index&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;$(&lt;/span&gt;&lt;span class="nv"&gt;$users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;)&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Status&lt;/span&gt; &lt;span class="vm"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DistinguishedName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;-PercentComplete&lt;/span&gt; &lt;span class="vm"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$index&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="vm"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)*&lt;/span&gt;&lt;span class="mf"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt;&lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isGroup&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$adUsers&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;DistinguishedName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$adUsers&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="vm"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Get-ADGroupMember&lt;/span&gt; &lt;span class="vm"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DistinguishedName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;-Recursive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Select &lt;/span&gt;&lt;span class="n"&gt;-ExpandProperty&lt;/span&gt; &lt;span class="n"&gt;DistinguishedName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$adUsers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$adUsers&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Select &lt;/span&gt;&lt;span class="n"&gt;-Unique&lt;/span&gt; &lt;span class="c"&gt;# Users could be members of multiple groups, or listed directly plus in a group&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$email&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="vm"&gt;@&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$index&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ForEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$adUsers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$index&lt;/span&gt;&lt;span class="p"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Progress&lt;/span&gt; &lt;span class="n"&gt;-Activity&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Getting Email Address (&lt;/span&gt;&lt;span class="nv"&gt;$index&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;$(&lt;/span&gt;&lt;span class="nv"&gt;$adUsers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;)&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Status&lt;/span&gt; &lt;span class="vm"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;-PercentComplete&lt;/span&gt; &lt;span class="vm"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$index&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="vm"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$adUsers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)*&lt;/span&gt;&lt;span class="mf"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$email&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="nb"&gt;Get-ADUser&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="n"&gt;-Properties&lt;/span&gt; &lt;span class="n"&gt;Mail&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Select &lt;/span&gt;&lt;span class="n"&gt;-ExpandProperty&lt;/span&gt; &lt;span class="n"&gt;Mail&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$email&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Select &lt;/span&gt;&lt;span class="n"&gt;-Unique&lt;/span&gt; &lt;span class="c"&gt;# Two AD accounts with the same email? Maybe?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Inventory of Missing and Disabled Configuration Manager Users</title><link>https://christopherkibble.com/post/inventory-of-missing-and-disabled-configuration-manager-users/</link><pubDate>Mon, 18 Feb 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/inventory-of-missing-and-disabled-configuration-manager-users/</guid><description>
&lt;p&gt;I wrote the following script to inventory the administrative users of my Configuration Manager (SCCM) environment as they relate to Active Directory. The end result is a list of users who no longer exist in Active Directory, users who are in Active Directory but disabled, and users who are granted rights in multiple ways (e.g. directly and through some groups).&lt;/p&gt;
&lt;p&gt;There is some sample code on how to then remove them, but I urge you to run this in a test environment first and never trust random code you find online in your production environment until you've fully vetted it.&lt;/p&gt;</description></item><item><title>PowerShell Script to Query YNAB API</title><link>https://christopherkibble.com/post/powershell-script-to-query-ynab-api/</link><pubDate>Mon, 11 Feb 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/powershell-script-to-query-ynab-api/</guid><description>
&lt;p&gt;In a &lt;a href="https://christopherkibble.com/post/thirty-four-days-with-ynab/"&gt;post last week&lt;/a&gt;, I talked about how I've begun using &lt;a href="https://ynab.com/referral/?ref=Gx3xLKV-yfObQZu0&amp;amp;utm_source=customer_referral"&gt;YNAB&lt;/a&gt; in 2019 to manage my finances. As soon as I learned there was an API, you know I had to dig in and see what it could do. Below I've posted a short PowerShell script to query all credit cards and lines of credit and then dump them out to the console. Nothing fancy, but might be a good jumping off point if there was something you were looking to write.&lt;/p&gt;</description></item><item><title>Thirty-Four Days with YNAB</title><link>https://christopherkibble.com/post/thirty-four-days-with-ynab/</link><pubDate>Mon, 04 Feb 2019 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/thirty-four-days-with-ynab/</guid><description>
&lt;p&gt;One of my two New Years resolutions for 2019 was to do a better job managing my personal finances. I've been a religious Quicken user for about sixteen years, but I was starting to realize that it was doing a great job at telling me what I'd spent my money on, and ensuring that I never spent more than I had, but I really wanted to start thinking more than a month ahead.&lt;/p&gt;</description></item><item><title>Visio cannot open the file or a component in the file because it is corrupt (Visio 2016)</title><link>https://christopherkibble.com/post/visio-cannot-open-the-file-or-a-component-in-the-file-because-it-is-corrupt-visio-2016/</link><pubDate>Thu, 20 Sep 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/visio-cannot-open-the-file-or-a-component-in-the-file-because-it-is-corrupt-visio-2016/</guid><description>
&lt;p&gt;After upgrading a number of systems to Visio 2016, I started to hear more and more about old pre-2010 Visio files in VSD format that would no longer open and would throw the following error:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="Visio cannot open the file or a component in the file because it is corrupt."
class="image_figure image_internal image_unprocessed"
src="https://christopherkibble.com/images/Visio2010Corrupt.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The strange thing was that the files were still launching without issue for users who were still on Visio 2010 and 2013.  The consensus as I searched around the Internet was that the older VSD files often had too many shaped embedded in them, and the fix was to open them in Visio 2010 or 2013, go through a process of removing unused shapes, and then saving in VSDX format.  Saving the file in the new format without removing the shapes would not resolve the issue.&lt;/p&gt;</description></item><item><title>Making a ConfigMgr Task Sequence Available to a User Collection</title><link>https://christopherkibble.com/post/making-a-configmgr-task-sequence-available-to-a-user-collection/</link><pubDate>Tue, 21 Aug 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/making-a-configmgr-task-sequence-available-to-a-user-collection/</guid><description>
&lt;p&gt;A recently had a requirement to bundle a number of applications together into a few different task sequences to make available to a user collection.  After a bit of research, I discovered that this is a pretty common question, and that there is no built-in method to make this available.  Below, I'll walk through how I was able to accomplish the task using a the task sequence, an application, and a bit of PowerShell.&lt;/p&gt;</description></item><item><title>Remove All Objects from an Excel Sheet</title><link>https://christopherkibble.com/post/remove-all-objects-from-an-excel-sheet/</link><pubDate>Mon, 30 Jul 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/remove-all-objects-from-an-excel-sheet/</guid><description>
&lt;p&gt;After pasting some content into Excel 365 (2016), I found that I had brought along thousands of little objects from the source data.  These were tiny invisible objects, but they'd constantly get in the way of me clicking into a cell, because I'd inadvertently click on one of the objects instead.  While I should have just gone back and gotten a cleaner copy of the data, I decided instead to see what I could do to clean them all up.  Below are the steps I took to accomplish this.&lt;/p&gt;</description></item><item><title>Convert Office 365 Version Numbers to Build Numbers for SCCM Reporting</title><link>https://christopherkibble.com/post/convert-office-365-build-numbers-to-build-numbers-for-sccm-reporting/</link><pubDate>Tue, 24 Jul 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/convert-office-365-build-numbers-to-build-numbers-for-sccm-reporting/</guid><description>
&lt;p&gt;I've written the following three PowerShell functions to build a mapping of Office 365 ProPlus version numbers (e.g. 16.0.10205.2009) to more reportable build numbers (e.g. 1806).  I've created the following three functions to start:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Get-Office365BuildToVersionMap&lt;/li&gt;
&lt;li&gt;Get-OfficeBuildListToCase&lt;/li&gt;
&lt;li&gt;Get-OfficeBuildListToSQLTable&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;You can find the code, as well as examples up on &lt;a href="https://github.com/ChrisKibble/O365VersionToBuildMap"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is a query I wrote with the table created in that third function to output the build numbers with the number of systems running that build:&lt;/p&gt;</description></item><item><title>So, you've deleted the Windows Store. Ooops.</title><link>https://christopherkibble.com/post/so-youve-deleted-the-windows-store-ooops/</link><pubDate>Mon, 16 Jul 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/so-youve-deleted-the-windows-store-ooops/</guid><description>
&lt;p&gt;Those enterprises who jumped on the Windows 10 bandwagon early and didn't like the idea of the Windows Store being installed by default may have taken it upon themselves to force the removal of the Windows Store before reading some of the best practices for either disabling it, or setting up a Windows Store for Business.  You've now found yourself in an unsupported scenario and unsure how to get the store back when you want it without reinstalling the OS.  Assuming you didn't delete the underlying WindowsApp files, the following script will help you get the Store reinstalled.&lt;/p&gt;</description></item><item><title>SCCM Console Setup Terminates with Exit Code 6</title><link>https://christopherkibble.com/post/sccm-console-setup-terminates-with-exit-code-6/</link><pubDate>Wed, 11 Jul 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/sccm-console-setup-terminates-with-exit-code-6/</guid><description>
&lt;p&gt;If you're trying to automate the deployment of the SCCM Console through Configuration Manager, you may find that running it quietly throws something like this in AppEnforce.log:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Process 9976 terminated with exitcode: 6&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt=""
class="image_figure image_internal image_unprocessed"
src="https://christopherkibble.com/images/exit6.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;For some reason, Microsoft has decided not to define a default installation path when running the console installer silently.  This is included in their &lt;a href="https://docs.microsoft.com/en-us/sccm/core/servers/deploy/install/install-consoles"&gt;documentation&lt;/a&gt;.  You can get around this error by simply specifying the installation path as part of your application, like so:&lt;/p&gt;</description></item><item><title>Allowing Reboot without Shutdown on Windows 10</title><link>https://christopherkibble.com/post/allowing-reboot-without-shut-down-on-windows-10/</link><pubDate>Mon, 09 Jul 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/allowing-reboot-without-shut-down-on-windows-10/</guid><description>
&lt;p&gt;How it is possible in mid-2018, &lt;a href="https://www.google.com/search?safe=on&amp;amp;q=Allow&amp;#43;reboot&amp;#43;but&amp;#43;not&amp;#43;shutdown&amp;#43;windows&amp;#43;10"&gt;with 2.6 million results in google when searching&lt;/a&gt;, that we don't have a policy where we can prevent shutting down a system but allow rebooting?  There are dozens of workarounds, some of which I'll go over below, but no actual ability to set this policy.&lt;/p&gt;
&lt;h2 id="my-problem"&gt;My Problem:&lt;/h2&gt;
&lt;p&gt;First, there are two places that most people turn to when setting this policy.  The first is a GPO under &lt;strong&gt;Administrative Templates \ Start Menu and Taskbar \ Remove and prevent access to the Shut Down, Restart, Sleep, and Hibernate commands&lt;/strong&gt;.  According to the help (shamelessly stolen from StartMenu.adml):&lt;/p&gt;</description></item><item><title>Three ways to find the right view in your SCCM Database</title><link>https://christopherkibble.com/post/three-ways-to-find-the-right-view-in-your-sccm-database/</link><pubDate>Fri, 01 Jun 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/three-ways-to-find-the-right-view-in-your-sccm-database/</guid><description>
&lt;p&gt;When it comes to data in SCCM, there is no shortage of what you can get access to, but where exactly do you find it?  Below I'll outline three methods I've used in the past.&lt;/p&gt;
&lt;p&gt;First, the &lt;a href="https://gallery.technet.microsoft.com/SCCM-Configmgr-2012-R2-SQL-5fefdd3b"&gt;TechNet documentation&lt;/a&gt;.  I'm going to be honest, I haven't &lt;em&gt;actually&lt;/em&gt; looked here in quite some time.  It's available, but since I've been querying SCCM for quite some time, I've memorized most of the views.  Except when I forget them, which is often, which is why I have two more options below.&lt;/p&gt;</description></item><item><title>Adding Individual Office 365 Product to Existing Installation</title><link>https://christopherkibble.com/post/adding-individual-office-365-product-to-existing-installation/</link><pubDate>Wed, 23 May 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/adding-individual-office-365-product-to-existing-installation/</guid><description>
&lt;p&gt;I was having a discussion last week about how if you want to add a new product to an existing Office 365 ProPlus installation (such as adding Microsoft Access after already laying down Word, Excel, and PowerPoint), you need to supply an XML with the apps you want to exclude (no longer including Access) but you don't always know what's on the system to start with during a large deployment.&lt;/p&gt;</description></item><item><title>Stop Using the Pipeline in PowerShell</title><link>https://christopherkibble.com/post/stop-using-the-pipeline-in-powershell/</link><pubDate>Tue, 22 May 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/stop-using-the-pipeline-in-powershell/</guid><description>
&lt;p&gt;Last week I Fred Bainbridge and Ryan Ephgrave's MMSMOA session where they showed us that we shouldn't be using the pipeline anymore.  Before beginning the session, I was as confused as you might be about &lt;em&gt;why&lt;/em&gt;.  The guys did a great job explaining it and I'm going to show you why in the same manner they showed me.&lt;/p&gt;
&lt;p&gt;Let's start with a really basic array of numbers:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$numbers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;.200000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, you want to do something with these numbers, right?  Let's say we're going to write them out to a file:&lt;/p&gt;</description></item><item><title>Midwest Management Summit 2018 - Day 5</title><link>https://christopherkibble.com/post/midwest-management-summit-day-2018-5/</link><pubDate>Fri, 18 May 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/midwest-management-summit-day-2018-5/</guid><description>
&lt;p&gt;You caught me.  There is no Day 5 to the Midwest Management Summit - but as I'm getting ready to depart the Mall of America this Friday morning, I'm going to share a quick list of things that I'd like to share about the overall conference over the week.  So in no particular order . . .&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The venue is a fantastic choice.  I'm so spoiled being able to wake up in the morning, get ready, leave at 7:57am, and be seated in my session by 8am.&lt;/li&gt;
&lt;li&gt;Get on Twitter.  I can't stress this enough for most conferences.  Catching #MMSMOA posts from others was how I kept up on everything all week.  If you're not signed up, what are you waiting for?&lt;/li&gt;
&lt;li&gt;Network Network Network.  I can't stress this enough either!!!  I met some really great guys this week who were just regular attendees like me, running into the same problems I am, and there were some really creative solutions out there that I'm going to take back with me.  The badges were barcoded with contact information, so snap a picture!  On top of this, the speakers and MVPs are super approachable.  Lot's of great conversations on the best way to do things.&lt;/li&gt;
&lt;li&gt;There are 15 minute breaks between each session - this wasn't really clear when I was picking my sessions, and I think it's good for potential attendees to know.&lt;/li&gt;
&lt;li&gt;There is no official lunch in many (most? any?) of the noon sessions, but there are plenty of places to eat quickly.  If you sign up for a session that doesn't include Lunch, plan accordingly.  Plenty of people actually brought food from elsewhere into the session.&lt;/li&gt;
&lt;li&gt;Nerds of a Feather - come prepared with some things to bring up.  Even if you never get your question out, these are attendee driven and they're going to be very boring if no one has anything to discuss.&lt;/li&gt;
&lt;li&gt;Most of the rooms get really cold.  I'd prefer this over a bunch of geeks sweating it up next to each other, but carry in something light to wear.&lt;/li&gt;
&lt;li&gt;The WiFi doesn't quite &amp;quot;suck&amp;quot;, but it's not your home or work network.  This is true of nearly every conference.  It's not unusable, I could get email and get to twitter most of the time, but don't plan on fast and consistent connectivity.  Thankfully all of the presenters were prepared for this, and when connectivity was lost, they had something to fall back on.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Midwest Management Summit 2018 - Day 4</title><link>https://christopherkibble.com/post/midwest-management-summit-day-4/</link><pubDate>Thu, 17 May 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/midwest-management-summit-day-4/</guid><description>
&lt;p&gt;Day three is under my belt and the information overload keeps coming.  In case you missed it, I'm at the Midwest Management Summit at the Mall of America (MMSMOA) - you can read more about &lt;a href="http://test.christopherkibble.com/midwest-management-summit-2018-day-1/"&gt;day 1&lt;/a&gt;, &lt;a href="http://test.christopherkibble.com/midwest-management-summit-day-2/"&gt;day 2&lt;/a&gt;, and &lt;a href="http://test.christopherkibble.com/midwest-management-summit-day-3/"&gt;day 3&lt;/a&gt; in previous posts.&lt;/p&gt;
&lt;h4 id="certificates-and-pki-for-system-admins"&gt;Certificates and PKI for System Admins&lt;/h4&gt;
&lt;p&gt;Speakers: Jason Sandys&lt;/p&gt;
&lt;p&gt;Jason did a fantastic job dumbing down PKI for those of us who might be completely clueless.&lt;/p&gt;
&lt;p&gt;What I'm excited about:&lt;/p&gt;</description></item><item><title>Midwest Management Summit 2018 - Day 2</title><link>https://christopherkibble.com/post/midwest-management-summit-day-2/</link><pubDate>Wed, 16 May 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/midwest-management-summit-day-2/</guid><description>
&lt;p&gt;Day two is complete and a lot of more great things.  In case you missed it, I'm at the Midwest Management Summit at the Mall of America (MMSMOA) - you can read more about day #1 &lt;a href="http://test.christopherkibble.com/midwest-management-summit-2018-day-1/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="ten-things-you-need-as-an-enterprise-scripter"&gt;Ten Things You Need as an Enterprise Scripter&lt;/h4&gt;
&lt;p&gt;Speakers: Fred Bainbridge and Ryan Ephgrave&lt;/p&gt;
&lt;p&gt;Two great speakers on all things PowerShell in an enterprise environment.  I'm going to have a lot to go back and work on.&lt;/p&gt;</description></item><item><title>Midwest Management Summit 2018 - Day 3</title><link>https://christopherkibble.com/post/midwest-management-summit-day-3/</link><pubDate>Wed, 16 May 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/midwest-management-summit-day-3/</guid><description>
&lt;p&gt;Day three is under my belt and the information overload keeps coming.  In case you missed it, I'm at the Midwest Management Summit at the Mall of America (MMSMOA) - you can read more about &lt;a href="http://test.christopherkibble.com/midwest-management-summit-2018-day-1/"&gt;day 1&lt;/a&gt; and &lt;a href="http://test.christopherkibble.com/midwest-management-summit-day-2/"&gt;day 2&lt;/a&gt; in previous posts.&lt;/p&gt;
&lt;h4 id="patch-reporting-how-sure-are-you"&gt;Patch Reporting: How Sure Are You?&lt;/h4&gt;
&lt;p&gt;Speakers: Bryan Dam and Garth Jones&lt;/p&gt;
&lt;p&gt;This was Bryan's first time speaking at MMS, but you wouldn't know it.  He was a natural up there.  Bryan showed us the ups and downs of patch reporting, the issues he's run into, the issues he's solved, and the issues that are just unsolvable (kind of).&lt;/p&gt;</description></item><item><title>Midwest Management Summit 2018 - Day 1</title><link>https://christopherkibble.com/post/midwest-management-summit-2018-day-1/</link><pubDate>Tue, 15 May 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/midwest-management-summit-2018-day-1/</guid><description>
&lt;p&gt;I'm really excited to be attending the Midwest Management Summit (MMS) for this first time this year.  For those who don't know, MMS has been running since 2015 and picks up where Microsoft dropped off.  It's held yearly at the Mall of America, which is also great since it's my first time making it out here.  The core focus seems to be in making sure that the System Center (mostly configuration manager) community stays connected in and that we're all learning from each other.&lt;/p&gt;</description></item><item><title>Acrobat Redaction Bleeds into Multiple Pages</title><link>https://christopherkibble.com/post/acrobat-redaction-bleeds-multiple-pages/</link><pubDate>Sat, 24 Feb 2018 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/acrobat-redaction-bleeds-multiple-pages/</guid><description>
&lt;p&gt;I ran into an issue today where using redaction on a PDF in Acrobat X caused black marks throughout the document, even in places where I hadn't used redaction. After a few hours of troubleshooting, I was able to determine what I suspect to be the root cause, and came up with a resolution.&lt;/p&gt;
&lt;p&gt;To show you an example of the issue, I created a sample PowerPoint presentation. Below are the three slides I created.&lt;/p&gt;</description></item><item><title>Using PowerShell to Rerun an SCCM Client Advertisement</title><link>https://christopherkibble.com/post/using-powershell-rerun-sccm-client-advertisement/</link><pubDate>Sat, 30 Sep 2017 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/using-powershell-rerun-sccm-client-advertisement/</guid><description>
&lt;p&gt;I wrote the following function to rerun an advertisement on a remote client computer using either the AdvertisementID or the PackageID. Like all sample code found online, please run through a test environment first, and use at your own risk!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;*******************************************************************************************************************************
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;** All code is for demonstration only and should be used at your own risk. I cannot accept liability for unexpected results. **
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;*******************************************************************************************************************************
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;Use: You&amp;#39;re welcome to use, modify, and distribute this script. I&amp;#39;d love to hear about how you&amp;#39;re using it or
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;modifications you&amp;#39;ve made in the comments section of the original post over at ChristopherKibble.com.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 11&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;Function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;Start-CCMRerunAdvertisement&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 13&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 14&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="cm"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; .&lt;/span&gt;&lt;span class="sd"&gt;SYNOPSIS&lt;/span&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; Restarts an SCCM advertisement on a remote computer.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; .&lt;/span&gt;&lt;span class="sd"&gt;DESCRIPTION&lt;/span&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 18&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; This script will remotely connect to a computer running the CCM Client,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 19&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; find an advertisement by the Advertisement ID or the Package ID (or
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 20&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; both), and then restart the advertisement.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 21&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; .&lt;/span&gt;&lt;span class="sd"&gt;NOTES&lt;/span&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 22&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; File Name : Start-CCMRerunAdvertisement.ps1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 23&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; Version : 2017-09-21 (v1.0)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 24&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; Author : Christopher Kibble (www.ChristopherKibble.com)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 25&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; Tested : PowerShell Version 5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 26&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; .PARAMETER ComputerName
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 27&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; The name of the remote computer to connect to.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 28&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; .PARAMETER AdvertisementID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 29&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; All or part of the Advertisement ID to run. Wildcards accepted.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 30&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; Defaults to *. Either this or PackageID must be specified.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 31&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; .PARAMETER PackageID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 32&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; All or part of the Package ID to run. Wildcards accepted.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 33&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; Defaults to *. Either this or AdvertisementID must be specified.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 34&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; .PARAMETER MaxRun
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 35&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; If more than one advertisement meets your criteria, how many of the
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 36&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; advertisements to run. Defaults to 1.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 37&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; .PARAMETER MoreThanPing
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 38&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; In environments where ICMP may not allow pinging a remote computer,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 39&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; this switch will make the script attempt to connect to C$ on the remote
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 40&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; computer in order to determine if it&amp;#39;s online.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 41&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; .&lt;/span&gt;&lt;span class="sd"&gt;EXAMPLE&lt;/span&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 42&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; Start-CCMRerunAdvertisement -ComputerName SANDIAGO-001 -AdvertisementID &amp;#34;US000001&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 43&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; #&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 44&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 45&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;CmdLetBinding&lt;/span&gt;&lt;span class="p"&gt;()]&lt;/span&gt;&lt;span class="k"&gt;Param&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 46&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="na"&gt;Mandatory&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="vm"&gt;$true&lt;/span&gt;&lt;span class="p"&gt;)][&lt;/span&gt;&lt;span class="no"&gt;string&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nv"&gt;$computerName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 47&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="na"&gt;Mandatory&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="vm"&gt;$false&lt;/span&gt;&lt;span class="p"&gt;)][&lt;/span&gt;&lt;span class="no"&gt;string&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nv"&gt;$advertisementId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 48&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="na"&gt;Mandatory&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="vm"&gt;$false&lt;/span&gt;&lt;span class="p"&gt;)][&lt;/span&gt;&lt;span class="no"&gt;string&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nv"&gt;$packageId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 49&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="na"&gt;Mandatory&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="vm"&gt;$false&lt;/span&gt;&lt;span class="p"&gt;)][&lt;/span&gt;&lt;span class="no"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nv"&gt;$maxRun&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 50&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Parameters&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="na"&gt;Mandatory&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="vm"&gt;$false&lt;/span&gt;&lt;span class="p"&gt;)][&lt;/span&gt;&lt;span class="no"&gt;switch&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nv"&gt;$moreThanPing&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="vm"&gt;$false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 51&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 52&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 53&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# TODO LIST:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 54&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 55&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# - Better error control when WMI connections fail.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 56&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# - Are we using the best method to sort when using MaxRun?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 57&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 58&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 59&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$advertisementId&lt;/span&gt; &lt;span class="o"&gt;-eq&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;-and&lt;/span&gt; &lt;span class="nv"&gt;$packageId&lt;/span&gt; &lt;span class="o"&gt;-eq&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 60&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Error&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;You must supply either an AdvertisementID or a PackageID&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 61&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Missing Parameters&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 62&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 63&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 64&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 65&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$searchString&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$advertisementId&lt;/span&gt;&lt;span class="s2"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;$packageId&lt;/span&gt;&lt;span class="s2"&gt;-*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 66&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 67&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(!(&lt;/span&gt;&lt;span class="nb"&gt;Test-Connection&lt;/span&gt; &lt;span class="n"&gt;-ComputerName&lt;/span&gt; &lt;span class="nv"&gt;$computername&lt;/span&gt; &lt;span class="n"&gt;-ErrorAction&lt;/span&gt; &lt;span class="n"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 68&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 69&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$moreThanPing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 70&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(!(&lt;/span&gt;&lt;span class="nb"&gt;Get-ChildItem&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;\\&lt;/span&gt;&lt;span class="nv"&gt;$computername&lt;/span&gt;&lt;span class="s2"&gt;\c$&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-ErrorAction&lt;/span&gt; &lt;span class="n"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 71&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Error&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;System Offline&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 72&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;System Offline&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 73&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 74&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 75&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 76&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;System Offline&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 77&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 78&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 79&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 80&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 81&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 82&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Verbose&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Getting ID of ScheduleMessage on &lt;/span&gt;&lt;span class="nv"&gt;$computername&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 83&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 84&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$schMsgs&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-WmiObject&lt;/span&gt; &lt;span class="n"&gt;-ComputerName&lt;/span&gt; &lt;span class="nv"&gt;$computername&lt;/span&gt; &lt;span class="n"&gt;-Namespace&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;root\ccm\policy\machine\actualconfig&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Class&lt;/span&gt; &lt;span class="n"&gt;CCM_Scheduler_ScheduledMessage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 85&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 86&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$thisMsg&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$schMsgs&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ScheduledMessageID&lt;/span&gt; &lt;span class="o"&gt;-like&lt;/span&gt; &lt;span class="nv"&gt;$searchString&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Sort &lt;/span&gt;&lt;span class="n"&gt;ActiveTime&lt;/span&gt; &lt;span class="n"&gt;-Descending&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;select &lt;/span&gt;&lt;span class="n"&gt;-First&lt;/span&gt; &lt;span class="nv"&gt;$maxRun&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 87&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 88&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="nv"&gt;$thisMsg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 89&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Verbose&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Cannot Find Advertisement/Package on Target Computer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 90&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Cannot Find Advertisment&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 91&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 92&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 93&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 94&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$thisMsg&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="p"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 95&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 96&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;xml&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nv"&gt;$activeMessage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;activeMessage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 97&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 98&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$amProgramId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$activeMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;SoftwareDeploymentMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ProgramID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 99&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$amAdvId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$activeMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;SoftwareDeploymentMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;AdvertisementID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;100&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$amPkgId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$activeMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;SoftwareDeploymentMessage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;PackageID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;101&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$ScheduledMessageId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ScheduledMessageId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;102&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;103&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Verbose&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Restarting &lt;/span&gt;&lt;span class="nv"&gt;$amArogramId&lt;/span&gt;&lt;span class="s2"&gt; (ADV=&lt;/span&gt;&lt;span class="nv"&gt;$amAdvId&lt;/span&gt;&lt;span class="s2"&gt;) (PKG=&lt;/span&gt;&lt;span class="nv"&gt;$amPkgId&lt;/span&gt;&lt;span class="s2"&gt;) for Schedule Message &lt;/span&gt;&lt;span class="nv"&gt;$ScheduledMessageId&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;104&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;105&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$softwareDist&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-WmiObject&lt;/span&gt; &lt;span class="n"&gt;-ComputerName&lt;/span&gt; &lt;span class="nv"&gt;$computername&lt;/span&gt; &lt;span class="n"&gt;-Namespace&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;root\ccm\policy\machine\actualconfig&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Class&lt;/span&gt; &lt;span class="n"&gt;CCM_SoftwareDistribution&lt;/span&gt; &lt;span class="n"&gt;-Filter&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ADV_AdvertisementID = &amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;$amAdvId&lt;/span&gt;&lt;span class="s2"&gt;&amp;#39; and PKG_PackageID = &amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;$amPkgId&lt;/span&gt;&lt;span class="s2"&gt;&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;106&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;107&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$original_Rerun&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$softwareDist&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ADV_RepeatRunBehavior&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;108&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;109&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$original_Rerun&lt;/span&gt; &lt;span class="o"&gt;-ne&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;RerunAlways&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;110&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;write-verbose&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Changing Rerun Status from &lt;/span&gt;&lt;span class="nv"&gt;$original_Rerun&lt;/span&gt;&lt;span class="s2"&gt; to RerunAlways&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;111&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$softwareDist&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ADV_RepeatRunBehavior&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;RerunAlways&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;112&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$softwareDist&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;put&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Out-Null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;113&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;114&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;115&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Verbose&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Triggering Schedule on &lt;/span&gt;&lt;span class="nv"&gt;$computername&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;116&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Invoke-WmiMethod&lt;/span&gt; &lt;span class="n"&gt;-ComputerName&lt;/span&gt; &lt;span class="nv"&gt;$computername&lt;/span&gt; &lt;span class="n"&gt;-Namespace&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;root\ccm&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Class&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;SMS_CLIENT&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="n"&gt;TriggerSchedule&lt;/span&gt; &lt;span class="nv"&gt;$ScheduledMessageId&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Out-Null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;117&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;118&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Verbose&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Sleeping for 5 seconds&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;119&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Start-Sleep&lt;/span&gt; &lt;span class="n"&gt;-Seconds&lt;/span&gt; &lt;span class="mf"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;120&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;121&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$original_Rerun&lt;/span&gt; &lt;span class="o"&gt;-ne&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;RerunAlways&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;122&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Verbose&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Changing Rerun Status back to &lt;/span&gt;&lt;span class="nv"&gt;$original_Rerun&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;123&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$softwareDist&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;ADV_RepeatRunBehavior&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$original_Rerun&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;124&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$softwareDist&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;put&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Out-Null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;125&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;126&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;127&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Reran Advertisement&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;128&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;129&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;130&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;131&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Backing up an iPhone with Broken Screen</title><link>https://christopherkibble.com/post/backing-iphone-broken-screen/</link><pubDate>Sat, 23 Sep 2017 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/backing-iphone-broken-screen/</guid><description/></item><item><title>Making Registry Changes for All Users with PowerShell</title><link>https://christopherkibble.com/post/making-registry-changes-users-powershell/</link><pubDate>Sat, 16 Sep 2017 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/making-registry-changes-users-powershell/</guid><description>
&lt;p&gt;I recently had to throw together a quick script to modify the registry of each current user on a set of given laptops, as well as any future users. While a GPO is normally the way to go for something like this, it wasn't an option for me here. This builds a little more on my &lt;a href="https://christopherkibble.com/post/get-list-user-profile-folders-posh/"&gt;May 2017 post&lt;/a&gt; where I just needed to get the profile folders.&lt;/p&gt;
&lt;p&gt;Feel free to steal, use, and abuse - but like all samples found online, please run through a test environment first, and use at your own risk!&lt;/p&gt;</description></item><item><title>Modify Access Application Options in PoSH</title><link>https://christopherkibble.com/post/modify-access-application-options-posh/</link><pubDate>Wed, 21 Jun 2017 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/modify-access-application-options-posh/</guid><description>
&lt;p&gt;I put together the following script to help a small group configure Microsoft Access during login in a kiosk environment. You're welcome to steal and modify as you see fit. For all the options you can possibly set, see &lt;a href="https://msdn.microsoft.com/VBA/Access-VBA/articles/set-options-from-visual-basic"&gt;this MSDN page&lt;/a&gt; (ignore the comment that it's for Visual Basic...)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;&amp;lt;#
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;*******************************************************************************************************************************
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;** All code is for demonstration only and should be used at your own risk. I cannot accept liability for unexpected results. **
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;*******************************************************************************************************************************
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;Use: You&amp;#39;re welcome to use, modify, and distribute this script. I&amp;#39;d love to hear about how you&amp;#39;re using it or modifications you&amp;#39;ve made in the comments section of the original post over at ChristopherKibble.com.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;Lot&amp;#39;s of help from here:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;https://msdn.microsoft.com/VBA/Access-VBA/articles/set-options-from-visual-basic
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;#&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Microsoft Access Configuration&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$access&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;New-Object&lt;/span&gt; &lt;span class="n"&gt;-ComObject&lt;/span&gt; &lt;span class="n"&gt;Access&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Application&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Invisible is the default, but setting here so that it can be changed for troubleshooting if necessary.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$access&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;visible&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="vm"&gt;$false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="nv"&gt;$access&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;#Add-Type -AssemblyName &amp;#34;System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;void][System.Windows.Forms.MessageBox&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;We were unable to configure Microsoft Access at this time.&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;# Casting the method to [void] suppresses the output. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Default Open Mode for Databases&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 0 = Shared&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 1 = Exclusive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Default Record Locking&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 0 = No Locks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 1 = All Records&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 2 = Edited Records&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;33&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;34&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;35&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$access&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;SetOption&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Default Open Mode for Databases&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;36&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$access&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;SetOption&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Default Record Locking&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;37&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$access&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;SetOption&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Use Row Level Locking&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="vm"&gt;$true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;38&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;39&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;#Add-Type -AssemblyName &amp;#34;System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;40&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;void][System.Windows.Forms.MessageBox&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;There was an error setting one or more Microsoft Access Settings&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;# Casting the method to [void] suppresses the output. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;41&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;42&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;43&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$access&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Quit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>SCCM SQL Query to Build Uninstaller Batch File</title><link>https://christopherkibble.com/post/sccm-sql-query-build-uninstaller-batch-file/</link><pubDate>Fri, 26 May 2017 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/sccm-sql-query-build-uninstaller-batch-file/</guid><description>
&lt;p&gt;I created the follow SQL query to create a batch file that uninstalls all known versions of a piece of software. Feel free to use and tweak as you see fit. You should build the query first to make sure you're only identifying the GUIDs for software you really want to uninstall. You'll need to setup SSMS to output as text instead of grid view, then copy and paste into a new batch file and trim the top and bottom a bit to remove the junk that comes with the output.&lt;/p&gt;</description></item><item><title>Get List of User Profile Folders (PoSH)</title><link>https://christopherkibble.com/post/get-list-user-profile-folders-posh/</link><pubDate>Tue, 02 May 2017 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/get-list-user-profile-folders-posh/</guid><description>
&lt;p&gt;The following snippet of PowerShell will collect the list of profiles active on a system from the registry and populate an array.&lt;/p&gt;
&lt;p&gt;I remove any profile folder that does not exist, as well as any that are within the Windows folder (e.g. NetworkService, LocalSystem), but you can modify as you see fit if that doesn't meet your needs. I use this when I need to add files, remove files, or make changes to files within a users profile.&lt;/p&gt;</description></item><item><title>SCCM SQL Query to Find Machines Impacted by AMT Firmware Exploit (INTEL-SA-00075)</title><link>https://christopherkibble.com/post/sccm-sql-query-find-machines-impacted-amt-firmware-exploit-intel-sa-00075/</link><pubDate>Tue, 02 May 2017 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/sccm-sql-query-find-machines-impacted-amt-firmware-exploit-intel-sa-00075/</guid><description>
&lt;p&gt;The following SQL should help identify the state of impacted systems. Please review thoroughly before relying on this information, while I believe the results should be accurate, you should do your own due diligence. Please let me know if you find any errors or have any suggestions to return better data.&lt;/p&gt;
&lt;p&gt;More information on INTEL-SA-00075 &lt;a href="https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00075&amp;amp;languageid=en-fr"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_COMPUTER_SYSTEM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manufacturer0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_COMPUTER_SYSTEM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_COMPUTER_SYSTEM_PRODUCT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Version0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SystemProductVersion&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_PC_BIOS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SerialNumber0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_gs_workstation_status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lasthwscan&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;operating_system_name_and0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BuildNumber0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ProvisionMode0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Enteprise Provisioning Mode&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ProvisionMode0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Small Business Provisioning Mode&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Unknown (&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;cast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ProvisionMode0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;)&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ProvisionMode&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cm"&gt;/* https://msdn.microsoft.com/en-us/library/dd339697.aspx */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ProvisionState0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Factory Setup Mode&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ProvisionState0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Set-up Mode&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ProvisionState0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Operational Mode&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Unknown (&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;cast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ProvisionState0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;)&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ProvisionState&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cm"&gt;/* https://msdn.microsoft.com/en-us/library/dd339697.aspx */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;6.0.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;6.1.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;6.2.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;7.0.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;7.1.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;8.0.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;8.1.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;9.0.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;9.1.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;9.5.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;10.0.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;11.0.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;11.5.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AMT0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;11.6.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;when&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BuildNumber0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Impacted - Unresolved (Build &amp;lt; 3000)&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Impacted - Resolved (Build &amp;gt;= 3000)&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Not an impacted version&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Impact&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cm"&gt;/* https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00075&amp;amp;languageid=en-fr */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_AMT_AGENT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResourceID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_gs_workstation_status&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_gs_workstation_status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_gs_computer_system&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_gs_computer_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_PC_BIOS&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;33&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_PC_BIOS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResourceID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;34&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_COMPUTER_SYSTEM_PRODUCT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;35&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_COMPUTER_SYSTEM_PRODUCT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResourceID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;36&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_gs_workstation_status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lasthwscan&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;GetDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Remove Recent Printers from Chrome Preferences File (PoSH)</title><link>https://christopherkibble.com/post/remove-recent-printers-chrome-preferences-file-posh/</link><pubDate>Tue, 25 Apr 2017 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/remove-recent-printers-chrome-preferences-file-posh/</guid><description>
&lt;p&gt;Chrome does not remove &amp;quot;Recent Printers&amp;quot; from the print option box when a user or an administrator deletes a printer from the machine. This can cause problems when a printer is removed by policy or is updated with a new print server name, but a user continues totry and print to the old server. This script will remove the printer from the PREFERENCES file. You can provide no printer list and all Recent Printers will be removed, or you can specific a specific printer.&lt;/p&gt;</description></item><item><title>Recursively Query User View in Configuration Manager</title><link>https://christopherkibble.com/post/recursive-query-v_r_user-sccm/</link><pubDate>Fri, 27 May 2016 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/recursive-query-v_r_user-sccm/</guid><description>
&lt;p&gt;The following query will allow you to search the view &lt;code&gt;v_R_user&lt;/code&gt; in the Microsoft Configuration Manager database so that you can identify a manager and then find everyone who works for that manager all the way down the tree. I've found this useful in the past for joining with other information in the database to identify all the systems used by a specific group within an organization. This requires that you collect the manager name during user discovery. You can remove any fields that you don't discover. It also requires that you have managers identified in Active Directory for discovery.&lt;/p&gt;</description></item><item><title>Video: How to use VLOOKUP in Microsoft Excel</title><link>https://christopherkibble.com/post/video-how-to-use-vlookup-in-microsoft-excel/</link><pubDate>Wed, 09 Mar 2016 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/video-how-to-use-vlookup-in-microsoft-excel/</guid><description>
&lt;p&gt;In this video demo I'm going to show you how use &lt;code&gt;VLOOKUP&lt;/code&gt; on a table in Excel.&lt;/p&gt;
&lt;div class="video"&gt;
&lt;iframe src="https://www.youtube.com/embed/cz9-r48o8A8?controls=1&amp;rel=0" loading="lazy"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;In order to see the text clearly, please set the video to one of the two HD options using the gear icon.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="https://christopherkibble.com/documents/Using-the-VLOOKUP-Function.xlsx"&gt;Attachment: Using the VLOOKUP Function&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Citrix - Installation Error DVCRenderingAdapter.dll Failed to Register</title><link>https://christopherkibble.com/post/citrix-installation-error-dvcrenderingadapter-dll-failed-to-register/</link><pubDate>Wed, 02 Mar 2016 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/citrix-installation-error-dvcrenderingadapter-dll-failed-to-register/</guid><description>
&lt;p&gt;I recently was troubleshooting the following error on roughly 400 systems that we were deploying the Citrix Receiver v14 to:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="Citrix Receiver DVCRenderingAdapter failed to register, Image Credit Christopher Cable from Citrix Discussion Forum"
class="image_figure image_internal image_unprocessed"
src="https://christopherkibble.com/images/Citrix-Receiver-DVCRenderingAdapter-failed-to-register.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;CustomAction +DVCRenderingAdapter.dll.827545C6_7013_4DE1_8E6C_DAEE4C57F54A returned actual error code -2147319780 (note this may not be 100% accurate if translation happened inside sandbox)MSI (s) (5C:9C) [10:08:57:789]: Product: Online Plug-in -- Error 1904. Module C:\Program Files\Citrix\ICA Client\DVCRenderingAdapter.dll failed to register.  HRESULT -2147319780.  Contact your support personnel. Error 1904. Module C:\Program Files\Citrix\ICA Client\DVCRenderingAdapter.dll failed to register.  HRESULT -2147319780.  Contact your support personnel.&lt;/p&gt;</description></item><item><title>PowerShell Script to Report SCCM DP Disk Space</title><link>https://christopherkibble.com/post/powershell-script-to-report-sccm-dp-disk-space/</link><pubDate>Tue, 27 Oct 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/powershell-script-to-report-sccm-dp-disk-space/</guid><description>
&lt;p&gt;I wrote the following script to quickly output how much disk space my SCCM Distribution Points consumed.  If you're not running a CAS, you'll want to change line 21 to point to your primary.  This requires that you have the Configuration Manager console installed on the machine.&lt;/p&gt;
&lt;p&gt;It's not pretty but it did the trick.  I'm certainly open to suggestions in the comments.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Script Created by Christopher Kibble&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# www.ChristopherKibble.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# You are free to copy, modify, distribute, etc. as you see fit. A little recognition would be appreciated, however ;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Clear-Host&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Import-Module&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$Env:SMS_ADMIN_UI_PATH&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Substring&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nv"&gt;$Env:SMS_ADMIN_UI_PATH&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;\ConfigurationManager.psd1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Create Empty Array to Store Results&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$allDisks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="vm"&gt;@&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Get DP List from CAS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Write-Host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Getting Distribution Point list&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$startPath&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-Location&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;&lt;span class="n"&gt;CAS&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$dp&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-CMDistributionPoint&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$count&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$dp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Count&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Loop Over DPs to Get Disk Info&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$i&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$dp&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="p"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$dpName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;NetworkOSPath&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$dpName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dpName&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="py"&gt;Substring&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nv"&gt;$dpName&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;33&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;34&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Progress&lt;/span&gt; &lt;span class="n"&gt;-Activity&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Collecting Disk Information&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Status&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$dpName&lt;/span&gt;&lt;span class="s2"&gt; (&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$count&lt;/span&gt;&lt;span class="s2"&gt;)&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-PercentComplete&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$count&lt;/span&gt;&lt;span class="p"&gt;)*&lt;/span&gt;&lt;span class="mf"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;35&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;36&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$disks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-WmiObject&lt;/span&gt; &lt;span class="n"&gt;Win32_LogicalDisk&lt;/span&gt; &lt;span class="n"&gt;-Filter&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;DriveType=&amp;#39;3&amp;#39;&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-ComputerName&lt;/span&gt; &lt;span class="nv"&gt;$dpName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;37&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;38&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$disks&lt;/span&gt; &lt;span class="o"&gt;-eq&lt;/span&gt; &lt;span class="vm"&gt;$null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;39&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Error Connecting to &lt;/span&gt;&lt;span class="nv"&gt;$dpName&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;40&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;41&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$allDisks&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="nv"&gt;$disks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;42&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;43&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;44&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;45&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;46&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$allDisks&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="p"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;47&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;48&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$pctFree&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Freespace&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Size&lt;/span&gt;&lt;span class="p"&gt;)*&lt;/span&gt;&lt;span class="mf"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;49&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$pctFree&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$pctFree&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;50&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;51&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$sizeGB&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Size&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;52&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$sizeGB&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sizeGB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;53&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;54&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$freeGB&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FreeSpace&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;55&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$freeGB&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$freeGB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;56&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;57&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$_&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="n"&gt;PctFree&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$pctFree&lt;/span&gt; &lt;span class="n"&gt;-Force&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;58&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$_&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="n"&gt;SizeGB&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$sizeGB&lt;/span&gt; &lt;span class="n"&gt;-Force&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;59&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$_&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Add-Member&lt;/span&gt; &lt;span class="n"&gt;-MemberType&lt;/span&gt; &lt;span class="n"&gt;NoteProperty&lt;/span&gt; &lt;span class="n"&gt;-Name&lt;/span&gt; &lt;span class="n"&gt;FreeGB&lt;/span&gt; &lt;span class="n"&gt;-Value&lt;/span&gt; &lt;span class="nv"&gt;$freeGB&lt;/span&gt; &lt;span class="n"&gt;-Force&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;60&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;61&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;62&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;63&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$allDisks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$allDisks&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;SizeGB&lt;/span&gt; &lt;span class="o"&gt;-gt&lt;/span&gt; &lt;span class="mf"&gt;10&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;64&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;65&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Write-Host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;All Disks:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;66&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$allDisks&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;FT &lt;/span&gt;&lt;span class="n"&gt;PSComputerName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DeviceID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;SizeGB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;FreeGB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;PctFree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;67&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;68&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Write-Host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Disks with 20% or Less Free Space:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;69&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$allDisks&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;PctFree&lt;/span&gt; &lt;span class="o"&gt;-le&lt;/span&gt; &lt;span class="mf"&gt;20&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Sort &lt;/span&gt;&lt;span class="n"&gt;PctFree&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;FT &lt;/span&gt;&lt;span class="n"&gt;PSComputerName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DeviceID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;SizeGB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;FreeGB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;PctFree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;70&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;71&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Write-Host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Disks with 10GB or Less Free Space:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;72&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$allDisks&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;FreeGB&lt;/span&gt; &lt;span class="o"&gt;-le&lt;/span&gt; &lt;span class="mf"&gt;10&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Sort &lt;/span&gt;&lt;span class="n"&gt;FreeGB&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;FT &lt;/span&gt;&lt;span class="n"&gt;PSComputerName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;DeviceID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;SizeGB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;FreeGB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;PctFree&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Video: Text Manipulation in Microsoft Excel</title><link>https://christopherkibble.com/post/video-text-manipulation-in-microsoft-excel/</link><pubDate>Mon, 19 Oct 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/video-text-manipulation-in-microsoft-excel/</guid><description>
&lt;p&gt;In this video demo I'm going to show you how concatenate strings, as well as the functions LEFT, MID, RIGHT, FIND, TRIM, and LEN, and then how to use them together to get what it is you're looking for. At the end of the demo, we'll touch on the IF function and show you how you can manipulate the table based on some set of criteria.&lt;/p&gt;
&lt;div class="video"&gt;
&lt;iframe src="https://www.youtube.com/embed/vsoHnUKrlq4?controls=1&amp;rel=0" loading="lazy"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;In order to see the text clearly, please set the video to one of the two HD options using the gear icon.&lt;/p&gt;</description></item><item><title>Seven Geeky Essentials for my European Trip</title><link>https://christopherkibble.com/post/seven-geeky-essentials-for-my-european-trip/</link><pubDate>Tue, 06 Oct 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/seven-geeky-essentials-for-my-european-trip/</guid><description>
&lt;p&gt;I was fortunate enough this year to be able to take a considerable amount of time off and explore some absolutely stunning regions in Europe.  This wasn't one of those &amp;quot;disconnect from the world&amp;quot; trips, however.  While I did remove my office mail profile, Microsoft Lync, and my work OneDrive from my phone, I still stayed connected with friends a family through my phone, ipad, and DSLR.  Before leaving, I did a little research, a little downloading, and some purchasing so that I didn't end up disconnected.  Below, I've described my seven geeky essentials for getting through around ten European hotels across four countries.&lt;/p&gt;</description></item><item><title>PowerShell Script to Output GPO Versions across DCs</title><link>https://christopherkibble.com/post/powershell-script-to-output-gpo-versions-across-dcs/</link><pubDate>Fri, 02 Oct 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/powershell-script-to-output-gpo-versions-across-dcs/</guid><description>
&lt;p&gt;I wrote the following PowerShell script so that I could easily watch my GPO changes replicate around the globe, letting me know when I could have someone at a specific site update policy when new policies or changes were rolled out. To use, just replace &lt;code&gt;$gpoGUID = &amp;quot;{12345678-1234-5678-9123-ABCDEFEDCBA0}&amp;quot;&lt;/code&gt; with the GUID of the policy you want to check on.  You can find the GPO GUID in the properties of the GPO and on the details page in the Group Policy Management Console.&lt;/p&gt;</description></item><item><title>Resolving VMWare Error "There are no un-bridged host network adapters" after Windows 10 Upgrade</title><link>https://christopherkibble.com/post/resolving-vmware-error-there-are-no-un-bridged-host-network-adapters-after-windows-10-upgrade/</link><pubDate>Mon, 17 Aug 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/resolving-vmware-error-there-are-no-un-bridged-host-network-adapters-after-windows-10-upgrade/</guid><description>
&lt;p&gt;After upgrading to Windows 10, all of my VMWare Professional v10.x guest machines lost their connection to the network. Taking a look at their network connections, I found that I'd lost the default vmnet0 network, and trying to add it back as a bridged network threw the error &amp;quot;There are no un-bridged host network adapters&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="vmware vne restore defaults"
class="image_figure image_internal image_unprocessed"
src="https://christopherkibble.com/images/vmware-vne-restore-defaults.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Looking online, there were reports of Anti-Virus conflicts and some network cards not being supported, but I was pretty confident that neither of these were the issue since the bridged connection worked fine in Windows 8.1. I found that restoring the default within the Virtual Network Editor resolved this issue.&lt;/p&gt;</description></item><item><title>First Impressions of Windows 10</title><link>https://christopherkibble.com/post/first-impressions-of-windows-10/</link><pubDate>Mon, 10 Aug 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/first-impressions-of-windows-10/</guid><description>
&lt;p&gt;Just shy of a week ago, a few days after Microsoft released Windows 10 to the public, I downloaded and installed it.  I had run some pre-release versions in Virtual Machines and on a test laptop over the last few months, but this was my first venture into upgrading with my everyday machine, and the one I'm writing from now.  With a single exception, which I'll mention below, the upgrade went completely smoothly.  I didn't lose any data, and all of my applications continue to function perfectly. In the post below, I'm going to discuss how I upgraded, and seven of the things that have come up as &amp;quot;first impressions&amp;quot;.  Specifically, things that have changed since Windows 8.1.&lt;/p&gt;</description></item><item><title>Using WinDirStat to Cleanup Disk Space</title><link>https://christopherkibble.com/post/using-windirstat-to-cleanup-disk-space/</link><pubDate>Wed, 01 Jul 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/using-windirstat-to-cleanup-disk-space/</guid><description>
&lt;p&gt;&lt;a href="http://windirstat.info/"&gt;WinDirStat&lt;/a&gt;, by the company of either the same name or of no name, is in my opinion one of the best tools for quickly understanding where all the space on your hard disk has gone.  After scanning your disk, it graphically reports back to you a Windows Explorer like view of your directory structure sorted by space consumed, a list of file extensions with how much space each consumes, and a colored block view that is representative of the size of individual files.
 &lt;/p&gt;</description></item><item><title>The Sonos Music Ecosystem</title><link>https://christopherkibble.com/post/the-sonos-music-ecosystem/</link><pubDate>Tue, 23 Jun 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/the-sonos-music-ecosystem/</guid><description>
&lt;p&gt;When I purchased my first Sonos device back in 2012, I had been looking for something like this system for at months. I didn't seem to think that my requirements were that out of the ordinary, but I had a hard time finding something that met all my needs at a price that I considered reasonable. What I'm looking for is an easy way to share all kinds of music across multiple speakers in multiple rooms and control it all easily. I wanted the ability for them to stay completely in sync or to all be playing something independently.&lt;/p&gt;</description></item><item><title>Finding the Create &amp; Modify Dates of Google Calendar Event</title><link>https://christopherkibble.com/post/finding-the-create-modify-dates-of-google-calendar-event/</link><pubDate>Mon, 15 Jun 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/finding-the-create-modify-dates-of-google-calendar-event/</guid><description>
&lt;p&gt;While using shared Google calendars is great way to keep yourself, your family, or your groups organized, they lack any type or real auditing at the event level.  Specifically, I often need to find out &lt;em&gt;when&lt;/em&gt; an event was created or modified.  While this isn't available today through the GUI, it is available under the hood.  Below I'll show you step by step how to find this data.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Within Google Calendar, drop down the settings gear and select Calendar Settings.&lt;/li&gt;
&lt;li&gt;Click on the Calendars link, and then click on the calendar you'd like to manage.&lt;/li&gt;
&lt;li&gt;Click on the iCal button that uses the private address of your calendar&lt;/li&gt;
&lt;li&gt;Click on the Private Address link that pops up.&lt;/li&gt;
&lt;li&gt;Save the ICS file and open it using Notepad or your favorite text editor.  Within the file, search for the item that you're looking for.  It will likely be labeled as &amp;quot;Summary&amp;quot;.  Somewhere above that line will be a BEGIN:VEVENT, and slightly below will be END:VEVENT.  In between these two lines is your calendar event.  Within this event will be your create and modify dates in YYYY MM DD format, as shown below.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="Google Calendar Event Text"
class="image_figure image_internal image_unprocessed"
src="https://christopherkibble.com/images/GoogleCalendarEventText.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>SCCM SQL Query to Determine Installed Browsers</title><link>https://christopherkibble.com/post/sccm-sql-query-to-determine-installed-browsers/</link><pubDate>Mon, 08 Jun 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/sccm-sql-query-to-determine-installed-browsers/</guid><description>
&lt;p&gt;I recently wrote the following SQL Query to help identify which browsers are installed across our environment.  A straight Add/Remove Programs (v_AddRemovePrograms) query didn't really return the data in such a way that made it easy to determine major version of Firefox or Chrome, and doesn't include Internet Explorer since that's not listed in Add/Remove Programs.  This view alone also does not capture user based installations of Chrome.  You may need to modify slightly for your environment.&lt;/p&gt;</description></item><item><title>Creating an SCCM Collection from an List of Computers in Excel</title><link>https://christopherkibble.com/post/creating-an-sccm-collection-from-an-list-of-computers-in-excel/</link><pubDate>Wed, 03 Jun 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/creating-an-sccm-collection-from-an-list-of-computers-in-excel/</guid><description>
&lt;p&gt;I frequently use this trick to manage collections of computers in SCCM where the original list comes from Excel, or from a query of another system that I can dump into Excel.  Doing it this way, you don't have to rely on adding computers one at a time to a collection query or dumping systems into tools like the the &lt;a href="http://myitforum.com/myitforumwp/2012/05/07/config-manager-2012-right-click-tools/"&gt;ConfigMgr 2012 Right Click Tools&lt;/a&gt; (which by the way are awesome).  &lt;/p&gt;</description></item><item><title>Use Ninite to Install Your Windows Apps</title><link>https://christopherkibble.com/post/use-ninite-to-install-your-windows-apps/</link><pubDate>Tue, 26 May 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/use-ninite-to-install-your-windows-apps/</guid><description>
&lt;p&gt;As it's been around for years, I'm still surprised at how often I find someone who hasn't at least heard of &lt;a href="http://www.ninite.com/"&gt;Ninite&lt;/a&gt;.  This application can possibly save you hours of setup and configuration each time you buy a new computer, or rebuild your existing one.  Ninite aggregates the most popular freeware on to a single web page, let's you hand select the ones you need, and then custom builds an installer for those applications.&lt;/p&gt;</description></item><item><title>Google Domains Beta Review</title><link>https://christopherkibble.com/post/google-domains-beta-review/</link><pubDate>Mon, 18 May 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/google-domains-beta-review/</guid><description>
&lt;p&gt;I've had the opportunity to play in the Google Domains Beta program over the last two months.  I submitted my name into the program sometime in late 2014 and was accepted (along with a lot of other people) in December.  I moved my first domain over from my current registrar in February 2015 and registered my first new domain through them in March 2015.  In this post, I'll discuss my experience transferring in an existing domain, registering a new domain, how the service works (with screen shots) and what I like and don't like about it.&lt;/p&gt;</description></item><item><title>SCCM 2012 DP Errors: SendFiles Failed</title><link>https://christopherkibble.com/post/sccm-2012-dp-errors-sendfiles-failed/</link><pubDate>Tue, 12 May 2015 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/sccm-2012-dp-errors-sendfiles-failed/</guid><description>
&lt;p&gt;One of my distribution points recently stopped getting DP updates.  I tried my normal troubleshooting steps - creating a new package, checking disk space, source folder permissions, server reboot, etc., but no dice.  I reviewed the DISTMGR.LOG on the primary site responsible for the distribution point, and found the following:&lt;/p&gt;
&lt;p&gt;UpdatePackageData: Failed to get class of SMS_PackagesInContLib. Error code: 0x80041002 SMS_DISTRIBUTION_MANAGER 5/12/2015 6:46:04 PM 20164 (0x4EC4)
Failed to update package share data into WMI on the distribution point SMS_DISTRIBUTION_MANAGER 5/12/2015 6:46:05 PM 20164 (0x4EC4)&lt;/p&gt;</description></item><item><title>Setup was unable to compile Sql CE script file CIStateDBUpgrade.sqlce during CCM Setup</title><link>https://christopherkibble.com/post/setup-unable-compile-sql-ce-script-file/</link><pubDate>Wed, 13 Aug 2014 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/setup-unable-compile-sql-ce-script-file/</guid><description>
&lt;p&gt;Recently I was troubleshooting a Windows 7 Service Pack 1 system where the CCM Client would not install manually or via push. The following was reported in the CCMSETUP.LOG:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;MSI: Setup was unable to compile Sql CE script file C:\Windows\CCM\CIStateDBUpgrade.sqlce.
The error code is 87D00244.
MSI: Action 13:27:05: Rollback. Rolling back action:
File C:\Windows\ccmsetup\{181D79D7-1115-4D96-8E9B-5833DF92FBB4}\client.msi installation failed. Error text: ExitCode: 1603
Action: CcmCompileSqlCEScripts.
ErrorMessages:
Setup was unable to compile Sql CE script file C:\Windows\CCM\CIStateDBUpgrade.sqlce.
The error code is 87D00244.&lt;/p&gt;</description></item><item><title>SCCM Query to Get Screen Resolutions</title><link>https://christopherkibble.com/post/sccm-query-get-screen-resolutions/</link><pubDate>Mon, 04 Aug 2014 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/sccm-query-get-screen-resolutions/</guid><description>
&lt;p&gt;I wrote the following queries to find the video resolutions used by clients reporting into SCCM. They currently only look at Windows Workstations 6.x (excludes servers, and also anything older than Windows Vista or whatever v7 ends up being), and only those who have submitted a hardware inventory in the last 30 days. Feel free to steal &amp;amp; modify.&lt;/p&gt;
&lt;p&gt;This query lists every card with resolution:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/* List of Video Cards with Resolutions */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AdapterCompatibility0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CurrentHorizontalResolution0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CurrentVerticalResolution0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;cast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CurrentHorizontalResolution0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;x&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;cast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CurrentVerticalResolution0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;varchar&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ResolutionFinal&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Operating_System_Name_and0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_VIDEO_CONTROLLER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResourceID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_WORKSTATION_STATUS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hw&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResourceID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CurrentHorizontalResolution0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;vid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CurrentVerticalResolution0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Operating_System_Name_and0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;%Workstation%6.%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;hw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LastHWScan&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;GetDate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This query sums up the resolutions reported in the previous query:&lt;/p&gt;</description></item><item><title>Deleting Inactive AD Computers from SCCM 2012</title><link>https://christopherkibble.com/post/deleting-inactive-ad-computers-sccm-2012/</link><pubDate>Mon, 28 Jul 2014 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/deleting-inactive-ad-computers-sccm-2012/</guid><description>
&lt;p&gt;I wrote the following script to find inactive computers in Active Directory and then find &amp;amp; delete them from SCCM. Feel free to use &amp;amp; abuse as you see fit, but always run through a test environment first. My version makes sure to target only Windows Operating Systems, and excludes anything with Server in the caption - you'll want to adjust the filter as needed in your specific environment.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-Powershell" data-lang="Powershell"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Import Necessary Modules &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Christopher Kibble, July 2014&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Script will find inactive computers in AD (with defined filter) based on variable number of days since last logon timestamp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# and then will scour the CAS to remove those objects from AD. Please note that the Resource IDs may not be cleared from all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# tables until a site maintenance task runs.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Credits:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# - Daniel Ratliff and &amp;#34;agressiv&amp;#34; (http://social.technet.microsoft.com/Forums/en-US/ff9a91f7-3df8-4e09-a0a5-9eff297ca0c9/powershell-equivalent-to-deleting-a-sccm-computer-object)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# - &amp;#34;TSO&amp;#34; (http://gallery.technet.microsoft.com/scriptcenter/Get-Inactive-Computer-in-54feafde)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Requires Configuration Manager Console (*Change as appropriate*)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;import-module&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Requires Remote Server Administration Tools (RSAT)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;import-module&lt;/span&gt; &lt;span class="n"&gt;activedirectory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# 20 Weeks Offline considered inactive&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$DaysInactive&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;140&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Date that is DaysInactive Ago&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$time&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Get-Date&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="py"&gt;Adddays&lt;/span&gt;&lt;span class="p"&gt;(-(&lt;/span&gt;&lt;span class="nv"&gt;$DaysInactive&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Get all AD computers with lastLogonTimestamp less than our time that are Windows clients but not servers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$oldComputers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-ADComputer&lt;/span&gt; &lt;span class="n"&gt;-Filter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;LastLogonTimeStamp&lt;/span&gt; &lt;span class="o"&gt;-lt&lt;/span&gt; &lt;span class="nv"&gt;$time&lt;/span&gt; &lt;span class="o"&gt;-and&lt;/span&gt; &lt;span class="n"&gt;OperatingSystem&lt;/span&gt; &lt;span class="o"&gt;-notlike&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*Server*&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;-and&lt;/span&gt; &lt;span class="n"&gt;OperatingSystem&lt;/span&gt; &lt;span class="o"&gt;-like&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*Windows*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$i&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$iDeleted&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$iSkipped&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$max&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$oldComputers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;count&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;33&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Loop Over Each Computer and Delete from SCCM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;34&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$oldComputers&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;ForEach-Object&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;35&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;36&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$pct&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$max&lt;/span&gt;&lt;span class="p"&gt;)*&lt;/span&gt;&lt;span class="mf"&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;37&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;Write-Progress&lt;/span&gt; &lt;span class="n"&gt;-Activity&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Deleting Objects from SCCM - &lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="s2"&gt;.Name&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Status&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt; of &lt;/span&gt;&lt;span class="nv"&gt;$max&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-percentcomplete&lt;/span&gt; &lt;span class="nv"&gt;$pct&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;38&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;# **** CHANGE THIS LINE BELOW TO MATCH YOUR SERVER NAME &amp;amp; SITE CODE **** &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;39&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$ResourceObject&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Get-WmiObject&lt;/span&gt; &lt;span class="n"&gt;-ComputerName&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;YOUR_SCCM_SERVER_NAME&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Namespace&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ROOT\SMS\site_CAS&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Query&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;SELECT * FROM SMS_R_SYSTEM WHERE Name=&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;$(&lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;40&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="nv"&gt;$ResourceObject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;41&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$iSkipped&lt;/span&gt;&lt;span class="p"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;42&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;43&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$ResourceObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;PSBase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Delete&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;44&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;$iDeleted&lt;/span&gt;&lt;span class="p"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;45&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;46&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;47&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;48&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Write Status&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;49&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;write-host&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$iDeleted&lt;/span&gt;&lt;span class="s2"&gt; Hosts Deleted and &lt;/span&gt;&lt;span class="nv"&gt;$iSkipped&lt;/span&gt;&lt;span class="s2"&gt; Hosts Skipped&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Querying for Advertisement Status in SCCM</title><link>https://christopherkibble.com/post/querying-advertisement-status-sccm/</link><pubDate>Mon, 21 Jul 2014 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/querying-advertisement-status-sccm/</guid><description>
&lt;p&gt;The following query can be run in SQL against your CAS or Primary Site to collect the status of one or more advertisements. I find it useful to run this instead of the built-in reports because I can more easily link out to other sources, in this case my Active Directory Users table (&lt;code&gt;v_r_user&lt;/code&gt;) and add/drop data as needed.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;computer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Netbios_name0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Host Name&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LastHWScan&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Last HW Scan&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AdvertisementID&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Advertisement ID&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AdvertisementName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Advertisement Name&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pkg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Package Name&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ProgramName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Program Name&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LastAcceptanceStatusTime&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Adv. Acceptance Status Time&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LastAcceptanceStateName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Adv. Acceptance State&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LastAcceptanceMessageIDname&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Adv. Acceptance Status&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LastStatusmessageIDName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Adv. Status Message&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LastStatusTime&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Adv. State Time&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LaststateName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Adv. State&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LastExecutionResult&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Adv. Last Result Code&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LastExecutionContext&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Adv. Last User Context&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_User_Name0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Top User Full Name&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Mail0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Top User Email&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_Advertisement&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_Package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pkg&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PackageID&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pkg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PackageID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_ClientAdvertisementStatus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AdvertisementID&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AdvertisementID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_r_system&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;computer&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;computer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Resourceid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;adState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_WORKSTATION_STATUS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;computer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resourceid&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_GS_SYSTEM_CONSOLE_USAGE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;usage&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;computer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResourceID&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResourceID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_R_User&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TopConsoleUser0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Unique_User_Name0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ad&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AdvertisementID&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cm"&gt;/* Use subquery to make it easier to find multiple advertisements,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; or to swap out to find pacakges, or any other criteria */&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;33&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;AdvertisementID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;34&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;v_advertisement&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;35&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;advertisementname&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;%Lync%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;36&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Looping over User Profile Directories</title><link>https://christopherkibble.com/post/looping-user-profile-directories/</link><pubDate>Sun, 27 Apr 2014 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/looping-user-profile-directories/</guid><description>
&lt;p&gt;I wrote the following script a few years ago to help me loop over all user profiles to make changes to a configuration file that was stored there.  The target systems were all Windows XP and Windows 7 at the time, but I couldn't be certain where the profiles would be (C:\Documents and Settings, C:\Users, D:\Users, etc), and I wanted to make sure to hit only valid profiles and not old copies such as username.old, that were left behind from troubleshooting.&lt;/p&gt;</description></item><item><title>Microsoft Volume Activation Management Tool 3.0 (VAMT 3.0) Shared Setup - Step by Step</title><link>https://christopherkibble.com/post/vamt-3-0-shared-setup-step-by-step/</link><pubDate>Thu, 17 Apr 2014 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/vamt-3-0-shared-setup-step-by-step/</guid><description>
&lt;p&gt;The &lt;strong&gt;Microsoft Volume Activation Management Tool&lt;/strong&gt; (VAMT) is an administrative console meant to make it easier for IT Staff to remotely manage the Microsoft licenses on devices on the network.  It can deploy and activate keys for products like Windows (both desktop &amp;amp; server platforms) and Microsoft Office.  While the previous version of VAMT was a standalone MMC where you could optionally store data in flat files, this version now uses a SQL backend to store both your product keys in, as well as computers that you've inventoried.  This guide will attempt to walk you through the installation of VAMT 3.0 and setup of your VAMT database.&lt;/p&gt;</description></item><item><title>Troubleshooting Windows Installer Self Heal Issues</title><link>https://christopherkibble.com/post/troubleshooting-windows-installer-self-heal-issues/</link><pubDate>Fri, 17 Jan 2014 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/troubleshooting-windows-installer-self-heal-issues/</guid><description>
&lt;p&gt;While there are plenty of benefits to vendors using the Windows Installer, if you've used Windows long enough, and you've installed enough applications, you've probably been plagued by messages such as these:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="Windows Installer Self Heal - Prompt for File"
class="image_figure image_internal image_unprocessed"
src="https://christopherkibble.com/images/windowsinstallerselfhealmissingfile.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;picture&gt;
&lt;img
loading="lazy"
decoding="async"
alt="Windows Installer Self Heal Dialog Box"
class="image_figure image_internal image_unprocessed"
src="https://christopherkibble.com/images/WindowsInstallerSelfHeal.png"
/&gt;
&lt;/picture&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;In this post I'm going to talk about why this happens, and steps you can take to resolve it.&lt;/p&gt;</description></item><item><title>Fixing Error “Word Cannot Publish This Post” When Publishing from Word</title><link>https://christopherkibble.com/post/fixing-error-word-publish-post-publishing-word/</link><pubDate>Sat, 11 Jan 2014 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/fixing-error-word-publish-post-publishing-word/</guid><description>
&lt;p&gt;I recently had to troubleshoot an issue where a number of people were unable to publish to their blog from Microsoft Word 2010. They would get the error &lt;strong&gt;Word cannot publish this post&lt;/strong&gt;, and pressing CTRL+SHIFT+I revealed error 701797 in the dialog box. The same error occurred on both SharePoint 2010 and WordPress. There are a number of posts online which attempt to identify solutions for this problem; however none of them worked for me. I also found that there was no one place where all of the possible solutions are together, and I had to find many of the links in the &lt;a href="https://archive.org/web/"&gt;Wayback Machine&lt;/a&gt;. So, this is my attempt at consolidating the solutions, as well as including my own.&lt;/p&gt;</description></item><item><title>Running a Command Against a List of Machines in Limited Parallel</title><link>https://christopherkibble.com/post/running-command-list-machines-limited-parallel/</link><pubDate>Tue, 07 Jan 2014 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/running-command-list-machines-limited-parallel/</guid><description>
&lt;p&gt;I've often had the need to take a list of computers or servers and run the same command against all of them, and then take some result from that command to report back on. For example, I may want to ping a list of machines and log the response times, or perhaps check the status of BitLocker using manage-bde. Typically, I would have two ways to do this:&lt;/p&gt;
&lt;h1 id="the-serial-batch-file-method"&gt;The serial batch file method&lt;/h1&gt;
&lt;p&gt;In this method, you would create a batch file that did what you wanted and the command would get run against each machine one at a time. Maybe I generated the list using Excel and had a file filled with &amp;quot;&lt;em&gt;ping ComputerA &amp;gt;&amp;gt; ComputerA.txt&lt;/em&gt;&amp;quot; (and so on for each computer), or maybe I put the list in a text file and used a FOR loop to loop over each one. The pro of this approach is that it's easy, but the con is that if it's a long list, it's going to take a long time doing one computer at a time.&lt;/p&gt;</description></item><item><title>Adjusting DCOM Settings via Script</title><link>https://christopherkibble.com/post/adjusting-dcom-settings-via-script/</link><pubDate>Wed, 09 Sep 2009 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/adjusting-dcom-settings-via-script/</guid><description>
&lt;p&gt;This post was previously released under a different blog and is being republished by me below. That site is no longer available. I am the original author.&lt;/p&gt;
&lt;p&gt;I was recently tasked with adjusting the DCOM Security Settings (DCOM: Machine Access Restrictions and DCOM: Machine Launch Restrictions) in the local security policy on a number of computers. These can be changed manually by opening the Local Security Policy and browsing to Local Policies and then Security Options, but it needed to be more automated than that and needed to be rolled out to a few hundred Windows XP Computers.&lt;/p&gt;</description></item><item><title>Updated PingCell Function for Excel</title><link>https://christopherkibble.com/post/updated-pingcell-function-excel/</link><pubDate>Mon, 24 Aug 2009 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/updated-pingcell-function-excel/</guid><description>
&lt;p&gt;This post was previously released under a different blog and is being republished by me below. That site is no longer available. I am the original author.&lt;/p&gt;
&lt;p&gt;I’ve updated my Microsoft Excel PingCell code that I published previously. The new function returns all results from Win32_PingStatus back to Excel. You can now ping and choose the results you’d like to see returned (example below code). The Win32_PingStatus class is documented on &lt;a href="http://msdn.microsoft.com/en-us/library/aa394350%28VS.85%29.aspx"&gt;Microsoft’s Website&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Creating an SMS 2003 CCR within Excel</title><link>https://christopherkibble.com/post/creating-sms-2003-ccr-within-excel/</link><pubDate>Tue, 07 Jul 2009 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/creating-sms-2003-ccr-within-excel/</guid><description>
&lt;p&gt;This post was previously released under a different blog and is being republished by me below. That site is no longer available. I am the original author.&lt;/p&gt;
&lt;p&gt;I created the following function to create Microsoft SMS 2003 Client Configuration Requests from within Excel and dump them all out into a temporary directory for me to copy to the SMS inbox. For those that are unaware, you can “ask” SMS 2003 to remotely install the client by putting a CCR file into the INBOXES\CCR.BOX folder on the SMS Site server. Basically you just select your range of computer names, execute this sub, and it’ll let you know where the CCRs were generated (in a temporary folder). Just take a peek, copy them out to the CCR.BOX folder and (if SMS is setup correctly) you’re good to go!&lt;/p&gt;</description></item><item><title>Problems with Notepad++ FTP_Synchronize Plugin</title><link>https://christopherkibble.com/post/problems-using-notepad-ftp_synchronize-plugin-vista/</link><pubDate>Sun, 14 Jun 2009 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/problems-using-notepad-ftp_synchronize-plugin-vista/</guid><description>
&lt;p&gt;I was excited to find out recently that Notepad++ has a plug-in that will allow you to edit files on an FTP server. The plug-in, which has come with Notepad++ since v4.7, is FTP_Synchronize. Unfortunately, although I’m on Notepad++ 5.2, the plug-in did not work out of the box for me.&lt;/p&gt;
&lt;p&gt;While I could connect to and browse my FTP server, any attempt to download a file resulted in the error “Unable to create directory for file C”. After browsing the forums and googling around, it seems that some people were able to upgrade to the latest unstable releases from CVS or reinstall Notepad++ to resolve the issue. My solution for this problem was to run Notepad++ as an administrator. When running it as admin, I found that it created the folder &lt;code&gt;C:\program files\notepad++\plugins\FTP\_synchronize&lt;/code&gt;. This folder is where files that were being edited are cached.&lt;/p&gt;</description></item><item><title>Generating a List of Values in Excel (VBA)</title><link>https://christopherkibble.com/post/generating-list-values-excel-vba/</link><pubDate>Sat, 09 May 2009 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/generating-list-values-excel-vba/</guid><description>
&lt;p&gt;I frequently find myself needing to create lists of values I have in Excel in one cell. For example, I might get have a column of IDs and I need to create a comma delimited list of them to put into a SQL Query. I have the following function I put in an XLA that loads with Excel to generate these lists.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-VB.NET" data-lang="VB.NET"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt; &lt;span class="nf"&gt;GenerateList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Range&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;Optional&lt;/span&gt; &lt;span class="n"&gt;strDelimiter&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;, &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;rCell&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Range&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;strList&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;For&lt;/span&gt; &lt;span class="k"&gt;Each&lt;/span&gt; &lt;span class="n"&gt;rCell&lt;/span&gt; &lt;span class="ow"&gt;In&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;strList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strList&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;rCell&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Value&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;strDelimiter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;strList&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;strList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Left&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strList&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strList&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strDelimiter&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;GenerateList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;strList&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now in any cell I can enter something like &lt;code&gt;=GenerateList(A1:A250,”;”)&lt;/code&gt; and have a semi-colan delimited list of the values in cells A1 – A250. If you cannot tell from the function, if you do not include a delimiter parameter (the second one), it will default to “comma space”.&lt;/p&gt;</description></item><item><title>Microsoft Office Registered User Setup via Script</title><link>https://christopherkibble.com/post/microsoft-office-registered-user-setup-via-script/</link><pubDate>Tue, 05 May 2009 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/microsoft-office-registered-user-setup-via-script/</guid><description>
&lt;p&gt;The following AutoIt script will allow you to set the Microsoft Office Registered User Name, Initials, and Company via a script by getting the name information from Active Directory and modifying the keys . This is useful in corporate environments where you don’t want it to have a generic name when you’re being told someone else has your file open. To compile this script into an EXE that you can run, you’ll need to download the AutoIt compiler from this website. You’ll want to change Dim $sCompany = “Generic Company” to have your company name, although it doesn’t look like Office ever reads this key, it’s probably using your Windows company name instead.&lt;/p&gt;</description></item><item><title>Ignoring Netware Tree or Server Error with SafeBoot</title><link>https://christopherkibble.com/post/ignoring-netware-tree-server-error-safeboot/</link><pubDate>Sun, 15 Mar 2009 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/ignoring-netware-tree-server-error-safeboot/</guid><description>
&lt;p&gt;I wrote this tip for the McAfee Community back in December 2008 and thought it would be useful to post here&lt;/p&gt;
&lt;p&gt;With the Netware client we’re using, we found that when implementing SSO through Safeboot that if a laptop was off our network but on another network (such as home wireless) that the user would get an error regarding the tree or server not being able to be found. It asks the user if they want to continue to logon to NT without logging into Netware. This is happening because normally our users would know to check “Workstation Only” when on another network, but they don’t get this option with Safeboot. Before I explain how I did it, I’ll give the standard disclaimer that I do not work for McAfee or for Safeboot and I’m only posting this because I had to go through the motions to get this fixed anyway and I thought it might help some others out. This change may or may not be supported by McAfee. You should complete the steps on a test or proof of concept system and you should always backup any files before modifying or deleting them.&lt;/p&gt;</description></item><item><title>Troubleshooting McAfee EE / SafeBoot SSO</title><link>https://christopherkibble.com/post/troubleshooting-mcafee-ee-safeboot-sso/</link><pubDate>Sun, 15 Mar 2009 00:00:00 +0000</pubDate><guid>https://christopherkibble.com/post/troubleshooting-mcafee-ee-safeboot-sso/</guid><description>
&lt;p&gt;I wrote this tip for the McAfee Community back in November 2008 and thought it would be useful to post here. I do not work for McAfee or for SafeBoot and I’m only posting this because I documented it all out when I was having trouble so that I could fix it in the future and thought it might help someone else. You should complete the steps on a test or proof of concept system and you should always backup any files or registry keys before modifying or deleting them. This information is posted by me alone and does not represent the thoughts of McAfee, SafeBoot, or my employer.&lt;/p&gt;</description></item></channel></rss>