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.
  • Hot ideas
  • Top ideas
  • New ideas
  • My feedback
  1. Cmdlet for getting list of Installed Software via Registry instead of win32_product.

    Would be great to have a builtin Cmdlet for getting list of Installed Software via Registry instead of win32_product.

    Why win32product is bad:
    https://sdmsoftware.com/group-policy-blog/wmi/why-win32
    product-is-bad-news/

    It would be faster, and would not trigger validation of all installed packages.

    Would use the following regkeys to return list of software (name, version, installDate) on local or remote machine (requires Remote Registry to be enabled on remote machine).

    HKLM:\Software\microsoft\windows\currentVersion\Uninstall
    HKLM:\Software\wow6432node\microsoft\windows\currentVersion\Uninstall

    7 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

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

    Will watch for folks to add their voices to this.
    In the meantime, if there is someone who wants to publish a user-contributed item to the PowerShell Gallery that does this, it would certainly be welcomed.

  2. Bug: Move-Item

    Noticed a bug with the "Move-Item" cmdlet.

    Example:
    The source folder and destination folder have different permissions sets.

    $src = "C:\Path\To\Source"
    $dest = "D:\Path\To\Dest"

    ForEach($file in $src)
    {

      Move-Item $($file.fullname) -destination $dest
    

    }

    Using this block of code to move files from one folder to another will result in the files not inheriting permissions from the destination folder.

    The files that were moved retain the permissions from the source folder.

    This doesn't happen with Copy-Item or when you drag / drop files.

    Workaround I found is to add "icacls $dest /T RESET" to the end of the script.

    7 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  1 comment  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
  3. Make PowerShell Gallery module files and scripts searchable

    Now that you can view file contents in the Gallery website, it would be very useful if you would expand the search feature such that it searches the contents of scripts and files inside of modules. This would allow users to search for a specific command or a .NET class or method, which will help discover Gallery items that exist that solve a particular problem someone is trying to solve. It will also help authors discover when something they might want to create has already been created without having to guess module names or script names. The results should show…

    7 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  0 comments  ·  PowerShell Gallery  ·  Flag idea as inappropriate…  ·  Admin →
  4. RSS Feed for Modules

    It is currently hard to get notifications when PowerShell modules get updated. It would be nice if there would be an RSS feed for new versions of a package, then my RSS reader could notify me that a new version is available and I could take action.

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

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

    We are investigating this and have it in our backlog queue.
    The priority of the feature will be impacted by the number of votes, which right now is fairly low for this task.

  5. Set the PowerShell Gallery up for Twitter Cards

    When posting a link to a GitHub repo on Twitter, the URL is generally replaced with a Twitter summary card. This is not the case, currently, when posting links to items on the Gallery. The display of cards makes these links stand out more and (should) help with social sharing of PowerShell content.

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  0 comments  ·  PowerShell Gallery  ·  Flag idea as inappropriate…  ·  Admin →
  6. PowerShell fails to start if path contains brackets

    In a variety of cases, attempting to launch PowerShell from a path containing square brackets either fails entirely, or fails to resolve the relative working directory. For example:

    With this command, PowerShell won't launch:

    PS C:\T[e]st> Start PowerShell

    Start : Cannot perform operation because the wildcard path C:\T[e]st did not resolve to a file.
    
    At line:1 char:1
    + Start PowerShell
    + ~~~~~~~~~~~~~~~~
    + CategoryInfo : OpenError: (C:\T[e]st:String) [Start-Process], FileNotFoundException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.StartProcessCommand

    From CMD or Powershell, this command starts Powershell, but with the wrong working directory:

    C:\T[e]st> PowerShell

    Windows PowerShell
    
    Copyright (C) 2015 Microsoft Corporation. All rights reserved.

    PS…

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  1 comment  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
  7. Please make -NoTypeInformation the default for Export-CSV

    I'm pretty sure that Export-CSV is used for creating Excel compatible files far more often than it is used for Serialising and Deserialising Type-consistent PS Objects.

    Alternatively / additionally adding a PS preference variable to set the default behaviour.

    I understand that this is simply a convenience thing, eliminating the need to add an extra parameter for the most common use case.

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  0 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
  8. BUG: ScheduledTaskTrigger -RandomDelay does not work

    New-ScheduledTaskTrigger -AtLogOn -RandomDelay 0:15:00; or
    New-ScheduledTaskTrigger -AtLogOn -RandomDelay (new-Timespan -Minutes 15)
    does not set the delay option. The checkbox in ScheduledTask Panel never gets set.
    Windows 10.0.14393 x64 de-DE (German Installation)

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  3 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  9. Windows Server as a REST API

    Delegating access to Windows Server functions (e.g., create a DHCP reservation, modify a DNS record, provision a share, etc.) in a heterogeneous, modern, self-service environment is greatly hindered by available protocols. While RPC, CIM, psremoting/wsman/soap, et al. are technically open, they are far enough from modern mainstream app heterogeneous ease of use that they are practically Windows only.
    Windows should provide a facility to easily expose Windows functions as simple REST-ish APIs accessible to any calling platform. JEA makes a great engine for executing delegated functions, so I would imagine using JEA or similar as the execution context, but with…

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  2 comments  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
  10. Get-Help cmdlet should skip error and continue updating help doc.

    I know that there are many cmdlets help documentation not completed yet. But, it's a pain when trying to use the "Update-help" cmdlet and see it error-out due to an unfinished module help.

    I think it should be a good idea to display the error and continue (or try) update the rest of our installed module(s).

    In my case, I'm getting an error update the help on the new SQLServer module. But this is now completing the update for the rest of my existing module.

    If this update is done alphabetically then the update is stopping at the SQLServer module…

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  0 comments  ·  Documentation  ·  Flag idea as inappropriate…  ·  Admin →
  11. Improve the speed of Get-EventLog

    As you describe here:
    https://blogs.technet.microsoft.com/heyscriptingguy/2011/03/08/how-to-improve-the-performance-of-a-powershell-event-log-query/
    The Get-EventLog command is slow. Using Get-WinEvent is much faster.The Get-EventLog is still easier to use though.
    Maybe Get-EventLog could be refactored to use Get-WinEvent

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  1 comment  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  12. Job cmdlets fail with UTF-8 codepage

    Powershell jobs (eg, Start-Job, Wait-Job, Receive-Job) fail when Powershell's codepage is set to UTF8.

    Simple reproduction on Server 2012R2 w/ PS5:
    from cmd.exe, set the parent process codepage and start powershell with:

    chcp 65001
    powershell

    from the powershell that just started:
    $job = Start-Job -ScriptBlock { Write-Output yo }
    Receive-Job $job -Wait

    The Receive-Job call will fail with: "
    [localhost] The background process reported an error with the following message: Cannot process an element with node type "Text". Only Element and EndElement node types are supported. at
    System.Management.Automation.Remoting.OutOfProcessUtils.ProcesData(String data, DataProcessingDelegates callbacks).

    + CategoryInfo          : OpenError: (localhost:String) [], PSRemotingTransportException
    
    + FullyQualifiedErrorId
    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  4 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
  13. 6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  0 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
  14. Suggestion: Allow explicit hexadecimal casts to [UInt32]

    I find it frustrating that there is no simple method of casting a 32-bit number with its high order bit set. For example consider the following number - 0x80000001:

    [UInt32] 0x80000001 <- throws an exception because it is implicitly converted to an Int32 which then cannot be converted to a UInt32.

    Various workarounds:
    * [UInt32] '0x80000001' <- String conversion. This operation is unnecessarily expensive.
    * [UInt32] 0x80000001L <- Downcast an Int64 to a UInt32.
    * [UInt32] 0x80000001 -band [UInt32]::MaxValue <- Perform bit math to force the conversion while preserving the bits.

    Proposed fix:

    As Jason Shirk suggested, it would probably…

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  3 comments  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
  15. The "online version" URL in Get-Help -ShowWindow should be a hyperlink

    When -ShowWindow is used with Get-Help (or the ? button is clicked in the ISE), one gets something like:

    RelatedLinks

    Online Version: <a rel="nofollow noreferrer" href="http://go.microsoft.com/fwlink/p/?linkid=289793">http://go.microsoft.com/fwlink/p/?linkid=289793</a>
    

    The URL should be clickable so that one gets the online version without the need to copy/paste the URL into the browser

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  1 comment  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
  16. Accept NuGet Interval Notation for Specifying Version Numbers

    When attempting to load a module by fully qualified module name, PowerShell should allow for a single "ModuleVersion" field that accepts NuGet's interval notation for specifying ranges. This change could be added without breaking change as this spec (in interval notation):

    $fqn = @{ModuleName='BingWallpaper';ModuleVersion='1.0'}

    Tells PowerShell to load any module >= 1.0 which is backwards compatible with how PowerShell would interpret that version string today. But if I wanted to follow semver rules, I could specify:

    $fqn = @{ModuleName='BingWallpaper';ModuleVersion='[1.0,2.0)'}

    Which says load any matching module >= 1.0 but < 2.0.

    The interval notation is quite expressive. See the NuGet docs…

    6 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    2 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →

    We understand that this would allow a single-point expression of MinimumVersion and MaximumVersion. However, it’s unclear why changing to that nomenclature going to be a high priority. Additional information, particularly about why the existing functionality is insufficient – would help – thanks!

  17. 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. "HKEYLOCALMACHINE\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 &quot;DisableCipherRC240128&quot;
    
    {
    Key = &quot;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 40/128&quot;
    ValueName = &quot;Enabled&quot;
    ValueType = &quot;Dword&quot;
    ValueData = &quot;0&quot;
    Ensure = &quot;Present&quot;
    Force = $true
    }

    The register resource should support / in the path.

    5 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    0 comments  ·  Desired State Configuration (DSC)  ·  Flag idea as inappropriate…  ·  Admin →
  18. Get-Date -UFormat %V is incorrect

    Get-Date -UFormat %V is supposed to return the ISO 6801 week number like Unix does. I don't understand what value it currently returns (I think it's nothing sensible), but it definitely is NOT the correct week number!

    5 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  19. Add IsWindows to PS5.1 to allow cleaner code

    PowerShell for Linux and OSX added IsLinux, IsOSX, and IsCore (?). IsWindows was added for PowerShellCore.

    Can you add IsWindows to allow cleaner code to not have to assume if it is False for Linux,OSX,Core, it's full Windows (not nano), etc?

    5 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  1 comment  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
  20. Add a Duration column to the History output

    The output of Get-History has Start and End times which can be put together to calculate a Duration. Why not add that to the default formatting of history objects?

    As a workaround, I use these:
    https://gist.github.com/Jaykul/2d4dc5e4f5195c726368435055b8acdb

    5 votes
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  1 comment  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  • Don't see your idea?

Feedback and Knowledge Base