{"id":1220,"date":"2011-03-11T07:57:52","date_gmt":"2011-03-11T12:57:52","guid":{"rendered":"http:\/\/jdhitsolutions.com\/blog\/?p=1220"},"modified":"2013-09-11T13:33:28","modified_gmt":"2013-09-11T17:33:28","slug":"friday-fun-virtual-demos","status":"publish","type":"post","link":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/","title":{"rendered":"Friday Fun Virtual Demos"},"content":{"rendered":"<p>I've been prepping my demo scripts for Techmentor using the ubiquitous Start-Demo, and realized I could take things further. I mean, why do I have to do all the talking? Windows 7 has a terrific text to speech engine so why not take advantage of it. With a little work I could create a virtual demo that doesn't require a real person, other than to kick it off. Thus was born Start-VirtualDemo.<\/p>\n<p>My function relies on the SAPI.SPVoice COM object and works best on Windows 7. The voice isn't perfect but much better than previous versions and at least in my tests more than adequate. The function needs a text file \"script\". In this file, write the text you want to be read putting a # at the beginning of the line. Then type any PowerShell expressions you would like to demonstrate. For now, the command must be all in one line. Here's a sample text file.<\/p>\n<pre class=\"lang:ps decode:true\">#Hello, I am Serenity, and I will be your virtual guide today.\r\n#Let me demonstrate some basic PowerShell commands.\r\n#First, let's find all the running services on this computer.\r\nGet-Service | Where {$_.status -eq \"Running\"}\r\n\r\n#What about processes? \r\nGet-Process -name \"PowerShell\"\r\n#Here are the running PowerShell sessions\r\n\r\n#PowerShell also lets you navigate other data stores like the registry.\r\nCD hklm:\\Software\r\ndir\r\nget-itemproperty \"microsoft\\windows nt\\currentversion\"\r\n#Do you think this would be useful?\r\n\r\n#WMI is a lot of fun and easy to use in PowerShell. \r\nGet-Wmiobject Win32_logicaldisk -filter \"drivetype=3\"\r\n#This command will return fixed logical disk information.\r\n\r\n#If you need help on how to run a command, just ask.\r\nGet-Help Get-WMIObject\r\n\r\n#Isn't that easy?  \r\n#Remember, those who forget to script are doomed to repeat their work.\"\r\n#Discover more with a copy of Windows PowerShell 2.0 Tee ef em by Don Jones and Jeffery Hicks\r\n#Thank you for your attention and have a great day!<\/pre>\n<p>The function will strip out any blank lines so put in as many as you want to help visually organize your script. You might have to experiment and tweak some words or phrases using phonetic-like alternatives to get the correct pronunciation. The script itself is pretty straight forward.<\/p>\n<pre class=\"lang:ps decode:true\">Param(\r\n    [Parameter(Position=0)]\r\n    [string]$File=\"demo.txt\",\r\n    [int]$rate=-1\r\n)\r\n\r\n#verify the text file \"script\"\r\nif (-Not (Test-Path -path $File))\r\n{\r\nWrite-Error \"Failed to find $file. Please verify and try again.\"\r\n}\r\nelse\r\n{\r\nTry {\r\n#create the Voice object\r\n$voice=New-Object -ComObject \"SAPI.SPVoice\"\r\n#I find a slower rate works better but you may need to experiment\r\n$voice.rate=$rate\r\n}\r\n\r\nCatch {\r\n#Oops.\r\nWrite-Warning \"Unable to create the Voice object.\"\r\n}\r\n\r\nif ($voice) {\r\n#cleas the screen\r\nClear-Host\r\n\r\n#store the current location so we can return to it\r\nPush-Location\r\n\r\n#get all data from the text file, filtering out blank lines\r\n$data=Get-Content $file | where {$_}\r\n\r\nWrite-Host \"Demo Started.\" -ForegroundColor Cyan\r\n\r\n#go through each line. Lines that start with # will be spoken.\r\n#All other lines will be displayed in a pseudo prompt and then executed\r\nforeach ($line in $data) {\r\n\r\nIf ($line.StartsWith(\"#\"))\r\n{\r\n$voice.Speak($line.Substring(1)) | Out-Null\r\n}\r\nelse\r\n{\r\n#display the command using the current location in a prompt\r\n#add a blank line before and after the command\r\nWrite-host (\"`nPS {0}&gt; {1} `n\" -f (Get-Location).path,$line)\r\n#pause a few seconds to give the viewer time to read the command\r\nsleep 3\r\n#execute the command\r\nInvoke-Expression $line | Out-Default\r\n}\r\n} #Foreach\r\n\r\n#return to the original location\r\nPop-Location\r\n} #if $voice\r\n} #else file found\r\nWrite-Host \"Demo Finished.\" -ForegroundColor Cyan<\/pre>\n<p>To run the script all you need to do is specify the text file. Or use the default value from the parameter. The script will store your current location and return to it at the end so if you change locations in your demo nothing will have changed when your demo ends. The script will display the demo command in a pseudo prompt, using your current location.<\/p>\n<pre class=\"lang:ps decode:true\"> #display the command using the current location in a prompt\r\n #add a blank line before and after the command\r\n Write-host (\"`nPS {0}&gt; {1} `n\" -f (Get-Location).path,$line)<\/pre>\n<p>I have to say I thought this turned out quite nicely. Here's a video demo.<\/p>\n<p><iframe loading=\"lazy\" width=\"640\" height=\"390\" title=\"YouTube video player\" src=\"http:\/\/www.youtube.com\/embed\/zqbCe07HiIw\" frameborder=\"0\" allowfullscreen=\"\"><\/iframe><\/p>\n<p>By the way, I was only kidding about not having to talk and actually do the demos. Still, there are some intriguing possibilities that come to mind with this.<\/p>\n<p>You can download a zip file with the Start-VirtualDemo script any my demo text file <a href=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2011\/03\/Start-VirtualDemo.zip\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been prepping my demo scripts for Techmentor using the ubiquitous Start-Demo, and realized I could take things further. I mean, why do I have to do all the talking? Windows 7 has a terrific text to speech engine so why not take advantage of it. With a little work I could create a virtual&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[134,271,4,8,99],"tags":[265,534,540,266],"class_list":["post-1220","post","type-post","status-publish","format-standard","hentry","category-conferences","category-friday-fun","category-powershell","category-scripting","category-windows-7","tag-demo","tag-powershell","tag-scripting","tag-voice"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Friday Fun Virtual Demos &#8226; The Lonely Administrator<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Friday Fun Virtual Demos &#8226; The Lonely Administrator\" \/>\n<meta property=\"og:description\" content=\"I&#039;ve been prepping my demo scripts for Techmentor using the ubiquitous Start-Demo, and realized I could take things further. I mean, why do I have to do all the talking? Windows 7 has a terrific text to speech engine so why not take advantage of it. With a little work I could create a virtual...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/\" \/>\n<meta property=\"og:site_name\" content=\"The Lonely Administrator\" \/>\n<meta property=\"article:published_time\" content=\"2011-03-11T12:57:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-09-11T17:33:28+00:00\" \/>\n<meta name=\"author\" content=\"Jeffery Hicks\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JeffHicks\" \/>\n<meta name=\"twitter:site\" content=\"@JeffHicks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeffery Hicks\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/1220\\\/friday-fun-virtual-demos\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/1220\\\/friday-fun-virtual-demos\\\/\"},\"author\":{\"name\":\"Jeffery Hicks\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"headline\":\"Friday Fun Virtual Demos\",\"datePublished\":\"2011-03-11T12:57:52+00:00\",\"dateModified\":\"2013-09-11T17:33:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/1220\\\/friday-fun-virtual-demos\\\/\"},\"wordCount\":339,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"keywords\":[\"Demo\",\"PowerShell\",\"Scripting\",\"Voice\"],\"articleSection\":[\"Conferences\",\"Friday Fun\",\"PowerShell\",\"Scripting\",\"Windows 7\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/1220\\\/friday-fun-virtual-demos\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/1220\\\/friday-fun-virtual-demos\\\/\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/1220\\\/friday-fun-virtual-demos\\\/\",\"name\":\"Friday Fun Virtual Demos &#8226; The Lonely Administrator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\"},\"datePublished\":\"2011-03-11T12:57:52+00:00\",\"dateModified\":\"2013-09-11T17:33:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/1220\\\/friday-fun-virtual-demos\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/1220\\\/friday-fun-virtual-demos\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell\\\/1220\\\/friday-fun-virtual-demos\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Conferences\",\"item\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/category\\\/conferences\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Friday Fun Virtual Demos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/\",\"name\":\"The Lonely Administrator\",\"description\":\"Practical Advice for the Automating IT Pro\",\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\",\"name\":\"Jeffery Hicks\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"caption\":\"Jeffery Hicks\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Friday Fun Virtual Demos &#8226; The Lonely Administrator","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/","og_locale":"en_US","og_type":"article","og_title":"Friday Fun Virtual Demos &#8226; The Lonely Administrator","og_description":"I've been prepping my demo scripts for Techmentor using the ubiquitous Start-Demo, and realized I could take things further. I mean, why do I have to do all the talking? Windows 7 has a terrific text to speech engine so why not take advantage of it. With a little work I could create a virtual...","og_url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/","og_site_name":"The Lonely Administrator","article_published_time":"2011-03-11T12:57:52+00:00","article_modified_time":"2013-09-11T17:33:28+00:00","author":"Jeffery Hicks","twitter_card":"summary_large_image","twitter_creator":"@JeffHicks","twitter_site":"@JeffHicks","twitter_misc":{"Written by":"Jeffery Hicks","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/#article","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/"},"author":{"name":"Jeffery Hicks","@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"headline":"Friday Fun Virtual Demos","datePublished":"2011-03-11T12:57:52+00:00","dateModified":"2013-09-11T17:33:28+00:00","mainEntityOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/"},"wordCount":339,"commentCount":3,"publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"keywords":["Demo","PowerShell","Scripting","Voice"],"articleSection":["Conferences","Friday Fun","PowerShell","Scripting","Windows 7"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/","url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/","name":"Friday Fun Virtual Demos &#8226; The Lonely Administrator","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#website"},"datePublished":"2011-03-11T12:57:52+00:00","dateModified":"2013-09-11T17:33:28+00:00","breadcrumb":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1220\/friday-fun-virtual-demos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Conferences","item":"https:\/\/jdhitsolutions.com\/blog\/category\/conferences\/"},{"@type":"ListItem","position":2,"name":"Friday Fun Virtual Demos"}]},{"@type":"WebSite","@id":"https:\/\/jdhitsolutions.com\/blog\/#website","url":"https:\/\/jdhitsolutions.com\/blog\/","name":"The Lonely Administrator","description":"Practical Advice for the Automating IT Pro","publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jdhitsolutions.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9","name":"Jeffery Hicks","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","caption":"Jeffery Hicks"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":4011,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4011\/friday-fun-a-popup-alternative\/","url_meta":{"origin":1220,"position":0},"title":"Friday Fun &#8211; A Popup Alternative","author":"Jeffery Hicks","date":"September 12, 2014","format":false,"excerpt":"In the past I've written and presented about different ways to add graphical elements to your PowerShell scripts that don't rely on Windows Forms or WPF. There's nothing wrong with those techniques, but they certainly require some expertise and depending on your situation may be overkill. So let's have some\u2026","rel":"","context":"In &quot;Friday Fun&quot;","block_context":{"text":"Friday Fun","link":"https:\/\/jdhitsolutions.com\/blog\/category\/friday-fun\/"},"img":{"alt_text":"windowpane-thumbnail","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2014\/09\/windowpane-thumbnail.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1404,"url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1404\/start-typeddemo\/","url_meta":{"origin":1220,"position":1},"title":"Start-TypedDemo","author":"Jeffery Hicks","date":"May 3, 2011","format":false,"excerpt":"As you know, I do a lot of presenting and training. Normally I use the ubiquitous Start-Demo function to run through a demo list of commands. Most of this time this works just fine. But when I'm doing videos, especially for a video project, I want the viewer to focus\u2026","rel":"","context":"In &quot;PowerShell v2.0&quot;","block_context":{"text":"PowerShell v2.0","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell-v2-0\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1247,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1247\/techmentor-orlando-2011-decks-and-demos\/","url_meta":{"origin":1220,"position":2},"title":"Techmentor Orlando 2011 Decks and Demos","author":"Jeffery Hicks","date":"March 21, 2011","format":false,"excerpt":"As promised, I have put together the most current versions of my slide decks and demos. A word of caution on the demos: many of them were designed to be used with my Start-Demo function, which essentially steps through the demo file one line at a time. The AD demos\u2026","rel":"","context":"In &quot;Active Directory&quot;","block_context":{"text":"Active Directory","link":"https:\/\/jdhitsolutions.com\/blog\/category\/active-directory\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2011\/03\/TM_2011spring.gif?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":3361,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/3361\/creating-styling-html-reports-with-powershell\/","url_meta":{"origin":1220,"position":3},"title":"Creating Styling HTML Reports with PowerShell","author":"Jeffery Hicks","date":"August 26, 2013","format":false,"excerpt":"Last month I did an updated version of my presentation on creating styling HTML reports in Windows PowerShell. This presentation was for the PowerShell virtual chapter of SQL PASS. As such, I came up with some SQL related demonstrations and fine tuned some demos from earlier presentations. You can download\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":917,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/917\/understanding-powershell-background-jobs\/","url_meta":{"origin":1220,"position":4},"title":"Understanding PowerShell Background Jobs","author":"Jeffery Hicks","date":"September 9, 2010","format":false,"excerpt":"Last night I spoke to the CNY .NET Developers Group about background jobs in Windows PowerShell. Even though the audience was primarily developers, I discussed jobs from an administrator's perspective, that is, using cmdlets. The job feature in PowerShell 2.0 is pretty amazing and you don't need any programming skills.\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4445,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4445\/simulating-a-powershell-demo\/","url_meta":{"origin":1220,"position":5},"title":"Simulating a PowerShell Demo","author":"Jeffery Hicks","date":"July 13, 2015","format":false,"excerpt":"A number of years ago I published my version of a Start-Demo script. In my version, I can create a text file with all of the commands I want to run. It might look like this: Get-Date get-ciminstance win32_logicaldisk | select DeviceID,Size,Freespace :: get-service | where {$_.status -eq 'running'} |\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=1220"}],"version-history":[{"count":0,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1220\/revisions"}],"wp:attachment":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=1220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=1220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=1220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}