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. allow DSC nodes to download meta configuration

    when wmf4 initially launched, you could place meta.mof files into the pull server along side the default mof and both would be downloaded by the node and applied. This was rather ideal, as it meant I could create standard LCM configurations, and easily update/enforce them.

    For some reason, this seems to no longer work in WMF5.0. This should be returned. Anyone who's had to edit the settings of hundreds (thousands?) of agents should understand it's way easier to tweak one property.

    Real world example: ask anyone who's ever had to reconfigure the the SCCM agent cache. It's a needlessly complex…

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

    We’ll send you updates on this idea

    5 comments  ·  Desired State Configuration (DSC)  ·  Flag idea as inappropriate…  ·  Admin →
    survey  ·  Mark Gray responded

    Justin,

    Thanks for you feedback! I What types of things do you find yourself needing to manage in the meta-config after initial deployment? This is not to take away from the need for this, I want to better understand how you and other customers are / want to use it.

    Regards,

    MarkG

  2. semantic versioning

    Semantic versioning does not work for PSGallery

    Allow new versions of modules to be published according to semantic version.

    Without semantic versioning, it is very difficult to evolve a module in a backwards compatible manner. Sometimes breaking changes are needed to get away from previous bad design decisions, but you still don't want to break existing clients, and wants to be able to provide bug fixes for those.

    That is, allow v1.1 to be published, even if there is a v2.0.

    See http://semver.org/ for details.

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

    We’ll send you updates on this idea

    0 comments  ·  Package Management  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for the suggestion. This one may be a bit tougher than others. However, your point is clear – there’s no way to rev an older version of a module once you have published a major version due to a breaking change.

  3. Invoke-WebRequest returned object hangs when accessing Links property

    OS: Windows 7 - 10

    Name : ConsoleHost
    Version : 5.0.10586.117
    InstanceId : 078d4e23-84fd-433c-a831-37bb0935166e
    UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
    CurrentCulture : en-US
    CurrentUICulture : en-US
    PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
    DebuggerEnabled : True
    IsRunspacePushed : False
    Runspace : System.Management.Automation.Runspaces.LocalRunspace


    Not working example:

    $releases = 'https://github.com/hluk/CopyQ/releases'
    $downloadpage = Invoke-WebRequest -Uri $releases -UseBasicParsing
    $download
    page.links # <-- hangs here

    Other properties seem to work normally.


    This example uses basic parsing and works without out. However, the behavior doesn't generally depend on this setting and I had sites that hang on many occasions.

    The following issues seems related:

    https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/11088744-invoke-webrequest-hangs-in-some-cases-unless-use
    https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/11515881-invoke-webrequest-hangs-freeze-at-many-websites

    11 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  ·  Microsoft.PowerShell.* Modules  ·  Flag idea as inappropriate…  ·  Admin →
  4. Req: JEA add ability to define parameter as mandatory in psrc

    Currently you can define what parameters are exposes and if needed, you can provide a validateset or validatepattern for the parameter. What I can't do is specify the parameter in question should be mandatory even though the cmdlet or function does not enforce its usage.
    E.g.: I define the following in my psrc
    VisibleCmdlets = @{

    Name = &#39;Get-Process&#39;
    
    Parameters = @{
    Name = &#39;Name&#39;
    ValidateSet = &#39;ZoomIt&#39;
    }

    }

    this does not restrict the user from just typing Get-Service and have every service returned.
    Current workaround is to create a proxy function and expose that instead of the cmdlet. …

    11 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 →
  5. Class based DSC Description Attribute

    Add a description Attribute or extend the DscProperty and DscResource attributes to allow for descriptions that should be surfaced in the generated MOF file.

    Looking at how the MOF file is currently generated using Reflection this should be easy to implement.

    11 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  ·  Desired State Configuration (DSC)  ·  Flag idea as inappropriate…  ·  Admin →
  6. Copy headers when copying from Out-GridView

    It would be great to copy headers for all the columns when copying data from the Out-GridView table lists.

    10 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 →
  7. -IgnoreCertificateCheck or -SkipSslVerification parameter for [Invoke-WebRequest & Invoke-RestMethod]

    Invoke-WebRequest & Invoke-RestMethod need a parameter to easily skip/ignore checking for a valid certificate of https uri's. This could be required for a number of reasons such as development site only using self signed certificate while testing.

    10 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 →
  8. BUG: new-localuser fails to allow connection to Microsoft account

    The New-LocalUser cmdlet available in Windows 10 Anniversary Update cannot perform a function described in the documentation.

    Local user accounts may be connected with existing Microsoft accounts. New-LocalUser should support this by accepting a -Name parameter of the form "MicrosoftAccount&lt;user>@outlook.com". This is described in the detailed help.

    However this fails because the parameter fails validation as it is over 20 characters in length (already true with "MicrosoftAccount&quot; and "@outlook.com" let alone the "actual" user name). The 20 character limit is valid for a regular local account name, but shouldn't be valid for an MS account name.

    There appears no other…

    10 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. Add Format method to all output streams

    When returning strings to the host, for example by using throw or inputting a standard string into code such as: $var = 'Hello world'
    We're able to use the format method to insert variables like so:

    $var1 = 'World'
    'Hello {0}' -f $var1

    To keep this style of formatting consistent across PowerShell itself (and also C#) can the format method be added to other output streams such as Write-Verbose, Information , Output etc.

    This would provide an easier learning curve for anyone with experience in other languages and would also be a lot nicer to look at as opposed to…

    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  ·  PowerShell Engine  ·  Flag idea as inappropriate…  ·  Admin →
  10. Get-Help needs to work better in the face of multiple versions of a module

    I understand when Get-Help shows me multiple results for the same command when there are different sources of the same command e.g.:

    4> get-help format-hex

    Name Category Module Synopsis


    Format-Hex Function Microsoft.PowerShell.U... ...
    Format-Hex Cmdlet Pscx PSCX Cmdlet:

    However this doesn't make sense when it is just different versions of the same command:

    8> get-help about_psreadline

    Name Category Module Synopsis


    aboutPSReadline HelpFile
    about
    PSReadline HelpFile

    I think Get-Help needs to be smart about this latter situation and A) only list the version of about_PSReadline that corresponds to the loaded module or B) if the module is not loaded, display…

    10 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  ·  Other PowerShell  ·  Flag idea as inappropriate…  ·  Admin →
  11. Pure Pain: Preinstalled PS Modules - Please Rationalize Them with Package Management Installs

    I am trying to update Pester on Windows 2016 to 4.x because the preshipped Pester 3.4.0 emits a note about the depreciation of the -quiet switch when I use the quiet switch. This get's scooped into stdout when executing via AWS SSM remote commands. Version 3.x complains it does not understand "-Show None".

    I want to update to 4.x - in which I ran into all the problems documented here: https://github.com/OneGet/oneget/issues/215

    But ended up with "Install-module pester -force -SkipPublisherCheck.

    So far so bad, but when I go to remove the 3.4.0 version (with admin rights) from: 'c:\program files\windowspowershell\modules\pester\3.4.0' I get…

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

    We’ll send you updates on this idea

    5 comments  ·  Package Management  ·  Flag idea as inappropriate…  ·  Admin →

    The issues you have encountered can be frustrating, sorry that is the case for you.

    Moving this to Survey to try to gauge the scope of the problem for users generally.

    We are somewhat limited by security requirements: what ships with Windows will always be tagged so that nothing can replace it easily unless it is signed by Microsoft. While Pester is part of Windows, it is not owned or developed by Microsoft, so updates delivered via the Gallery cannot be Microsoft signed.

    Once the Gallery version is installed on a system, -SkipPublisherCheck is no longer required for future updates. That first experience, however, is bad.

    This leaves us with a dilemma: do we stop shipping Pester in with PowerShell in the future, or do we continue to provide the feature set knowing users who update from the Gallery will encounter these issues?

    Looking for feedback from as many users…

  12. Support basic line wrapping in ISE Script Pane

    All IDE's support line wrapping inside the editor, except Powershell ISE (even Notepad has it)! This is useful, for example, when using ISE in a virtual machine console session, where the screen is often smaller than your screens actual resolution.

    9 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  ·  ISE and tooling  ·  Flag idea as inappropriate…  ·  Admin →
  13. BUG: PSBoundParameters contains values from PREVIOUS pipeline input

    When writing functions that take ValueFromPipelineByPropertyName, and accepting pipeline input, if some of the pipeline input is missing some properties, PSBoundParameters contains the previous value... incorrectly reporting the parameter was passed in:

    For example:

    function Get-UserName {
    [CmdletBinding()]
    param(

    [Parameter(ValueFromPipelineByPropertyName,Mandatory)]
    
    $Last,

    [Parameter(ValueFromPipelineByPropertyName)]
    $First

    )
    process {

    if($PSBoundParameters.ContainsKey(&#39;First&#39;)) {
    
    Write-Host -Foreground Red $PSBoundParameters[&#39;First&#39;] $PSBoundParameters[&#39;Last&#39;] &quot; &quot; -NoNewLine
    $First[0] + $Last
    } else {
    $Last
    }

    }
    }

    $Users = [PSCustomObject]@{ First = "Ethan"; Last = "Hunt" }, [PSCustomObject]@{ First = "Jason"; Last = "Bourne" }, [PSCustomObject]@{ Last = "Bond" }

    $Users | Get-UserName

    9 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. Compress-Archive does not include hidden files/folders

    Creating an Archive with Compress-Archive does not include hidden files of folders.

    I would recommend to adapt the behavior of Windows internal compressed Zip functionality which is including hidden files by default.
    Additional i would prefere a sidenote in the documentation of

    8 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 →
  15. Set ConfigurationMode per PartialConfiguration

    I would be nice to be able to set the ConfigurationMode on a PartialConfiguration. For example I want that my SQL config automatically remediated is, however the Windows OS config just alerts to changes. Similar to a Syntax like below

    [DSCLocalConfigurationManager()]
    configuration MyConfig
    {
    Node localhost
    {

      Settings
    
    {
    RefreshMode = &quot;Pull&quot;
    ConfigurationID = &#39;a5f86baf-f17f-4778-8944-9cc99ec9f992&#39;
    RebootNodeIfNeeded = $true
    }

    ConfigurationRepositoryWeb PullSvc1
    {
    URL = &#39;<a rel="nofollow noreferrer" href="http://pullserver1:8080/OSConfig/PSDSCPullServer.svc&#39">http://pullserver1:8080/OSConfig/PSDSCPullServer.svc&#39</a>;
    AllowUnSecureConnection = $true
    }

    ConfigurationRepositoryWeb PullSvc2
    {
    URL = &#39;<a rel="nofollow noreferrer" href="http://pullserver2:8080/SQLConfig/PSDSCPullServer.svc&#39">http://pullserver2:8080/SQLConfig/PSDSCPullServer.svc&#39</a>;
    AllowUnsecureConnection = $true
    }

    PartialConfiguration OSConfig
    {
    Description = &#39;Configuration for the Base OS&#39;
    ConfigurationSource = &#39;[ConfigurationRepositoryWeb]PullSvc1&#39;
    ConfigurationMode =…

    8 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  ·  Desired State Configuration (DSC)  ·  Flag idea as inappropriate…  ·  Admin →
  16. Clean up formatting

    As many of us share and use snippets from other sources, including the Internet, colleagues etc. sometimes their formatting is destroyed in the copy/paste process or is already destroyed due to a change in a website template for example.
    While it's a "nice to have" feature, being able to clean up the formatting (using proper indentation, parentheses spacing etc.) for selected blocks of code would get the code in to a more readable format more quickly.

    While everyone formats their code differently, having a few selctable methods of cleaning up would be beneficial such as:
    -Keep opening parentheses on same…

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

    We’ll send you updates on this idea

    2 comments  ·  ISE and tooling  ·  Flag idea as inappropriate…  ·  Admin →
  17. Allow Description in Markdown format

    It could be useful to have Markdown formatting in manifest file to provide rich description on PowershellGallery

    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 Gallery  ·  Flag idea as inappropriate…  ·  Admin →

    Specific ask for the voters: If you are willing, please add a note what your expectations are, and how you would see this providing extra value in the Gallery when we display this content.

    This type of feature is something we are generally a little bit cautious about.
    Rendering active MD content can include links & other items that result in some amount of risk for users of a site.

  18. 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
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)

    We’ll send you updates on this idea

    survey  ·  5 comments  ·  Package Management  ·  Flag idea as inappropriate…  ·  Admin →
  19. Get-ComputerInfo most properties are empty

    I try the new CMDLet Get-ComputerInfo, but the most properties in the result are empty.
    Only this properties show values:
    WindowsBuildLabEx,WindowsCurrentVersion,WindowsEditionId,WindowsInstallationType,WindowsInstallDateFromRegistry,WindowsProductId,WindowsProductName,WindowsRegisteredOrganization,WindowsRegisteredOwner,WindowsSystemRoot,TimeZone,LogonServer,PowerPlatformRole,DeviceGuardSmartStatus

    Try also as Admin and with different Hardware and VM's. (Windows 10 x64 Versiom 1607)

    Beste regards
    brima

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

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

Feedback and Knowledge Base