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. 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 →
  2. 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 →
  3. Invoke-RestMethod ignores ErrorAction parameter

    If a request made using Invoke-RestMethod receives a 400 or 500 error, it just calls Write-Error and always fails irrespective of the value of the ErrorAction parameter.

    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 →
  4. 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 →
  5. Format-Wide : Allow -AutoSize (or a -Compact) parameter to shrink spacing between columns

    Format-Wide doesn't allow AutoSize and Column in the same command because AutoSize is used to determine number of columns by itself. Column alone used the console width and you get alot of spacing.

    It would be really useful to be able to run Format-Wide -Column 5 -AutoSize to let it shrink the spacing between the columns just like -AutoSize does in Format-Table. Or add a new -Compact-switch.

    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 →
  6. 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

    8 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  7. 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 →
  8. 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

    1 comment  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  9. 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 →
  10. 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 →
  11. 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 →
  12. 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 →
  13. 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 →
  14. 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 →
  15. 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 →
  16. 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 →
  17. 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 →
  18. 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 →
  19. Get-Winevent - Execution with only -MaxEvents parameters specified

    When executing the Get-Winevent cmdlet with only the -MaxEvents parameter specified the cmdlet ends up in an infinite loop spewing errors:

    Get-WinEvent -MaxEvents 1

    Get-WinEvent : The data is invalid
    At line:1 char:9
    + $null = Get-WinEvent -MaxEvents 1
    + ~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : NotSpecified: (:) [Get-WinEvent], EventLogInvalidDataException
    
    + FullyQualifiedErrorId : The data is invalid,Microsoft.PowerShell.Commands.GetWinEventCommand

    I reproduced this error on PowerShell 5.1 and 4.0 on multiple systems. The behavior I expected was to receive the most recent event from any of the event logs. I feel this error could be prevented by using proper parameter validation.

    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 →
  20. Get-Credential Smart Card Across Domains

    When using New-PSSession -ComputerName -Credential (Get-Credential) and specifying a smart card certificate, authentication fails.

    The smart card option seems to pull my credentials from the domain my workstation is on (Alpha\Username) instead of passing the smart card certificate forward to be authenticated as (Bravo\Username).

    Is there a way to change or prevent this?

    Scenario:
    Username = "User"
    Workstation Domain = "Alpha"
    Server Domain = "Bravo"
    User is logged into his workstation and attempts to authenticate to his server in Bravo using his smart card. User's authentication is denied. The logs on the Server indicate that "Alpha\User" was denied access.

    This…

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

Feedback and Knowledge Base