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. get-credential with a smart card

    I work in an environment that enforces 'smart card required' for all accounts admin or otherwise so I have multiple certificates on the smart card. I understand you can use a smart card with get-credential but the problem is it only has the first cert available when prompted. I need there to be a way to make all certs on the smart card available when prompted with get-credential. I'm also stuck using ActivClient so hopefully this isn't a limitation of the smart card provider.

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  2. Get-Content bug: A parameter cannot be found that matches parameter name 'Encoding'

    Get-Conent with the Encoding parameter works against local file system paths such as this example:
    Get-Content -Encoding Byte -Path C:\Users\desktop.ini

    However, against a mapped network drive it does not:
    Get-Content -Encoding Byte -Path I:\Users\desktop.ini
    Get-Content : A parameter cannot be found that matches parameter name 'Encoding'.
    At line:1 char:13
    + Get-Content -Encoding Byte -Path I:\Users\desktop.ini

    The issue can be re-produced against a non-existing network drive as well.
    The behaviour is not expected and the error message is very misleading to users who don`t know what dynamic parameters is, since the same code works against a local path where -Encoding is…

    4 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 →
  3. Get-Service throws wrong exception if remote host is offline

    Get-Service returns exception as "Cannot find any service with service name" even if we give an offline/not existing host as argument for -ComputerName parameter

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

    We’ll send you updates on this idea

    1 comment  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  4. Bug: Copy-Item -ToSession does not copy the first folder and instead copies that folder's items to the top-level directory of the destinatio

    TLDR

    When copying files via the code below, if the first item copied is a folder it is not created in the destination. The files within that folder are instead copied to the top-level folder of the destination. All other files and folders copy normally.

    Code

    Copy-Item -ToSession $Session -Path C:\Some\Path* -Destination C:\Another\Path

    Result

    If there is a subfolder in C:\Some\Path called 'Folder' with files inside it called 'First.txt', 'Second.txt', and 'Third.txt', and if this is the first folder copied the destination will look like this:

    C:\Another\Path\First.txt
    C:\Another\Path\Second.txt
    C:\Another\Path\Third.txt
    ... Other Files and folders

    Executed on a Server 2012R2 with…

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

    We’ll send you updates on this idea

    1 comment  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  5. Invoke-RestMethod fails to convert large JSON requests

    Invoke-RestMethod fails to convert large JSON requests.
    "For JavaScript Object Notation (JSON) or XML, Windows PowerShell converts (or deserializes) the content into objects."

    If the request is large, Invoke-RestMethod returns just a string. This isn't documented anywhere and there's no way to change the limit. This could be related to: https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/11088000-convertfrom-json-doesn-t-allow-you-to-modify-the-m

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  6. Get-Service Name parameter allows Null value

    Get-Service -Name $Null returns all services. Expected behavior would be for Name to have ValidateNotNullOrEmpty attribute assigned.

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

    We’ll send you updates on this idea

    3 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  7. Invoke-RestMethod returns an unrolled array

    The following command at the moment of writing is supposed to return 8 objects
    describing GitHub repositories

    Invoke-RestMethod <a rel="nofollow noreferrer" href="https://api.github.com/users/nightroman/repos">https://api.github.com/users/nightroman/repos</a>
    

    There is an issue though. It looks like it gets objects as an unrolled array.
    This is not a problem if the result is cached in a local variable. But it may
    be a problem if Invoke-RestMethod is used directly in a foreach loop. The
    loop always performs a single iteration and the single item is the whole array
    of objects. In contrast, if the cached result variable is used in foreach
    then all items are processed one…

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

    We’ll send you updates on this idea

    6 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  8. Add Reverse-String cmdlet

    Votes from Connect: 9

    Original Date Submitted: 7/16/2015 4:32:00 PM

    Description:
    Contact Information
    Handle: happysysadm
    Site Name: PowerShell
    Feedback ID: 1551725


    Problem Description:
    Hi,

    it would be nice to have a Reverse-String cmdlet. One that takes a string and reverse it. For example, "asdf" becomes "fdsa".

    It could be aliased to rs (for reverse-string).

    The reverse method for [array] is ok, but having a cmdlet and/or a [string] method. would be better.

    Other well-known languages have routines for this:

    For instance in Perl 6 you have the flip routine, which returns the string reversed character by character.
    "Perl".flip; # lreP …

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  9. Stop-Transcript should return a file path (System.Io.FileInfo), not a string

    Votes from Connect: 6

    Original Date Submitted: 3/4/2015 12:59:24 AM

    Description:
    Contact Information
    Handle: June Blender
    Site Name: PowerShell
    Feedback ID: 1159049


    Frequency: Always Happens
    Regression: Yes, this happens in all previous versions

    Problem Description:
    Stop-Transcript returns a string that contains the path to the transcript file. (The string has grammatical errors, too.)

    e.g. Transcript stopped, output file is C:\Users\JuneBlender\Documents\PowerShell_transcript.JUNEB-SRV01.yk0IWlkr.2015030311
    4238.txt

    To use the file in a subsequent command, you have to parse it cmd.exe-style. PowerShell can do better. Returning a file path would allow you to pipe the output to further commands.

    e.g.
    PC C:&gt; Stop-Transcript
    C:\Users\JuneBlender\Documents\PowerShell_transcript.JUNEB-Server01.yk0IWlkr.20150303114238.txt

    Product Studio…

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  10. Get-FileHash only accepts single argument for -Algorithm parameter

    Votes from Connect: 3

    Original Date Submitted: 7/11/2014 10:53:05 PM

    Description:
    Contact Information
    Handle: Trevor Sullivan
    Site Name: PowerShell
    Feedback ID: 918243


    Frequency: Always Happens
    Regression: No, this is new to the most recent version

    Problem Description:
    The Get-FileHash command only accepts a single argument for its Algorithm parameter. If you want to retrieve two different hashes, then the command must be called once for each hashing algorithm. Please enable multiple algorithms to be passed into the Get-FileHash command.

    Product Studio item created by Connect Synchronizer due to creation of feedback ID 918243 (http://connect.microsoft.com/PowerShell/feedback/ViewFeedback.aspx?FeedbackID=918243).

    Repro Steps:
    Run Get-FileHash…

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  11. Enable-PSRemoting support for ComputerName parameter

    Votes from Connect: 17

    Original Date Submitted: 11/23/2010 4:09:27 PM

    Description:
    Contact Information
    Handle: Aleksandar Nikolic
    Site Name: PowerShell
    Feedback ID: 623892


    Frequency: Always Happens
    Regression: No, this is new to the most recent version

    Problem Description:
    I would like to see Enable-PSRemoting support for ComputerName parameter to enable remoting on a remote machine.

    If you are in a domain environment then the ComputerName parameter would not mean much because you could use GPO to enable PowerShell remoting wherever you like. However, in a workgroup environment it could be quite useful.

    Product Studio item created by Connect Synchronizer due to…

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  12. Set-Acl cannot change filesystem/registry ACL if current user or one of his group hasn't TakeOwnership permission

    Votes from Connect: 20

    Original Date Submitted: 2/27/2009 5:16:35 PM

    Description:
    Contact Information
    Handle: Itanium2
    Site Name: PowerShell
    Feedback ID: 418906


    Frequency: Always Happens
    Regression: Yes, this happens in previous released versions

    Problem Description:
    For example, we have a folder and Administrator or Administrators group is object owner and doesn't have explicit (or inherited from parent) ACE with TakeOwnership right. Running code (see reprodiction steps) we get an error.

    Product Studio item created by Connect Synchronizer due to creation of feedback ID 418906 (http://connect.microsoft.com/feedback/ViewFeedback.aspx?SiteID=99&FeedbackID=418906).

    Repro Steps:
    here is code that adds Everyone group to existing ACL:
    $acl =…

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  13. New-SMBShare -Temporary seems to do nothing

    New-SMBShare -Temporary should remove the share after a reboot but that's nothing happening

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  14. Bug - Get-WsusComputer Cmdlet

    The optional parameter "-ComputerUpdateStatus" does not filter at all and instead returns all computers.

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  15. New-SmbShare -Whatif not working

    New-SmbShare with -Whatif switch NOT working, it runs the command instead of showing the whatif massage

    Test with vscode insider

    Name Value


    PSVersion 5.1.17134.228
    PSEdition Desktop
    PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
    BuildVersion 10.0.17134.228
    CLRVersion 4.0.30319.42000
    WSManStackVersion 3.0
    PSRemotingProtocolVersion 2.3
    SerializationVersion 1.1.0.1

    3 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 →
  16. Which server member in a cluster holds the quorum disk (Active/Passive)

    Every month we have to go thru a list of servers sometimes as many as 800 plus servers and determine which of the 2 member servers of a cluster holds the quorum disk. Could be 2 or 4 nodes in the cluster. Helps when running our patching process and how we schedule our patching process. TIA - Bob

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  17. Set-Location/Push-Location should update process' current directory

    The Set-Location/Push-Location cmdlets do not update the calling process' current directory. This leads to surprising behavior when working with non-PowerShell APIs. Simple example below.

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

    We’ll send you updates on this idea

    1 comment  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  18. get-command -module only shows aliases with verb-noun naming

    If a module exports aliases which don't follow the verb-noun convention (which most don't), they aren't shown with get-command -module <modulename>.

    Get-command -module <modulename> -commandType Alias does show them,
    as does
    Get-command -module <modulename> -all
    This is counter-intuitive, because -commandtype should narrow the results, and the description of the -all switch says it's for "revealing" commands hidden by naming collisions.

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

    We’ll send you updates on this idea

    0 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  19. Allow using Select, Sort, Group, and Measure without a pipeple

    It should be possible to use Select-Object, Sort-Object, Group-Object, and Measure-Object without a pipeline.

    In those circumstances where a script needs to be optimized for speed, one of the first things to do is to eliminate pipelines because of the huge overhead they incur. Because of these four commands, eliminating all pipelines is sometimes impossible or requires coming up with complex alternatives to them.

    I would expect these two commands (or some variation of the second one) to produce the same result:

    2, 1, 3 | Sort-Object
    Sort-Object -InputObject 2, 1, 3

    Currently, the second line treats the array in…

    3 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 →
  20. ConvertFrom-Csv has undocumented partial comment support

    When multiple strings are fed into ConvertFrom-Csv, it will ignore lines prefixed with a '#' character. When fed a single string, it retains those lines. Unless it is the first line, in which case it is ignored either way. This behavior happens whether sent through the pipeline or provided to the -InputObject parameter.

    The workaround is to use double quotes around the item with the leading '#'.

    I guess this comes from handling the optional type information. The check for the "#TYPE" seems to happen only once with the single string, and every time when given multiple strings.

    Choose either…

    3 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 →
  • Don't see your idea?

Feedback and Knowledge Base