{"id":51943,"date":"2009-11-24T00:01:00","date_gmt":"2009-11-24T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2009\/11\/24\/hey-scripting-guy-why-would-i-even-want-to-create-a-profile-in-windows-powershell\/"},"modified":"2009-11-24T00:01:00","modified_gmt":"2009-11-24T00:01:00","slug":"hey-scripting-guy-why-would-i-even-want-to-create-a-profile-in-windows-powershell","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/hey-scripting-guy-why-would-i-even-want-to-create-a-profile-in-windows-powershell\/","title":{"rendered":"Hey, Scripting Guy! Why Would I Even Want to Create a Profile in Windows PowerShell?"},"content":{"rendered":"<p><!-- AddThis Button BEGIN --><a class=\"addthis_button\" href=\"http:\/\/www.addthis.com\/bookmark.php?v=250&amp;pub=scriptingguys\"><img decoding=\"async\" alt=\"Bookmark and Share\" src=\"http:\/\/s7.addthis.com\/static\/btn\/v2\/lg-share-en.gif\" width=\"125\" height=\"16\"><\/a>     <\/p>\n<p><br><\/p>\n<p><img decoding=\"async\" title=\"Hey, Scripting Guy! Question\" border=\"0\" alt=\"Hey, Scripting Guy! Question\" align=\"left\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/q-for-powertip.jpg\" width=\"34\" height=\"34\"><\/p>\n<p class=\"MsoNormal\">Hey, Scripting Guy! Okay, I get that I can create a profile for Windows PowerShell. What I don&rsquo;t understand is why I would want to create a profile in the first place. It seems to me that Windows PowerShell 2.0 works just fine the way it is. Can you enlighten me a bit?<\/p>\n<p class=\"MsoNormal\">&#8212; VW<\/p>\n<p class=\"MsoNormal\"><img decoding=\"async\" title=\"Hey, Scripting Guy! Answer\" border=\"0\" alt=\"Hey, Scripting Guy! Answer\" align=\"left\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/a-for-powertip.jpg\" width=\"34\" height=\"34\">Hello VW, <\/p>\n<p class=\"MsoNormal\">Microsoft Scripting Guy Ed Wilson here. Today, it is Meat Loaf&mdash;not the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Meatloaf\"><font face=\"Segoe\">food<\/font><\/a>, but the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Meat_Loaf\"><font face=\"Segoe\">singer<\/font><\/a>. After a couple days of beautiful sunny weather, the autumn grays have returned with a vengeance, and it is damp and cool outside. On such days, I like a little loud upbeat guitar rock with a strong pot of <a href=\"http:\/\/en.wikipedia.org\/wiki\/English_Breakfast_tea\">English Breakfast<\/a> tea, <a href=\"http:\/\/en.wikipedia.org\/wiki\/Cymbopogon\"><font face=\"Segoe\">lemon grass<\/font><\/a>, and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Cinnamon\"><font face=\"Segoe\">cinnamon<\/font><\/a> to chase the cobwebs out of my head. I was up late last night working on the <a href=\"https:\/\/twitter.com\/scriptingguys\/\">Scripting Guys Twitter account<\/a> and am therefore a little sluggish this morning. Per my normal morning routine, I am perusing the e-mail that has been sent to <a href=\"http:\/\/blogs.technet.commailto:scripter@microsoft.com\"><font face=\"Segoe\">scripter@microsoft.com<\/font><\/a>. I ran across your e-mail, VW, and it reminded me that I had not mentioned why someone would want to use a profile. I guess I just thought it was intuitive. Sorry about that. <\/p>\n<p class=\"Fig-Graphic\"><img decoding=\"async\" title=\"Image of Windows PowerShell 2.0 Best Practices\" alt=\"Image of Windows PowerShell 2.0 Best Practices\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/november\/hey1123\/hsg-11-23-09-03.jpg\" width=\"197\" height=\"240\"><\/p>\n<p class=\"Readeraidonly\">Note: Portions of today&#8217;s Hey, Scripting Guy! post are excerpted from the Microsoft Press book, <i>Windows PowerShell 2.0 Best Practices<\/i> by Ed Wilson. The book is <a href=\"http:\/\/bit.ly\/1NBxZ0\">available for pre-order<\/a>.<\/p>\n<p class=\"MsoNormal\">For someone who is trying to migrate from VBScript to Windows PowerShell 2.0, the concept of a Windows PowerShell profile has to be totally foreign because there is nothing like it in VBScript. One of the problems with trying to learn Windows PowerShell is there are many concepts that are new. A good place to begin learning about Windows PowerShell is to check out our <a href=\"http:\/\/technet.microsoft.com\/en-us\/scriptcenter\/dd742419.aspx\">Windows PowerShell scripting page<\/a>. There are links to Windows PowerShell scripts as well as information about the cmdlets and other fundamental Windows PowerShell concepts. <\/p>\n<p class=\"MsoNormal\">A Windows PowerShell profile commonly contains four items. <\/p>\n<p class=\"MsoNormal\"><span><span>&middot;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Variables<\/p>\n<p class=\"MsoNormal\"><span><span>&middot;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Aliases<\/p>\n<p class=\"MsoNormal\"><span><span>&middot;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Functions<\/p>\n<p class=\"MsoNormal\"><span><span>&middot;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Windows PowerShell Drives<\/p>\n<p class=\"MsoNormal\">We will examine adding variables to the Windows PowerShell profile today, but before we get too far, it is important to remember that a Windows PowerShell profile is a Windows PowerShell script. It has a special name, and it is located in a special place (in this regard you can consider it a sort of an <a href=\"http:\/\/en.wikipedia.org\/wiki\/AUTOEXEC.BAT\"><font face=\"Segoe\">AUTOEXEC.BAT<\/font><\/a> file for Windows PowerShell), but it is still a script.<\/p>\n<p class=\"MsoNormal\">When Windows PowerShell is first installed, the script execution policy is set to <b>Restricted<\/b>, which means no scripts are permitted to run. Because a profile is a ps1 file, it is therefore a script and by default will not run. There are five levels of execution policy that can be configured in Windows PowerShell by using the <b>Set-ExecutionPolicy<\/b> cmdlet. These five levels are listed in Table 1. The <b>Restricted<\/b> execution policy can be configured via Group Policy by using the <b>Turn on script execution<\/b> policy setting in Active Directory. It can be applied to either the computer object or to the user object. The computer object setting takes precedence over other settings.<\/p>\n<p class=\"MsoNormal\">User preferences for the <b>Restricted<\/b> execution policy can be configured by using the <b>Set-ExecutionPolicy<\/b> cmdlet, but they will not override settings configured by Group Policy. An example of changing the current execution policy to <b>RemoteSigned<\/b> is seen here. To run the <b>Set-ExecutionPolicy<\/b> cmdlet, the Windows PowerShell console must have been launched with administrator rights. To do this, right click the shortcut to Windows PowerShell and click <b>Run as administrator<\/b>. If you attempt to run the <b>Set-ExecutionPolicy<\/b> cmdlet&mdash;even when logged on to the computer as the administrator or a user who is a member of the local administrators group&mdash;the error seen in the following image will appear if you are using Windows Vista or later. <\/p>\n<p class=\"CodeBlock\"><span><font face=\"Lucida Sans Typewriter\">Set-ExecutionPolicy -ExecutionPolicy remotesigned<\/p>\n<p><\/font><\/span><\/p>\n<p class=\"Fig-Graphic\"><img decoding=\"async\" title=\"Image of error related to Set-ExecutionPolicy cmdlet\" alt=\"Image of error related to Set-ExecutionPolicy cmdlet\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/november\/hey1124\/hsg-11-24-09-01.jpg\" width=\"600\" height=\"512\"><br><a href=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/november\/hey1124\/hsg-11-24-09-01.jpg\"><\/a><br><\/p>\n<p class=\"MsoNormal\">The resultant set of <b>Restricted<\/b> execution policy settings can be obtained by using the <b>Get-ExecutionPolicy<\/b> cmdlet. <\/p>\n<p class=\"TableNum-Title\"><strong>Table 1&emsp; Restricted Execution Policy Settings<\/strong><\/p>\n<table class=\"MsoNormalTable\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableHead\"><span><strong>Level<\/p>\n<p><\/strong><\/span><\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableHead\"><b><span>Meaning<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableText\"><span>Restricted<\/p>\n<p><\/span><\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableText\"><span>Will not run scripts or configuration files.<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableText\"><span>AllSigned<\/p>\n<p><\/span><\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableText\"><span>All scripts and configuration files must be signed by a trusted publisher.<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableText\"><span>RemoteSigned<\/p>\n<p><\/span><\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableText\"><span>All scripts and configuration files downloaded from the Internet must be signed by a trusted publisher.<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableText\"><span>Unrestricted<\/p>\n<p><\/span><\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableText\"><span>All scripts and configuration files will run. Scripts downloaded from the Internet will prompt for permission before running.<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableText\"><span>Bypass<\/p>\n<p><\/span><\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableText\"><span>Nothing is blocked and there are no warnings or prompts.<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"MsoNormal\">\n<p>&nbsp;<\/p>\n<p class=\"MsoNormal\">In addition to the five <b>Restricted<\/b> execution policy settings, you also have the option to configure the scope of the policy. When you set the scope of the <b>Restricted<\/b> execution policy, it determines how the policy is applied. There are three valid values: <b>Process<\/b>, <b>CurrentUser<\/b>, and <b>LocalMachine<\/b>. These values are detailed in Table 2.<\/p>\n<p>&lt;<\/p>\n<p>p style=&#8221;MARGIN: 3pt 0in&#8221; class=&#8221;TableNum-Title&#8221;&gt;<strong>Table 2<span>&nbsp; <\/span>Scope of Restricted Execution Policy Settings<\/strong><\/p>\n<table class=\"MsoNormalTable\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableHead\"><strong>Scope<\/p>\n<p><\/strong><\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableHead\"><b>Meaning<\/p>\n<p><\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableText\">Process<\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableText\">The execution policy affects only the current Windows PowerShell process.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableText\">CurrentUser<\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableText\">The execution policy affects only the current user.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"276\">\n<p class=\"TableText\">LocalMachine<\/p>\n<\/td>\n<td valign=\"top\" width=\"283\">\n<p class=\"TableText\">The execution policy affects all users of the computer.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"MsoNormal\">After you have enabled script support on your computer, it is time to edit your Windows PowerShell profile. To edit your profile, you can use either Notepad or, because a Windows PowerShell profile is a script, your favorite Windows PowerShell script editor such as the Windows PowerShell ISE. (I almost never use an ISE to edit the profile because I do not like navigating to the <b>$profile<\/b> location. Instead, I use Notepad and the Windows PowerShell command line.) With Notepad, I can easily open the profile from the Windows PowerShell command like this:<\/p>\n<p class=\"CodeBlock\"><span><font face=\"Lucida Sans Typewriter\">PS C:&gt; notepad $PROFILE<br>PS C:&gt;<\/p>\n<p><\/font><\/span><\/p>\n<p class=\"Readeraidonly\">This assumes you have in fact created a profile. The creation of a Windows PowerShell profile was discussed in <a href=\"http:\/\/blogs.technet.com\/heyscriptingguy\/archive\/2009\/11\/23\/hey-scripting-guy-how-can-i-use-profiles-with-windows-powershell.aspx\">yesterday&rsquo;s Hey Scripting Guy! post<\/a>. <\/p>\n<p class=\"MsoNormal\">After you have opened the Windows PowerShell profile script, you will want to add comments to it that indicate a date and a version, and to supply placeholders for each of the four types of items that are normally stored in a Windows PowerShell profile. This is seen here:<\/p>\n<p class=\"Fig-Graphic\"><img decoding=\"async\" title=\"Image of profile script with date, version, and four placeholder items\" alt=\"Image of profile script with date, version, and four placeholder items\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/november\/hey1124\/hsg-11-24-09-02.jpg\" width=\"587\" height=\"283\"><\/p>\n<p class=\"MsoNormal\">A Windows PowerShell profile with some common types of variables added to it is seen in the Profile.ps1 script shown here. <\/p>\n<p class=\"CodeBlockScreenedHead\"><strong>Profile.ps1<\/strong><\/p>\n<p class=\"CodeBlock\"><span><font face=\"Lucida Sans Typewriter\"># My PowerShell Profile<br># HSG-11-24-09<br># Ed Wilson, MSFT, 11\/18\/2009<br># Version 1.0<\/p>\n<p># *** Variables ***<br>New-Variable -Name ProfileFolder -Value (Split-Path $PROFILE -Parent) `<br><span>&nbsp;&nbsp; <\/span>-Description MrEd_Variable<br>New-Variable -Name IseProfile `<br><span>&nbsp;&nbsp; <\/span>-Value (Join-Path -Path (Split-Path $PROFILE -Parent) `<br><span>&nbsp;&nbsp; <\/span>-ChildPath Microsoft.PowerShellISE_profile.ps1) `<br><span>&nbsp;&nbsp; <\/span>-Description MrEd_Variable<br>New-Variable -Name MyComputers -Value Hyperv,Win7-PC -Description MrEd_Variable<br>Set-Variable -Name MaximumHistoryCount -Value 128 -Description MrEd_Variable<br>New-Variable -name temp -value $([io.path]::gettemppath()) -Description MrEd_Variable<\/p>\n<p><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><br>The first variable to create is one called <b>ProfileFolder<\/b>. It points to the location where the <b>$PROFILE<\/b> resides. To find this location on computers that run various operating systems, it is necessary to use the <b>Split-Path<\/b> cmdlet to retrieve the parent portion of the location. One thing to keep in mind when creating variables using the <b>New-Variable<\/b> cmdlet is that the name of the variable does not include the dollar sign (this was something that tripped me up more than once when I was just learning Windows PowerShell.) The <b>description<\/b> parameter is used to assign a common name to all of the variables you create in your profile. The use of this parameter will be detailed a bit later: <\/p>\n<p class=\"CodeBlock\"><span><font face=\"Lucida Sans Typewriter\">New-Variable -Name ProfileFolder -Value (Split-Path $PROFILE -Parent) `<br><span>&nbsp;&nbsp; <\/span>-Description MrEd_Variable<\/p>\n<p><\/font><\/span><\/p>\n<p class=\"MsoNormal\">The second variable I like to create in my Windows PowerShell profile is the <b>IseProfile<\/b> variable. Whereas when you are inside the Windows PowerShell ISE the <b>$PROFILE<\/b> variable refers to your ISE profile, outside of the Windows PowerShell ISE, the <b>$PROFILE<\/b> variable refers to your Windows PowerShell console profile. (For a more detailed explanation of this, refer to <a href=\"http:\/\/blogs.technet.com\/heyscriptingguy\/archive\/2009\/11\/23\/hey-scripting-guy-how-can-i-use-profiles-with-windows-powershell.aspx\">yesterday&rsquo;s Hey, Scripting Guy! post<\/a>.) <\/p>\n<p class=\"MsoNormal\">To make it easy to work with my Windows PowerShell ISE profile and to avoid confusion, I like to use the variable shown here:<\/p>\n<p class=\"CodeBlock\"><span><font face=\"Lucida Sans Typewriter\">New-Variable -Name IseProfile `<br><span>&nbsp;&nbsp; <\/span>-Value (Join-Path -Path (Split-Path $PROFILE -Parent) `<br><span>&nbsp;&nbsp; <\/span>-ChildPath Microsoft.PowerShellISE_profile.ps1) `<br><span>&nbsp;&nbsp; <\/span>-Description MrEd_Variable<\/p>\n<p><\/font><\/span><\/p>\n<p class=\"MsoNormal\">I have a few computers on my network with which I routinely work. I get tired of typing individual computer names when I want to find out information about my remote machines. By using a variable to store the various computer names, I can use a command such as this one to test the connections:<\/p>\n<p class=\"CodeBlock\"><span><font face=\"Lucida Sans Typewriter\"><font size=\"2\">PS C:&gt; Test-Connection -ComputerName $MyComputers<\/p>\n<p>Source<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Destination<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>IPV4Address<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>IPV6Address<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Bytes<span>&nbsp;&nbsp;&nbsp; <\/span>Time(ms)<br>&#8212;&#8212;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8212;&#8212;&#8211;<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8212;&#8212;&#8211;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8212;&#8212;&#8211;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8211;<span>&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8212;&#8211;<br>MRED1<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Hyperv<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>192.168.1.100<span>&nbsp;&nbsp;&nbsp; <\/span>{}<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>32<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>0<br>MRED1<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Win7-PC<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>192.168.1.110<span>&nbsp;&nbsp;&nbsp; <\/span>{}<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>32<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>0<br>MRED1<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Hyperv<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>192.168.1.100<span>&nbsp;&nbsp;&nbsp; <\/span>{}<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><\/font><\/font><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey, Scripting Guy! Okay, I get that I can create a profile for Windows PowerShell. What I don&rsquo;t understand is why I would want to create a profile in the first place. It seems to me that Windows PowerShell 2.0 works just fine the way it is. Can you enlighten me a bit? &#8212; VW [&hellip;]<\/p>\n","protected":false},"author":595,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[51,144,3,4,45],"class_list":["post-51943","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-getting-started","tag-profiles","tag-scripting-guy","tag-scripting-techniques","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>Hey, Scripting Guy! Okay, I get that I can create a profile for Windows PowerShell. What I don&rsquo;t understand is why I would want to create a profile in the first place. It seems to me that Windows PowerShell 2.0 works just fine the way it is. Can you enlighten me a bit? &#8212; VW [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/51943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/595"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=51943"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/51943\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=51943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=51943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=51943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}