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. 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!

  2. BUG: ScheduledTasks module broken in 1511

    ICAN use New-SchedualedTaskTrigger -AtSartup without error SO THAT I can schedule tasks

    Repeat issue: update win10 to 1511 and run this command in PowerShell
    New-ScheduledTaskTrigger -AtStartup
    New-ScheduledTaskTrigger : Method "NewTriggerByStartup" not found
    At line:1 char:1
    + New-ScheduledTaskTrigger -AtStartup
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : ObjectNotFound: (PS_ScheduledTask:Root/Microsoft/...S_ScheduledTask) [New-ScheduledTaskTrigger], CimException
    
    + FullyQualifiedErrorId : HRESULT 0x80041002,New-ScheduledTaskTrigger

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

    We’ll send you updates on this idea

    7 comments  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  3. [System.ServiceProcess.ServiceController] should add StartType to its formatting

    Get-Service | Format-List
    Get-Service | Format-Table

    should display the "StartType" column, i.e. "StartType" should appear in "System.ServiceProcess.ServiceController" <TableControl> and <ListControl> in DotNetTypes.format.ps1xml.

    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 →
  4. Start-Transcript: poor error message on a bad -Path

    The following command

    Start-Transcript \zz*\z.log
    

    produces an error

    Start-Transcript : Transcription cannot be started.
    
    At C:\tmp\_160209_203322\test.ps1:2 char:1
    + Start-Transcript \zz*\z.log
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (:) [Start-Transcript], PSInvalidOperationException
    + FullyQualifiedErrorId : CannotStartTranscription,Microsoft.PowerShell.Commands.StartTranscriptCommand

    The reason of the error is a bad -Path argument.
    It is difficult to get this from the error information.

    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 →
  5. v5 regression: Get-ChildItem -LiteralPath -Recurse ignores -Include and gets all items

    I have just installed Windows Management Framework (WMF) 5.0 RTM on my Windows
    7 SP1 and tested it. Get-ChildItem -LiteralPath -Include -Recurse started to
    work differently in v5.

    This command

    Get-ChildItem -Path $PSHOME -Include *.exe -Recurse
    

    gets expected powershell.exe and powershell_ise.exe.

    The same command with -LiteralPath instead of -Path

    Get-ChildItem -LiteralPath $PSHOME -Include *.exe -Recurse
    

    in PowerShell v5 RTM unexpectedly gets all items in $PSHOME.

    I cannot test this with previous versions right now (by the way,
    PowerShell.exe -Version 2 seems to have the same issue in v5 RTM). But I
    believe in PowerShell v3 and v4 this…

    19 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. v5: Potential issue with odd paths in `New-TemporaryFile`

    PowerShell v5 comes with a function New-TemporaryFile.

    Its code is shown by this command

    Get-Content function:New-TemporaryFile
    

    The essence of it is

    ...
    
    $tempFilePath = [System.IO.Path]::GetTempFileName()
    ...
    Get-Item $tempFilePath

    Get-Item uses the Path parameter, not LiteralPath. Thus, if
    $tempFilePath is an odd path (contains brackets) then Get-Item
    may fail to get the file.

    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 →
  8. performance of out-null drastically worse then using [void] or assigning result to $null

    Votes from Connect: 4

    Original Date Submitted: 3/28/2015 6:08:31 AM

    Description:
    Contact Information
    Handle: JasonHorner
    Site Name: PowerShell
    Feedback ID: 1208677


    Frequency: PowerShell
    Regression: gci | out-null
    void

    $null = gci

    run the above inside of measure-command the problem gets worse as the number of iteration increase

    Problem Description:
    It seems to me that:

    gci | out-null

    should be the preferred way of expressing: discard output in PowerShell

    However when running timings against alternatives
    some of the the other constructs are much faster:

    void

    $null = gci

    I realize this is likely due to the pipeline overhead. Would it be…

    10 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 →
  9. Test-Connection should support suppressing errors and returning the full result objects

    Use case:

    Test-Connection (1..15 | % { "comp{0:00}" -f $ }) -Count 1 | select Address, IPV4Address, ResponseTime, @{Name='Success'; Expression={$.StatusCode -eq 0}} | ft

    Currently, the code above will produce a table with successful pings, interleaved with error records for unreachable machines. It would be very useful to be able to provide a switch so that Test-Connection would return objects with appropriate status instead of errors.

    As an icing on the cake, the objects returned by Test-Connection could be extended with a bool Success property, calculated based on StatusCode (like in the example above).

    9 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 →
  10. BUG : Test-PSSessionConfigurationFile : Key 'RunAsVirtualAccount' Fails

    The validation process done in Test-PSConfigurationFile for identifying valid keys in a configuration document is which is not working as it should.

    Test-PSSessionConfiguration file calls a method VerifyConfigTable, which as part of its validation routine checks against a set of constants contained in a collection, ConfigTypeEntry.

    RunAsVirtualAccount isn't in this list.

    System.Management.Automation.Remoting.ConfigFileConstants.ConfigFileKeys is the full qualified name

    2 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. Add write-information logic to write-warning and error

    Please give Write-Warning and Error the same functionality as the new write-information in WMF5.0.

    Would especially like the tag functionaliy

    1 vote
    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. "Logon as a Service"

    Please create Cmdlets allowing us to query, add and remove the "Logon as a Service" right to users and groups in a reasonably performant manner.

    I have found that all solutions involving secedit take far too long to execute across hundreds of servers. Whilst this I could work around this by creating background jobs and running them in parallel, it would be great if we had native PowerShell Cmdlets that work fast enough that we don't have to worry about this.

    1 vote
    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 →
  13. 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 →
  14. -Encoding should be [encoding] and not [string]

    Votes from Connect: 7

    Original Date Submitted: 10/15/2014 7:52:37 AM

    Description:
    Contact Information
    Handle: Derp McDerp
    Site Name: PowerShell
    Feedback ID: 1001403


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

    Problem Description:
    PowerShell should create an [encoding] type accelerator that accepts objects derived from [System.Text.Encoding] and also the following strings:

    String
    Unicode
    BigEndianUnicode
    UTF8
    UTF7
    UTF32
    Ascii
    Default
    Oem

    then all cmdlets which take -Encoding should be rewritten to use [encoding] instead.

    The Add-Content, Get-Content, and Set-Content cmdlets should take a [fsencoding] type that does the above but accepts the "Byte" string.

    Product Studio item created by…

    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 →
  15. New-JobTrigger why is there no -Monthly switch?

    Votes from Connect: 3

    Original Date Submitted: 7/24/2014 8:47:12 PM

    Description:
    Contact Information
    Handle: Lee Wilmott
    Site Name: PowerShell
    Feedback ID: 927973


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

    Problem Description:
    Please can you add a "-Monthly" switch (including a "DaysOfMonth" parameter) to the New-JobTrigger cmdlet?

    Many thanks,

    Lee

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

    Repro Steps:
    Expected Results:

    Internal BugId: 8911

    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 →
  16. Update-ModuleManifest fails on UNC path

    Running Update-ModuleManifest on a psd1 saved on the network with a UNC path fails as the ScriptsToProcess, TypesToProcess and FormatsToProcess attributes are set incorrectly in the new manifest.

    Example against the AzureRM.profile manifest:

    Original AzureRm.Profile.psd1 contains

    Format files (.ps1xml) to be loaded when importing this module

    FormatsToProcess = @(

    &#39;.\Microsoft.Azure.Commands.Profile.format.ps1xml&#39;
    

    )

    Running
    Update-ModuleManifest -Path "\<some unc path>\AzureRm.Profile.psd1" -ModuleVersion 1.0.3

    Gives error

    Update-ModuleManifest : Cannot update the manifest file '\<some UNC path>\AzureRM.Profile.psd1' because the manifest is not
    valid. Verify that the manifest file is valid, and then try again.'The member 'FormatsToProcess' in the module manifest is not valid: Cannot find path…

    2 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. 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 →
  18. 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 →
  19. Get or Set-WebConfiguration and Get or Set-WebConfigurationProperty does not work for 32-bit applications when pspath is 'MACHINE/WEBROOT'

    When configuring IIS using Powershell, the cmdlets that read or write to configuration do not work when the application pool is 32-bit.

    There is no way of specifying the "bitness" of the application therefore by default the configuration is written to the web.config file in the Framework64 folder which is ignored for 32-bit applications.

    This is also the case for IIS manager when using "Configuration Editor". You can choose the location of "Root Web.Config <location path="my website"> however this ignores whether the application is 32 or 64 bit and always writes to the 64 bit location in the Framework64 folder.

    1 vote
    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-Clipboard returns one object too many in PS5.0

    If I copy three rows of text from Notepad or Excel into the clipboard, Get-Clipboard returns an array of four strings, instead of three.

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

Feedback and Knowledge Base