# 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.
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. ## cmdlets for Overriding Language not working in buid 1709/1803

cmdlets for Overriding Language not working in buid 1709/1803
Set-WinDefaultInputMethodOverride -InputTip ***-XXXXXX
Set-WinUILanguageOverride -Language XXXXXX

Does not change settings and generate no error message in PS

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

2. ## Unable to use PowerShell Transcription with Active Directory Administrative Console (ADAC)

Setup group policy to enable PowerShell Transcripting. From a machine that has that policy applied, launch ADAC. The error "Cannot connect to any domain. Refresh or try again when connection is available." pops up and ADAC can't be used.

https://github.com/PowerShell/PowerShell/issues/3021

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

3. ## utf-8 without bom

Bug: Scripts encoded with utf-8 without bom are producing errors when the character "Ä" is used between double quotation marks.

Frequency: always

How to reproduce: Create a powershell file with the following contents:

$test = "Ä" Save it with the encoding "utf-8 without bom" (often just called utf-8. The counterpart, utf-8 with bom, can also be called "utf-8 signature"). Run the file, and you will get the following error: At C:\location\to\file\test.ps1:1 char:9 +$test = "Ã„"
+ ~~~~
The string is missing the terminator: ".

+ CategoryInfo          : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString


(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

4. ## Bug? Test-Connection forces enumeration of reparse points

I've noticed some behavior in PowerShell that I can't explain, but I'm hoping that someone else can.

If I want to build a list of file objects from drive C:\, and I want to ignore shortcut folders (reparse points) such as C:\Documents and Settings. The following command works well:

$FileList = @(Get-ChildItem -Path C:\ -Recurse -Force -Attributes !ReparsePoint);$FileList | Where-Object {$_.DirectoryName -like "Documents and Settings"}; The Where-Object command returns no files as expected, since C:\Documents and Settings\ is a reparse point. However, if I run the Test-Connection command first, then the Get-ChildItem command appears to ignore the… 3 votes Sign in (thinking…) Sign in with: Facebook Google Signed in as (Sign out) We’ll send you updates on this idea 5. ## SendMail needs ReplyTo parameter This is a standard SMTP option and glaring oversite in PowerShell. 2 votes Sign in (thinking…) Sign in with: Facebook Google Signed in as (Sign out) We’ll send you updates on this idea 6. ## Include function to show bytes human readable like linux. In Linux in many commands like "ls", "df", and other have an option to show bytes sizes in human readable formats (bytes, KB, MB, GB, TB, etc). In powershell is necessary to create a function to do this. Would be interesting create some function to powershell convert the bytes value in the human readable value. 3 votes Sign in (thinking…) Sign in with: Facebook Google Signed in as (Sign out) We’ll send you updates on this idea 7. ## Get-Credential does not support Smart Card user name hints If you utilize Smart Cards with certificates that are not directly linked to users (no suitable user DN in Subject and no UPNs in SANs), you are able to link a single certificate to multiple accounts dynamically with the caveat that users need to provide explicit user name hints during logon in order to log on. User name hints need to be enabled via GPO or registry settings ("X509HintsNeeded"), after which all standard credential dialogs in Windows support them, except PowerShell's Get-Credential. This effectively prevents using PowerShell remoting with such Smart Cards / certificates if different credentials are required. In… 10 votes Sign in (thinking…) Sign in with: Facebook Google Signed in as (Sign out) We’ll send you updates on this idea 8. ## PowerShell Classes should allow properties with get and set PowerShell classes should more closely mirror the abilities of a C# class imported and allow full differentiation between fields and properties. Properties should allow getter and setter code blocks 6 votes Sign in (thinking…) Sign in with: Facebook Google Signed in as (Sign out) We’ll send you updates on this idea 9. ## [Bug] Windows Management Framework 5.1, ExecutionPolicy set via "User Configuration" (Group Policy) does NOT apply to the "UserPolicy" scope [Bug] On Windows Management Framework 5.1, ExecutionPolicy set via "User Configuration" (Group Policy) does NOT apply to the "UserPolicy" scope (defaults to "Undefined") on OSs other than Windows 10 and Windows Server 2016 Affected operating systems: Windows Server 2012 (confirmed) Windows Server 2008 R2 (confirmed) Windows 8.1 (unconfirmed) Windows 8 (unconfirmed) Windows 7 SP1 (confirmed) Explanation: I want to set ONLY the UserPolicy ExecutionPolicy scope to be "Restricted" and leave the MachinePolicy ExecutionPolicy scope as "Undefined" so that it isn't overriding the UserPolicy scope. This will allow the "Builtin\System" \ "NT Authority\System" \ "%ComputerName%$" account to run scripts but NOT…

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

10. ## Need a PowerShell version of tpmvscmgr.exe to manage TPM smart cards

We need a PowerShell version of tpmvscmgr.exe to manage TPM virtual smart cards.

The tpmvscmgr.exe tool 1) does not accept PIN, PUK and AdminKey numbers as arguments, these must be entered interactively in powershell.exe only, not ISE or with a pop-up, 2) cannot list currently existing virtual smart card ID strings, and 3) is somewhat crude in how it manages card lockout policies and unlocks.

This is needed not just for Windows clients, but also because Server 2016 Hyper-V supports virtual smart cards for guest VMs, such as for VDI scenarios.

