{"id":4626,"date":"2015-11-30T08:49:05","date_gmt":"2015-11-30T13:49:05","guid":{"rendered":"http:\/\/jdhitsolutions.com\/blog\/?p=4626"},"modified":"2015-11-30T17:27:55","modified_gmt":"2015-11-30T22:27:55","slug":"powershell-ise-remote-possibilities","status":"publish","type":"post","link":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/","title":{"rendered":"PowerShell ISE Remote Possibilities"},"content":{"rendered":"<p>Normally, I think of the PowerShell ISE as a script development tool. I typically don't think of it as a daily management tool, primarily because everything shares the same scope and if you are running scripts and aren't careful can sometimes lead to unexpected results. But the ISE feature I really like is the ability to open a new tab with a remote connection to another server. You can even specify alternate credentials.<\/p>\n<p>Normally you can accomplish this by going to File \u2013 New Remote PowerShell tab or using the keyboard shortcut Ctrl+Shift+R. But if you want to open multiple remote tabs, say to key servers you want to manage, this gets a little tedious. Or perhaps you'd like to open multiple remote tabs in your PowerShell ISE profile script? We need a better way.<\/p>\n<p>Fortunately, the PowerShell ISE has a scriptable object model. A remote tab is simply another PowerShell tab that has executed <a title=\"Read online help for Enter-PSSession\" href=\"http:\/\/go.microsoft.com\/fwlink\/p\/?linkid=289578\" target=\"_blank\">Enter-PSSession<\/a>. Creating a new tab is pretty simple.<\/p>\n<pre class=\"lang:ps mark:0 decode:true \">\r\n$newtab = $psise.powershelltabs.Add()\r\n<\/pre>\n<p>Once the tab is open you can use the Invoke() method to run a command in it.<\/p>\n<pre class=\"lang:ps mark:0 decode:true \">\r\n$newtab.Invoke(\"Enter-PSSession -computername chi-dc01\")\r\n<\/pre>\n<p>If you need alternate credentials adjust the command. You can even change the tab's display name.<\/p>\n<pre class=\"lang:ps mark:0 decode:true \">\r\n$newtab.DisplayName = \"CHI-DC01\"\r\n<\/pre>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI1.png\" alt='The new remote tab' \/><span style=\"color: #44546a; font-size: 9pt;\"><em>The new remote tab (Image Credit: Jeff Hicks)<\/em><\/span><\/p>\n<p>But there are a few things to watch out for. First, it takes time to open a new tab and you have to wait for it to be ready to invoke commands. You might need to use a short Do loop.<\/p>\n<pre class=\"lang:ps mark:0 decode:true \">\r\nDo {\r\n  Start-Sleep -Milliseconds 10\r\n} until ($newTab.CanInvoke)\r\n<\/pre>\n<p>And every time you open a new PowerShell tab, you are opening a new PowerShell session which means your profile scripts run as well. If you are like me, this adds a little overhead that is completely unnecessary since the remote tab won't be using anything in my profile. So I need a way to open the tab without running any profiles. Fortunately, this can be done, but it is not something exposed in the ISE. But thanks to fellow PowerShell MVP Tobias Weltner, I now have some code that digs into the ISE internals and turns off the option to load profiles.<\/p>\n<pre class=\"lang:ps mark:0 decode:true \">\r\n$type = ([Microsoft.Windows.PowerShell.Gui.Internal.MainWindow].Assembly.GetTypes()).Where({ $_.Name -eq 'PSGInternalHost' })\r\n$currentField = $type.GetField('current', 'NonPublic,Static')\r\n$noprofileField = $type.GetField('noProfile', 'NonPublic,Instance')\r\n$pshost = $currentField.GetValue($type)\r\n$noprofileField.SetValue($pshost,$True)\r\n<\/pre>\n<p>To re-enable, I can run the last line and set the value to $False.<\/p>\n<p>And of course, I've tried to make this easier for you to use by creating a function for the PowerShell ISE called New-ISERemoteTab. You can find the <a href=\"https:\/\/github.com\/jdhitsolutions\/New-ISERemoteTab\" target=\"_blank\">source code on GitHub<\/a>.<\/p>\n<p>In addition to creating a new remote tab, my function also runs a few commands after the remote connection is established. I prefer a clean slate so I like to at least run <a title=\"Read online help for Clear-Host\" href=\"http:\/\/technet.microsoft.com\/library\/hh852689(v=wps.630).aspx\" target=\"_blank\">Clear-Host<\/a>. You can invoke commands in the remote tab from new tab object you created.<\/p>\n<pre class=\"lang:ps mark:0 decode:true \">\r\n\"Set-Location -path 'C:\\'\",\"Clear-Host\",\"WhoAmI\",'$PSVersionTable' | foreach {\r\n   Write-Verbose \"[$($newTab.Displayname)] Invoking $_\"\r\n   $newTab.Invoke($_)\r\n   #wait for command to complete\r\nDo {\r\n   Start-Sleep -Milliseconds 10\r\n} until ($newTab.CanInvoke)\r\n} #foreach command\r\n<\/pre>\n<p>The other concession I had to make is that if you specify a credential, I have to temporarily export it to disk. Because the new tab is a new PowerShell session there's no way that I can find to pass variables between session without writing them to disk. But at the end of the process the file is deleted.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI2.png\" alt='Creating a remote tab with credential' \/><span style=\"color: #44546a; font-size: 9pt;\"><em>Creating a remote tab with credential (Image Credit: Jeff Hicks)<\/em><\/span><\/p>\n<p>And this is the result:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI3.png\" alt='The new remote tab' \/><span style=\"color: #44546a; font-size: 9pt;\"><em>The new remote tab (Image Credit: Jeff Hicks)<\/em><\/span><\/p>\n<p>Feel free to modify the new tab commands. If you specify multiple computers and a credential, the same credential will be used for all connections.<\/p>\n<p>But I also have an option to prompt for credentials. This will not write anything to disk and if you specify multiple computers, you can enter a different credential for different computers. I thought that could come in handy if you need to connect to workgroup-based servers.<\/p>\n<p>The end result is that I can now easily create multiple remote tabs with a single command.<\/p>\n<pre class=\"lang:ps mark:0 decode:true \">\r\nNew-ISERemoteTab chi-fp02,chi-web02,chi-dc04\r\n<\/pre>\n<p><img decoding=\"async\" src=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI4.png\" alt='Creating multiple remote tabs' \/><span style=\"color: #44546a; font-size: 9pt;\"><em>Creating multiple remote tabs (Image Credit: Jeff Hicks)<\/em><\/span><\/p>\n<p>There are a few other examples in command help.<\/p>\n<p>I've tried to annotate the function so you can understand how it works but feel free to post questions or problem in GitHub. I'd also like to hear from you in the comments if you find this useful.<\/p>\n<p>Enjoy!<\/p>\n<p>UPDATE: I'm starting to see the benefit of GitHub. Since I published the original earlier today, someone has already improved it and I've incorporated those changes into the project.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Normally, I think of the PowerShell ISE as a script development tool. I typically don&#8217;t think of it as a daily management tool, primarily because everything shares the same scope and if you are running scripts and aren&#8217;t careful can sometimes lead to unexpected results. But the ISE feature I really like is the ability&#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":"New from the blog: #PowerShell ISE Remote Possibilities","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}},"categories":[499,231,8],"tags":[567,460,87,540],"class_list":["post-4626","post","type-post","status-publish","format-standard","hentry","category-github","category-powershell-ise","category-scripting","tag-powershell-ise","tag-pssession","tag-remoting","tag-scripting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PowerShell ISE Remote Possibilities &#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\/scripting\/4626\/powershell-ise-remote-possibilities\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PowerShell ISE Remote Possibilities &#8226; The Lonely Administrator\" \/>\n<meta property=\"og:description\" content=\"Normally, I think of the PowerShell ISE as a script development tool. I typically don&#039;t think of it as a daily management tool, primarily because everything shares the same scope and if you are running scripts and aren&#039;t careful can sometimes lead to unexpected results. But the ISE feature I really like is the ability...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/\" \/>\n<meta property=\"og:site_name\" content=\"The Lonely Administrator\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-30T13:49:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-11-30T22:27:55+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI1.png\" \/>\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\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/\"},\"author\":{\"name\":\"Jeffery Hicks\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"headline\":\"PowerShell ISE Remote Possibilities\",\"datePublished\":\"2015-11-30T13:49:05+00:00\",\"dateModified\":\"2015-11-30T22:27:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/\"},\"wordCount\":713,\"commentCount\":10,\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"image\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/11\\\/113015_1348_PowerShellI1.png\",\"keywords\":[\"PowerShell ISE\",\"PSSession\",\"remoting\",\"Scripting\"],\"articleSection\":[\"GitHub\",\"PowerShell ISE\",\"Scripting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/\",\"name\":\"PowerShell ISE Remote Possibilities &#8226; The Lonely Administrator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/11\\\/113015_1348_PowerShellI1.png\",\"datePublished\":\"2015-11-30T13:49:05+00:00\",\"dateModified\":\"2015-11-30T22:27:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/#primaryimage\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/11\\\/113015_1348_PowerShellI1.png\",\"contentUrl\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/11\\\/113015_1348_PowerShellI1.png\",\"width\":510,\"height\":160},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/scripting\\\/4626\\\/powershell-ise-remote-possibilities\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"GitHub\",\"item\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/category\\\/github\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PowerShell ISE Remote Possibilities\"}]},{\"@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":"PowerShell ISE Remote Possibilities &#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\/scripting\/4626\/powershell-ise-remote-possibilities\/","og_locale":"en_US","og_type":"article","og_title":"PowerShell ISE Remote Possibilities &#8226; The Lonely Administrator","og_description":"Normally, I think of the PowerShell ISE as a script development tool. I typically don't think of it as a daily management tool, primarily because everything shares the same scope and if you are running scripts and aren't careful can sometimes lead to unexpected results. But the ISE feature I really like is the ability...","og_url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/","og_site_name":"The Lonely Administrator","article_published_time":"2015-11-30T13:49:05+00:00","article_modified_time":"2015-11-30T22:27:55+00:00","og_image":[{"url":"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI1.png","type":"","width":"","height":""}],"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\/scripting\/4626\/powershell-ise-remote-possibilities\/#article","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/"},"author":{"name":"Jeffery Hicks","@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"headline":"PowerShell ISE Remote Possibilities","datePublished":"2015-11-30T13:49:05+00:00","dateModified":"2015-11-30T22:27:55+00:00","mainEntityOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/"},"wordCount":713,"commentCount":10,"publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"image":{"@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/#primaryimage"},"thumbnailUrl":"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI1.png","keywords":["PowerShell ISE","PSSession","remoting","Scripting"],"articleSection":["GitHub","PowerShell ISE","Scripting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/","url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/","name":"PowerShell ISE Remote Possibilities &#8226; The Lonely Administrator","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/#primaryimage"},"image":{"@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/#primaryimage"},"thumbnailUrl":"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI1.png","datePublished":"2015-11-30T13:49:05+00:00","dateModified":"2015-11-30T22:27:55+00:00","breadcrumb":{"@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/#primaryimage","url":"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI1.png","contentUrl":"https:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2015\/11\/113015_1348_PowerShellI1.png","width":510,"height":160},{"@type":"BreadcrumbList","@id":"https:\/\/jdhitsolutions.com\/blog\/scripting\/4626\/powershell-ise-remote-possibilities\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"GitHub","item":"https:\/\/jdhitsolutions.com\/blog\/category\/github\/"},{"@type":"ListItem","position":2,"name":"PowerShell ISE Remote Possibilities"}]},{"@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":4980,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell-ise\/4980\/formal-remote-ise-connections\/","url_meta":{"origin":4626,"position":0},"title":"Formal Remote ISE Connections","author":"Jeffery Hicks","date":"May 3, 2016","format":false,"excerpt":"I have updated my PowerShell tools that make it easier to open up a remote tab in the PowerShell ISE.\u00a0 The standard approach is limited and doesn't allow for things like using SSL or different ports.\u00a0 I have had the ISERemoteTab project up on GitHub for awhile. I recently added\u2026","rel":"","context":"In &quot;PowerShell ISE&quot;","block_context":{"text":"PowerShell ISE","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell-ise\/"},"img":{"alt_text":"remoteIsetab","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2016\/05\/remoteIsetab_thumb.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2016\/05\/remoteIsetab_thumb.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2016\/05\/remoteIsetab_thumb.png?resize=525%2C300 1.5x"},"classes":[]},{"id":8499,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/8499\/using-the-powershell-ise-as-a-remote-management-console\/","url_meta":{"origin":4626,"position":1},"title":"Using the PowerShell ISE as a Remote Management Console","author":"Jeffery Hicks","date":"July 20, 2021","format":false,"excerpt":"Way back before the days of PowerShell Core, or even VS Code for that matter, the PowerShell ISE was the center of my PowerShell world. I spent a lot of time finding ways to make it easier for me to use and to push it to its limits. Naturally, the\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2021\/07\/ise-remotetab-form2.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":7468,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/7468\/powershell-7-scripting-with-the-powershell-ise\/","url_meta":{"origin":4626,"position":2},"title":"PowerShell 7 Scripting with the PowerShell ISE","author":"Jeffery Hicks","date":"May 11, 2020","format":false,"excerpt":"By now, everyone should have gotten the memo that with the move to PowerShell 7, the PowerShell ISE should be considered deprecated. When it comes to PowerShell script and module development for PowerShell 7, the recommended tool is Visual Studio Code. It is free and offers so much more than\u2026","rel":"","context":"In &quot;PowerShell&quot;","block_context":{"text":"PowerShell","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2020\/05\/ise-ps7.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2020\/05\/ise-ps7.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2020\/05\/ise-ps7.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2020\/05\/ise-ps7.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":4989,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4989\/remote-powershell-ise-connections-in-action\/","url_meta":{"origin":4626,"position":3},"title":"Remote PowerShell ISE Connections in Action","author":"Jeffery Hicks","date":"July 14, 2016","format":false,"excerpt":"I've written a few times about my PowerShell module that makes it easier to create remote tabs in the PowerShell ISE. The module, ISERemoteTab, is available in the PowerShell gallery. I've also created a short video that demonstrates how to use it, especially the WPF form. I have a few\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":4923,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell-ise\/4923\/friday-fun-tweaking-the-powershell-ise\/","url_meta":{"origin":4626,"position":4},"title":"Friday Fun: Tweaking the PowerShell ISE","author":"Jeffery Hicks","date":"February 19, 2016","format":false,"excerpt":"Today's fun is still PowerShell related, but instead of something in the console, we'll have some fun with the PowerShell ISE. One of the things I love about the PowerShell ISE is that you can customize it and extend it.\u00a0 My ISE Scripting Geek project is an example.\u00a0 But today\u2026","rel":"","context":"In &quot;Friday Fun&quot;","block_context":{"text":"Friday Fun","link":"https:\/\/jdhitsolutions.com\/blog\/category\/friday-fun\/"},"img":{"alt_text":"image","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2016\/02\/image_thumb-12.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1729,"url":"https:\/\/jdhitsolutions.com\/blog\/scripting\/1729\/ise-scripting-geek-module\/","url_meta":{"origin":4626,"position":5},"title":"ISE Scripting Geek Module","author":"Jeffery Hicks","date":"October 27, 2011","format":false,"excerpt":"Over the last year I've posted functions I've written to extend the Windows PowerShell ISE. I have finally pulled everything together into a module I'm calling the ISE Scripting Geek. Download and extract the zip file (below) to your modules folder. You should end up with a path like 'C:\\Users\\Jeff\\Documents\\WindowsPowerShell\\Modules\\ISEScriptingGeek'.\u2026","rel":"","context":"In &quot;PowerShell ISE&quot;","block_context":{"text":"PowerShell ISE","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powershell-ise\/"},"img":{"alt_text":"ISE Scripting Geek add-on menu","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2011\/10\/isescriptinggeek-300x200.png?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/4626","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=4626"}],"version-history":[{"count":0,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/4626\/revisions"}],"wp:attachment":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=4626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=4626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=4626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}