PowerShell

The PowerShell forum accepts bug reports as well as feedback and suggestions. For more information, check out the PowerShell Homepage

The following is a list of the states we use to track items.

status meaning
survey We saw this and we are considering it. Please upvote if it’s important to you.
needs more information We don’t understand the issue and need additional details.
investigating We are looking at this internally to understand things like: scenario, reproduction of issue, costing, or other technical details.
in queue The issue is understood and in our unprioritized backlog. Your votes will be used to drive prioritization of this work.

Please feel free to provide feedback or file bugs here.

(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  • Hot ideas
  • Top ideas
  • New ideas
  • My feedback
  1. Add -ListLoaded parameter to the Get-Module Cmdlet

    For the Get-Module cmdlet, there is a -ListAvailable parameter to show the modules that are available, but not loaded. Although Get-Module without any parameters does show which modules ARE loaded, it would be nice (i.e. intuitive - for those just learning PowerShell as well as enhance readability) if there was a corresponding -ListLoaded parameter as well.

    1 vote
    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)

      We’ll send you updates on this idea

      0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
    • Install-Module MaximumVersion not respected

      The Install-Module cmdlet does not respect the MaximumVersion parameter if a newer version of the module is already installed.

      Test Case:
      # Install v2 of Module
      Install-Module AzureRM.profile -RequiredVersion 2.3.0

      # Try to install latest v1 of Module
      Install-Module AzureRM.profile -MinimumVersion 1.0.0 -MaximumVersion 1.999.999 -Verbose

      Output:
      VERBOSE: Version '2.3.0' of module 'AzureRM.profile' is already installed

      1 vote
      Sign in
      Check!
      (thinking…)
      Reset
      or sign in with
      • facebook
      • google
        Password icon
        I agree to the terms of service
        Signed in as (Sign out)

        We’ll send you updates on this idea

        1 comment  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →

        Thanks for the note. This fails because you specified installing an older version when a newer version exists, without supplying -force.

        The full message (at least on my system) is:
        WARNING: Version ‘[existing version]’ of module ‘[modulename]’ is already installed at ‘[fullpath location]’. To install version ‘[desired version], run Install-Module and add the -Force parameter, this command will install version ’[desired version]’ in side-by-side with version ‘[existing version]’.

        If you supply -Force and still see this issue, please update this item in UserVoice with the information from the following commands:
        $psversiontable
        get-packageprovider -li

      • Provide means to qualify Script names to avoid conflicts

        Hello!

        The PowerShell Gallery currently qualifies 'Scripts' by name only. For example, if someone has already published Some-Script, I have no way to publish my own Some-Script, even if the original is related only in name, has major functional differences, etc.

        It would be helpful to allow qualifying these. Perhaps resolve by date published first (i.e. compatible with current system), while allowing qualification by username, similar to how GitHub handles this.

        Thus, I could install RamblingCookieMonster\Some-Script, even if EvilDoer\Some-Script already existed.

        The same design could also be extended to modules, although those seem less likely to conflict (this may change…

        16 votes
        Sign in
        Check!
        (thinking…)
        Reset
        or sign in with
        • facebook
        • google
          Password icon
          I agree to the terms of service
          Signed in as (Sign out)

          We’ll send you updates on this idea

          survey  ·  4 comments  ·  PowerShell Gallery  ·  Flag idea as inappropriate…  ·  Admin →
        • @psboundparameters

          Right now @psboundparameters does not include the default values specified in the function. This makes @psboundparameters much less useful when calling functions that specify many default values. Should we add this to @PSBoundParameters or define a new hash table that includes @psboundparameters and default values? Attached is some code to help illustrate.

          <#
          .Synopsis
          Discover which computers have DHCP enabled.
          .DESCRIPTION
          Use this script to find out which computers are still using DHCP.
          .EXAMPLE
          Get-DHCPEnabledComputers
          .EXAMPLE
          Another example of how to use this cmdlet
          #>
          function Get-DHCPEnabledComputer
          {
          [CmdletBinding()]
          [Alias()]
          [OutputType([int])]
          Param
          ([Parameter(Mandatory = $false,
          ValueFromPipelineByPropertyName=$true)]

          [Alias('Name','Host','IPAddress')]
          [ValidateLength(3,30)]
          [string[]]$computername =…

          1 vote
          Sign in
          Check!
          (thinking…)
          Reset
          or sign in with
          • facebook
          • google
            Password icon
            I agree to the terms of service
            Signed in as (Sign out)

            We’ll send you updates on this idea

            0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
          • Implicit import and Import-Module load a lower version from local profile when higher is available in global profile

            This is bug as far as I understand

            ****Code****

            $InformationPreference="Continue"
            #region Uninstall module
            Uninstall-Module MarkdownPS -AllVersions
            #endregion

            #region Install module
            Find-Module MarkdownPS -Repository PSGallery -MaximumVersion 1.2 |Install-Module -Scope CurrentUser -Force
            Find-Module MarkdownPS -Repository PSGallery -MaximumVersion 1.4 |Install-Module -Scope AllUsers -Force
            #endregion

            #region list module version
            Get-Module MarkdownPS -ListAvailable |Format-Table Name,Version,ModuleBase
            #endregion

            #region Import module and show the issue
            $module=Import-Module MarkdownPS -PassThru -Verbose
            Write-Information "Imported $($module.Name) with version $($module.Version) from $($module.ModuleBase)"
            #endregion

            ***Output****
            Name Version ModuleBase
            ---- ------- ----------
            MarkdownPS 1.2 C:\Users\asarafian\Documents\WindowsPowerShell\Modules\MarkdownPS\1.2
            MarkdownPS 1.4 C:\Program Files\WindowsPowerShell\Modules\MarkdownPS\1.4

            VERBOSE: Loading module from path 'C:\Users\asarafian\Documents\WindowsPowerShell\Modules\MarkdownPS\1.2\MarkdownPS.psd1'.
            VERBOSE: Importing function 'New-MDCharacterStyle'.
            VERBOSE: Importing function 'New-MDCode'.
            VERBOSE:…

            1 vote
            Sign in
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              I agree to the terms of service
              Signed in as (Sign out)

              We’ll send you updates on this idea

              0 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
            • New-EventLog needs to allow specifying CategoryCount

              New-EventLog allows specifying a CategoryResourceFile but not a 'CategoryCount'. This field then gets created in the registry as 0 and so I effectively have no categories.

              1 vote
              Sign in
              Check!
              (thinking…)
              Reset
              or sign in with
              • facebook
              • google
                Password icon
                I agree to the terms of service
                Signed in as (Sign out)

                We’ll send you updates on this idea

                0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
              • GUI change for ISE

                Currently powershell ISE is split into 3 horizontal panels with the following sections:script, results, and single commands.
                It makes more sense to do 3 panels where there are 2 horizontal panels; the top for single commands, bottom for script, and the results of the scripts or commands be on a 3rd full screen panel to the right, similar to an IDE.

                1 vote
                Sign in
                Check!
                (thinking…)
                Reset
                or sign in with
                • facebook
                • google
                  Password icon
                  I agree to the terms of service
                  Signed in as (Sign out)

                  We’ll send you updates on this idea

                  survey  ·  0 comments  ·  ISE and tooling  ·  Flag idea as inappropriate…  ·  Admin →
                • DSC registry resource support '/' in the registry path.

                  DSC registry resource support '/' in the registry path.

                  If you use a path containing a / e.g. "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 40/128" then the builtin registry resource you end up with an error or the wrong registry path being created.

                  This config will not work. I've have to create my own module to create the folder and then us the registry resource to create the actual key.

                  Registry "DisableCipherRC240128"
                  {
                  Key = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 40/128"
                  ValueName = "Enabled"
                  ValueType = "Dword"
                  ValueData = "0"
                  Ensure = "Present"
                  Force = $true
                  }

                  The register resource should support / in the path.

                  1 vote
                  Sign in
                  Check!
                  (thinking…)
                  Reset
                  or sign in with
                  • facebook
                  • google
                    Password icon
                    I agree to the terms of service
                    Signed in as (Sign out)

                    We’ll send you updates on this idea

                    0 comments  ·  Desired State Configuration (DSC)  ·  Flag idea as inappropriate…  ·  Admin →
                  • PS for Win/10 - Need download available to repair DSIM or sfc fail

                    Add Win/10 to install packages:

                    I was unable to re-install PS from available downloads which only specify Windows 7 or Windows 8.1. Need one for Windows 10. PC was previous 8.1 which updated to Win/10. There is also no option in properties to emulate 7 or 8.

                    1 vote
                    Sign in
                    Check!
                    (thinking…)
                    Reset
                    or sign in with
                    • facebook
                    • google
                      Password icon
                      I agree to the terms of service
                      Signed in as (Sign out)

                      We’ll send you updates on this idea

                      2 comments  ·  Package Management  ·  Flag idea as inappropriate…  ·  Admin →
                    • Get-Certificate is misleading

                      This cmdlet, rather than listing all certificates on the machine, which is how a Get-Cmdlet tents to work, instead Requests a new certificate from a Certificate Authority.

                      This is NOT the way that Get-* cmdlets are supposed to work. And we already have a perfectly good Request-* verb sitting out there, which would be the right verb for this cmdlet.

                      This would consitute a breaking change, but I think it's frankly broken today, so I'd call it a 'restorative change' instead.

                      29 votes
                      Sign in
                      Check!
                      (thinking…)
                      Reset
                      or sign in with
                      • facebook
                      • google
                        Password icon
                        I agree to the terms of service
                        Signed in as (Sign out)

                        We’ll send you updates on this idea

                        5 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                      • Powershell (self) update

                        It would be very helpful if we could update PowerShell to newest version through PS package manager or OS included script - with all dependencies and prerequisites checks.

                        5 votes
                        Sign in
                        Check!
                        (thinking…)
                        Reset
                        or sign in with
                        • facebook
                        • google
                          Password icon
                          I agree to the terms of service
                          Signed in as (Sign out)

                          We’ll send you updates on this idea

                          1 comment  ·  Package Management  ·  Flag idea as inappropriate…  ·  Admin →

                          This is definitely something we’re thinking about and working towards. The question becomes whether it’s “good enough” to update all the built-in modules (like MS.PS.Utility or MS.PS.Management) via PowerShellGet or if we need to actually update PowerShell itself.

                          As we work on PowerShell Core on GitHub (https://github.com/powershell/powershell) we’re beginning to think about how more engine work might be abstracted into individual modules (which, again, could be updated async from the Gallery).

                          That being said, there also is probably some value in installing PowerShell Core all up via “Install-Package” or “Update-Package”. Given that PS Core is fully side-by-side enabled, you could slap down a new version of PowerShell Core next to the one from which you’re actually running PowerShell Core.

                          At the same time, updating Windows PowerShell (the Windows-only edition of PowerShell that sits on top of the full, .NET Framework) from within Windows PowerShell is significantly trickier…

                        • ActiveDirectory PSDrive problem with PSReadline in Windows 10

                          I am experiencing an issue with Windows 10 and the PSReadline module. Apparently when the PSReadline module is in memory, the default behavior for tab completion is to append a trailing backslash to the relative path. This is not too much of a problem with the file provider and the registry providers but it appears to wreak havoc on the Active Directory PS Provider.

                          This may be reproduced by navigating to the AD: drive and they trying to use tab completion for the Set-Location or Get-ChildItem cmdlets. You will receive the error Cannot find path because it does not exist.

                          2 votes
                          Sign in
                          Check!
                          (thinking…)
                          Reset
                          or sign in with
                          • facebook
                          • google
                            Password icon
                            I agree to the terms of service
                            Signed in as (Sign out)

                            We’ll send you updates on this idea

                            0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →

                            Hi Robert,

                            Thanks for the report! I went ahead and opened an issue in the PSReadline GitHub repo to track this: https://github.com/lzybkr/PSReadLine/issues/473

                            I propose that it might be worth it to simply special case PSReadline to not append a trailing backslash while in the AD provider, but I think you should probably also file something on the AD team’s UserVoice to support trailing backslashes (though this work might be more difficult): https://windowsserver.uservoice.com/forums/304621-active-directory

                            Thanks,
                            Joey

                          • Format-* incorrectly format warning objects

                            # Given this:

                            <#PS#> $a = Write-Warning test 3>&1

                            # PowerShell will incorrectly prepend "WARNING: " to:

                            <#PS#> $a | ft * -f

                            WriteWarningStream FullyQualifiedWarningId Message InvocationInfo PipelineIterationInfo
                            ------------------ ----------------------- ------- -------------- ---------------------
                            WARNING: True test System.Management.Automation.InvocationInfo {0, 0, 0}

                            <#PS#> $a | fl * -f

                            WARNING: WriteWarningStream : True
                            WARNING: FullyQualifiedWarningId :
                            WARNING: Message : test
                            WARNING: InvocationInfo : System.Management.Automation.InvocationInfo
                            WARNING: PipelineIterationInfo : {0, 0, 0}
                            WARNING:

                            1 vote
                            Sign in
                            Check!
                            (thinking…)
                            Reset
                            or sign in with
                            • facebook
                            • google
                              Password icon
                              I agree to the terms of service
                              Signed in as (Sign out)

                              We’ll send you updates on this idea

                              0 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
                            • Format-Table

                              "Get-WmiObject win32_operatingsystem | Format-Table -AutoSize"
                              In the PowerShell ISE the AutoSize parameter didn't effects SerialNumber Column .

                              1 vote
                              Sign in
                              Check!
                              (thinking…)
                              Reset
                              or sign in with
                              • facebook
                              • google
                                Password icon
                                I agree to the terms of service
                                Signed in as (Sign out)

                                We’ll send you updates on this idea

                                5 comments  ·  ISE and tooling  ·  Flag idea as inappropriate…  ·  Admin →

                                Either I’m unable to repro this, or I am missing the issue. I get consistent output between the ISE and standard PS shell.

                                Can you provide the following, please, so I can understand it better:
                                > Copy & paste the output of the standard shell & the ISE for this command. Don’t worry that it doesn’t look right in this editor, I’ll convert it to a non-proportional font to understand it.
                                > In one of the windows, run $psversiontable, and include that in the output.

                                One last request – can you try replacing Get-WMIObject with Get-CimInstance & see if it does the same thing? The -WMI cmdlets have been replaced with the largely equivalent -Cim cmdlets for a while, and you should really be using the newer cmdlets.

                              • Tab completion should complete Verb then Noun

                                With hundreds of CmdLets, tab-completion becomes arduous. This could have a new mode that's two step, so I type:

                                Reg [tab]

                                Which completes "Register-" and waits for more input.

                                Then I type:

                                ps [tab]

                                Which completes the rest to make "Register-PSRepository".

                                14 votes
                                Sign in
                                Check!
                                (thinking…)
                                Reset
                                or sign in with
                                • facebook
                                • google
                                  Password icon
                                  I agree to the terms of service
                                  Signed in as (Sign out)

                                  We’ll send you updates on this idea

                                  survey  ·  0 comments  ·  ISE and tooling  ·  Flag idea as inappropriate…  ·  Admin →
                                • ScriptBlock.GetNewClosure

                                  PS>$f = { param($x) { { $x }.getnewclosure() }.getnewclosure() }
                                  PS>& (& (& $f 0))
                                  2
                                  3
                                  PS>

                                  Why I get no 1. This bug?

                                  1 vote
                                  Sign in
                                  Check!
                                  (thinking…)
                                  Reset
                                  or sign in with
                                  • facebook
                                  • google
                                    Password icon
                                    I agree to the terms of service
                                    Signed in as (Sign out)

                                    We’ll send you updates on this idea

                                    0 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                                  • Should Save-Script download all modules defined as dependencies or not?

                                    Right now, when you run the Save-Script command you end up with a script and all its module dependencies. In my case, I only wanted a script and got 100+ MB of modules too. :(

                                    It would be better if you introduce the -IncludeModules parameter, and by default only download a script with the Save-Script.

                                    Downloading the modules with the script makes sense for Install-Script, but not so much with Save-Script, in my opinion.

                                    7 votes
                                    Sign in
                                    Check!
                                    (thinking…)
                                    Reset
                                    or sign in with
                                    • facebook
                                    • google
                                      Password icon
                                      I agree to the terms of service
                                      Signed in as (Sign out)

                                      We’ll send you updates on this idea

                                      survey  ·  5 comments  ·  Package Management  ·  Flag idea as inappropriate…  ·  Admin →
                                    • remove-item -recurse -exclude does not work, at least if you are excluding a folder

                                      "remove-item temp2\* -recurse -exclude efg" will still remove efg. I have tried every combination of wildcards and relative and absolute paths that I can think of and efg and its contents are always removed. Searching StackOverflow I can see that I'm not the only one with this problem.

                                      2 votes
                                      Sign in
                                      Check!
                                      (thinking…)
                                      Reset
                                      or sign in with
                                      • facebook
                                      • google
                                        Password icon
                                        I agree to the terms of service
                                        Signed in as (Sign out)

                                        We’ll send you updates on this idea

                                        1 comment  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
                                      • Add DSC Pull Server with Private PowerShell Gallery as a deployment option

                                        With PowerShell gallery coming to on-prem deployments, it will be a source of PowerShell DSC and other modules for all enterprise IT needs. PowerShell gallery uses SQL backend as a module store. There has been an ask to move the existing Pull Server database to SQL. By integrating Pull Server as a deployment option within PowerShell Gallery, the existing SQL store can be used as module and configuration store and eliminates the need for making a copy of all modules on a separate pull server. This also brings in the advantages / well-known deployment models of a typical web application…

                                        47 votes
                                        Sign in
                                        Check!
                                        (thinking…)
                                        Reset
                                        or sign in with
                                        • facebook
                                        • google
                                          Password icon
                                          I agree to the terms of service
                                          Signed in as (Sign out)

                                          We’ll send you updates on this idea

                                          3 comments  ·  Desired State Configuration (DSC)  ·  Flag idea as inappropriate…  ·  Admin →
                                        • Add A "Start In" Directory for Enter-PSSession

                                          By default, we are placed into Documents (at least I am), then have to change directories. It would be nice to be able to specify a directory we'd like to start in using Enter-PSSession.

                                          16 votes
                                          Sign in
                                          Check!
                                          (thinking…)
                                          Reset
                                          or sign in with
                                          • facebook
                                          • google
                                            Password icon
                                            I agree to the terms of service
                                            Signed in as (Sign out)

                                            We’ll send you updates on this idea

                                            survey  ·  1 comment  ·  WinRM  ·  Flag idea as inappropriate…  ·  Admin →
                                          • Don't see your idea?

                                          Feedback and Knowledge Base