We need to be able to pass in PIN,…

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

11. ## Bug: Get-Date handles slashes wrong

If I use the -format parameter with Get-Date, and provide slashes in the format string, the slashes are treated as hyphens in the output.

Get-Date -Format 'yyyy/MM/dd'
2017-11-08

I'm running on a US English WIndows 10 with Regional Settings set to Danish.

PS C:&gt; gcim win32_operatingsystem | % caption
Microsoft Windows 10 Pro
PS C:&gt; $PSVersionTable.PSVersion Major Minor Build Revision 5 1 16299 19 Also, I've reproduced this on a Windows server 2012R2 machine: PS C:\scripts> Get-Date -Format 'yyyy/MM/dd' 2017-11-08 PS C:\scripts> gcim win32_operatingsystem | % caption Microsoft Windows Server 2012 R2 Standard PS C:\scripts>$PSVersionTable.PSVersion

Major Minor Build Revision

1 vote
(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

12. ## Package PowerShell Classes in a Module

Object Oriented Programming seems to be supported now in PowerShell, but custom classes defined in modules don't seem to behave the way they should.

There only seem to be two consistent ways to make these work when importing a module that has classes defined:
1. Import the module, then run "using module ..." to make the classes available in the session. Alternatively, you can import the module with the using statement, but this isn't ideal (no versioning).
2. Add the class definition file(s) to the ScriptsToProcess attribute of the module. This isn't ideal either as it runs the scripts in…

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

13. ## 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.

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

14. ## Test-Connection timetolive parameter should be renamed to HopLimit

TimeToLive is a misnover for HopLimit. Though this has been corrected in the IPv6 rfc, Test-Connection still references this parameter as TimeToLive, which leads to confuse it with a timeout.

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

15. ## Out-Gridview should provide a count of the number of objects displayed

It would be very useful if Out-Gridview provided a build in display of the number of objects in the grid. This could be in a status bar at the bottom or at the top along with the Add Criteria button.

This would update as the filters are applied. It would also be nice if the selected items had a count as well.

It would be especially useful with -passthru as you could have an estimate on the number of objects being passed to the next cmdlet in the pipeline.

You can come up with the count by using measure-object, but…

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

It would certainly be cool, but we’re not really investing in Out-GridView at this point in time. I’ll leave this open as a Survey to see if the demand surpasses our bar (though I’d caveat that demand would have to be fairly high).

Thanks,
Joey

This cmdlet, rather than listing all certificates on the machine, which is how a Get-Cmdlet tents to work, instead Requests a new certificate from a Certificate Authority.

This is NOT the way that Get- cmdlets are supposed to work. And we already have a perfectly good Request- verb sitting out there, which would be the right verb for this cmdlet.

This would consitute a breaking change, but I think it's frankly broken today, so I'd call it a 'restorative change' instead.

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

17. ## Powershell and collections (in particular, collection of preference variables)

I've been struggling with exporting and importing preference variables from local to remote sessions. One idea that came to me was the idea of a collection of preference variables. According to a fellow at StackOverflow, Powershell doesn't institute these kinds of collections. If this is true, I would kindly request them to be implemented.

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

What are the environment variables you are interested in exporting? If it’s possible to enumerate them, then you can set them up in multiple locations.
Take a look at the New-PSSessionConfigurationFile cmd (start with the help for it). It’s designed to enable part of the scenario you are interested in, but not sure if that is enough of what you are asking for.

When I use Get-ChildItem it'd be really great if I didn't have to stare at the Length property (by the way, "Length"? Windows already calls this "Size" so just stick to conventions, will'ya?) to understand the size.

This parameter would accept the following values: Auto, KB, MB, GB, TB, PB.

On a multi-GB file we get output like the following for Length: 78697816273. That's HARD to read.

"Auto" would display the current item in the largest measure. Using the previous example, we'd get: 73.29 GB. If I used "KB" we'd get: 76853336.20 KB.

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

19. ## Create a SendTo-SysLog cmdlet and include it by default

Please include by default a SendTo-Syslog cmdlet to send log messages to UNIX, Linux and SIEMs.

If you were to add a syslog service role to send or accept syslog messages in a scalable way which integrated with the Windows event logs, that would be great too, but a cmdlet to just send UDP packets is easy enough to include in PoSh 5.1 right now.

Thanks!

(thinking…)
Signed in as (Sign out)

We’ll send you updates on this idea

Yeah, that’d be cool. Probably wouldn’t be too complex, but it also is probably outside the scope of the PowerShell core cmdlets. Maybe someone would be willing to publish something like this to the Gallery?

20. ## Start-PcsvDevice is not up to current spec

PROBLEM:
I have been using the PcsvDevice commands to use IPMI out-of-band management to my servers. It works great for systems that are configured for legacy boot. But, the reboot does not work properly for systems that are requesting UEFI reboot. Here are the commands that work correctly for legacy booting:

Set-PcsvDeviceBootConfiguration -TargetAddress $ipAddr -Credential$creds -ManagementProtocol IPMI -OneTimeBootSource $device.StructuredBootString[0] Start-PcsvDevice -TargetAddress$ipAddr -Credential \$creds -ManagementProtocol IPMI

The purpose of the above commands is to force a LAN boot no matter what is configured as the first boot device on the targeted server. This is handy if I want to…