{"id":23,"date":"2018-07-29T07:13:03","date_gmt":"2018-07-29T12:13:03","guid":{"rendered":"https:\/\/quicksand.tech\/?p=23"},"modified":"2018-07-29T07:13:03","modified_gmt":"2018-07-29T12:13:03","slug":"find-out-of-date-windows-10-machines-in-domain","status":"publish","type":"post","link":"https:\/\/quicksand.tech\/index.php\/2018\/07\/29\/find-out-of-date-windows-10-machines-in-domain\/","title":{"rendered":"Find Out of Date Windows 10 Machines in Domain"},"content":{"rendered":"<p>Ideally, one day I&#8217;ll have a lab set up and will be playing with things and trying to write up things I&#8217;ve done or learned. However, I&#8217;m cheap and still debating over my hardware. So as to not be the guy that basically set up an empty blog on an unused domain, here you go!<\/p>\n<p>The <a href=\"https:\/\/support.microsoft.com\/en-us\/help\/13853\/windows-lifecycle-fact-sheet\">Windows 10 Lifecycle<\/a>&#8230;probably isn&#8217;t the most intuitive. IT pros who deal with Windows have probably learned that Windows 10 is not Windows 10 is not Windows 10; trying to communicate to domain users that their PC is out of support can be trying. It is a little confusing that their 2 year old Windows 10 PC is out of date when their coworkers Windows 7 PC is still running. Also, when not pushing feature packs through WSUS, many don&#8217;t understand the difference between the OS being out of support and the machine being &#8220;up to date.&#8221; Ironically, once these machines fall out of support, Windows Update will (erroneously, in my opinion) tell the user that they are fully up to date.<\/p>\n<p>Anyways, each environment is different, but I find the easiest way to track these down are to check Active Directory for machines with old versions of Windows 10.<\/p>\n<p>As of today, this would capture all of the expired ones:<\/p>\n<blockquote><p>$expired = Get-AdComputer -Filter {OperatingSystemVersion -like &#8220;*10240*&#8221; -or OperatingSystemVersion -like &#8220;*10586*&#8221; -or OperatingSystemVersion -like &#8220;*14393*&#8221;} -Properties *<\/p><\/blockquote>\n<p>If you need to capture less you can check all the properties of one of the computers to see what you really want to capture (do so by typing $expired[0] to see the first entry). Then just manually type the properties you want to capture instead of the wildcard. You can get more specific with the version. &#8220;*10240*&#8221; and the like are meant to capture the full &#8220;10.0 (10240)&#8221; value. There are no false positives when using this to select.<\/p>\n<p>Depending on how many machines you&#8217;re looking at, you may want to start manipulating the object, selecting columns, and outputting to a file. If that&#8217;s the route you need to go, <a href=\"https:\/\/4sysops.com\/archives\/wsus-reporting-with-powershell\/\">I&#8217;ve used this as a template for a while now<\/a>. If it&#8217;s not much you can always view it in the terminal.<\/p>\n<p>A view I frequently use is this:<\/p>\n<blockquote><p>$expired | select name,operatingsystemversion,operatingsystem,lastlogondate<\/p><\/blockquote>\n<p>This allows me to check for the few outliers, in the case of 14393, that have the Enterprise SKU extension. Also, it should show here if they&#8217;re LTSB. It also allows me to filter out machines that haven&#8217;t been cleaned up from AD. Depending on how structured your AD is you could pull the canonical name, description, or IP address to help identify the machine.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ideally, one day I&#8217;ll have a lab set up and will be playing with things and trying to write up things I&#8217;ve done or learned. However, I&#8217;m cheap and still debating over my hardware. So as to not be the guy that basically set up an empty blog on an unused domain, here you go!&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-23","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/posts\/23","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/comments?post=23"}],"version-history":[{"count":1,"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/posts\/23\/revisions"}],"predecessor-version":[{"id":24,"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/posts\/23\/revisions\/24"}],"wp:attachment":[{"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/media?parent=23"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/categories?post=23"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/quicksand.tech\/index.php\/wp-json\/wp\/v2\/tags?post=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}