{"id":83,"date":"2018-01-17T00:35:00","date_gmt":"2018-01-17T00:35:00","guid":{"rendered":"http:\/\/michaelschultz.net\/tech\/?p=83"},"modified":"2018-05-31T16:50:00","modified_gmt":"2018-05-31T16:50:00","slug":"sccm-run-script-examples","status":"publish","type":"post","link":"https:\/\/michaelschultz.net\/tech\/sccm-run-script-examples\/","title":{"rendered":"SCCM Run Script Examples"},"content":{"rendered":"<p>One of my favorite, if not my favorite, features of SCCM current branch is the ability to run PowerShell scripts against a system or collection from within the console. You just have to create a new script in the console and, when you run it against a system or collection, the script runs on the system(s) locally. This is a great way to automate some of those routine tasks you may have.<!--more--><br \/>\nI am not going to go into how to create or use the Run Scripts feature. You can find the Microsoft documentation on the feature at https:\/\/docs.microsoft.com\/en-us\/sccm\/apps\/deploy-use\/create-deploy-scripts. What I am going to do is to share a few of the scripts I have put together. These are simple scripts but ones that could be helpful.<\/p>\n<p>Check Service Status (prompts for service name, not service display name)<\/p>\n<div class=\"codecolorer-container powershell default\" style=\"overflow:auto;white-space:nowrap;width:500px;\"><div class=\"powershell codecolorer\"><span class=\"kw3\">Param<\/span><span class=\"br0\">&#40;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span>Parameter<span class=\"br0\">&#40;<\/span>Mandatory<span class=\"sy0\">=<\/span><span class=\"re0\">$True<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"re3\">string<\/span><span class=\"br0\">&#93;<\/span><span class=\"re0\">$name<\/span><br \/>\n<span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"re0\">$srvstat<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw1\">get-service<\/span> <span class=\"re0\">$name<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw1\">Select-Object<\/span> <span class=\"kw5\">-ExpandProperty<\/span> status<br \/>\n<span class=\"kw3\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$srvstat<\/span> <span class=\"kw4\">-ne<\/span> <span class=\"re0\">$null<\/span> <span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><span class=\"re0\">$srvstat<\/span><span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw3\">else<\/span> <span class=\"br0\">&#123;<\/span><span class=\"st0\">&quot;File Not Found&quot;<\/span><span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p>Check for installed KB (prompts for KB number minus the KB prefix))<\/p>\n<div class=\"codecolorer-container powershell default\" style=\"overflow:auto;white-space:nowrap;width:500px;\"><div class=\"powershell codecolorer\"><span class=\"kw3\">Param<\/span><span class=\"br0\">&#40;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span>Parameter<span class=\"br0\">&#40;<\/span>Mandatory<span class=\"sy0\">=<\/span><span class=\"re0\">$True<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"re3\">string<\/span><span class=\"br0\">&#93;<\/span><span class=\"re0\">$KBfind<\/span><br \/>\n<span class=\"br0\">&#41;<\/span><br \/>\nGet<span class=\"sy0\">-<\/span>HotFix <span class=\"kw5\">-id<\/span> <span class=\"re0\">$KBfind<\/span> <span class=\"kw5\">-ErrorAction<\/span> SilentlyContinue <span class=\"sy0\">|<\/span> <span class=\"kw2\">select<\/span> <span class=\"kw5\">-ExpandProperty<\/span> InstalledOn<\/div><\/div>\n<p>Restart a service (prompts for service name, not service display name)<\/p>\n<div class=\"codecolorer-container powershell default\" style=\"overflow:auto;white-space:nowrap;width:500px;\"><div class=\"powershell codecolorer\"><span class=\"kw3\">Param<\/span><span class=\"br0\">&#40;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span>Parameter<span class=\"br0\">&#40;<\/span>Mandatory<span class=\"sy0\">=<\/span><span class=\"re0\">$True<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"re3\">string<\/span><span class=\"br0\">&#93;<\/span><span class=\"re0\">$name<\/span><br \/>\n<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"re0\">$srvstat<\/span> <span class=\"sy0\">=<\/span>\u00a0 <span class=\"kw1\">get-service<\/span> <span class=\"re0\">$name<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw1\">Select-Object<\/span> <span class=\"kw5\">-ExpandProperty<\/span> status<br \/>\n<br \/>\n<span class=\"kw3\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$srvstat<\/span> <span class=\"kw4\">-ne<\/span> <span class=\"re0\">$null<\/span> <span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"kw1\">Restart-Service<\/span> <span class=\"re0\">$name<\/span> <span class=\"kw5\">-force<\/span><br \/>\n<span class=\"st0\">&quot;$name restarting&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw3\">else<\/span> <span class=\"br0\">&#123;<\/span><span class=\"st0\">&quot;$name Not Found&quot;<\/span><span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p>Send pop-up message to system (prompts for message)<\/p>\n<div class=\"codecolorer-container powershell default\" style=\"overflow:auto;white-space:nowrap;width:500px;\"><div class=\"powershell codecolorer\"><span class=\"kw3\">Param<\/span><span class=\"br0\">&#40;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span>Parameter<span class=\"br0\">&#40;<\/span>Mandatory<span class=\"sy0\">=<\/span><span class=\"re0\">$True<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#91;<\/span><span class=\"re3\">string<\/span><span class=\"br0\">&#93;<\/span><span class=\"re0\">$msg<\/span><br \/>\n<span class=\"br0\">&#41;<\/span><br \/>\nmsg <span class=\"sy0\">*<\/span> <span class=\"st0\">&quot;$msg&quot;<\/span><\/div><\/div>\n<p>Check pending reboot reason<\/p>\n<div class=\"codecolorer-container powershell default\" style=\"overflow:auto;white-space:nowrap;width:500px;\"><div class=\"powershell codecolorer\"><span class=\"re0\">$msg<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;No reboot required&quot;<\/span><br \/>\n<span class=\"kw3\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">Get-ChildItem<\/span> <span class=\"st0\">&quot;HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Component Based Servicing\\RebootPending&quot;<\/span> <span class=\"sy0\">-<\/span>EA Ignore<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"re0\">$msg<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;Component Based Servicing&quot;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw3\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">Get-Item<\/span> <span class=\"st0\">&quot;HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate\\Auto Update\\RebootRequired&quot;<\/span> <span class=\"sy0\">-<\/span>EA Ignore<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"re0\">$msg<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;Windows Update&quot;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"kw3\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">Get-ItemProperty<\/span> <span class=\"st0\">&quot;HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager&quot;<\/span> <span class=\"kw5\">-Name<\/span> PendingFileRenameOperations <span class=\"sy0\">-<\/span>EA Ignore<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"re0\">$msg<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;File Rename&quot;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\ntry <span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"re0\">$util<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span><span class=\"re3\">wmiclass<\/span><span class=\"br0\">&#93;<\/span><span class=\"st0\">&quot;\\\\.\\root\\ccm\\clientsdk:CCM_ClientUtilities&quot;<\/span><br \/>\n<span class=\"re0\">$status<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$util<\/span>.DetermineIfRebootPending<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw3\">if<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$status<\/span> <span class=\"kw4\">-ne<\/span> <span class=\"re0\">$null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw4\">-and<\/span> <span class=\"re0\">$status<\/span>.RebootPending<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n<span class=\"re0\">$msg<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;SCCM Related&quot;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span>catch<span class=\"br0\">&#123;<\/span><span class=\"br0\">&#125;<\/span><br \/>\n$msg<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>One of my favorite, if not my favorite, features of SCCM current branch is the ability to run PowerShell scripts against a system or collection from within the console. You just have to create a new script in the console and, when you run it against a system or collection, the script runs on the &hellip; <a href=\"https:\/\/michaelschultz.net\/tech\/sccm-run-script-examples\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;SCCM Run Script Examples&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[4,14,16,13],"tags":[],"class_list":["post-83","post","type-post","status-publish","format-standard","hentry","category-configmgr","category-powershell","category-run-script","category-scripting"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p98a2r-1l","post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/posts\/83","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/comments?post=83"}],"version-history":[{"count":6,"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/posts\/83\/revisions"}],"predecessor-version":[{"id":157,"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/posts\/83\/revisions\/157"}],"wp:attachment":[{"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/media?parent=83"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/categories?post=83"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michaelschultz.net\/tech\/wp-json\/wp\/v2\/tags?post=83"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}