I guess it’s clear that I love PowerShell as a whole. But there are some things inside that I do not like. Few of those are not PowerShell fault (probably some .NET or Windows limitations) but since I’m PowerShell user I would like to see them solved/ upgraded to my needs. Of course I may be alone about those and will never see it done, but… 😉
1. ACLs.
The concept of ACLs in Windows is… there. I’ve read about working with ACLs from PowerShell and honestly – I don’t see any value in *-ACL cmdlets. It’s really so much easier to do stuff with ancient cacls that I have no need to play with it in more PowerShellish way. I would love to have those designed in a way that I could just do something like:
Set-ACL –User MyUser –AccessLevel Full –Action Grant
and forget about it. Without storing current ACL in variable, using some .NET methods on it and creating some other types meanwhile to add to created on the fly ‘template’. Yak.
2. Providers/ Drives.
I know that concept itself is very nice. I thing browsing to HKLM:\Software is great, but for demos only. It has no option to map remote registry, nor easy way to get full info about properties (my first suggestion on connect is all about that). Next provider I’ve tried to use was SQL… It’s kind of nice, but man, try to press [TAB] there… One second after I do it I hate myself for it. It takes so much time to get my prompt back! It’s frustrating when what I need is a command, not ChildItem. (see next point too 😉 )
FileSystem is also nice, but only for nick-names to folders on local drive/ drives mapped with old net use. No credentials support renders it less convenient that it might be. I don’t mention other providers, I haven’t used them much. But I see a lot of space for improvements in this area. And I guess there are still some providers missing. WMI is the one I would like to see in v3 for sure. 🙂
3. Tab completion.
I know there are some tools out-there that can help me with that, but I would like just minor change. From my experience: PowerShell will try to look for completion in current path first. It’s usually not what I’m looking for. I mean: I very rarely start with filename, it’s usually argument to one of parameters. I know, I know, I can edit TabExpansion function and make it happen. But I’ve tried to understand logic used in this function several times and I really eventually found something better to do. 😉 Also TabExpansion behaviour in console host (powershell.exe) may be very annoying at times. Try to tab-expand something in the middle of edited line. But say bye-bye to the rest of your line first. 😉
4. Load time
I recently read some tweet from guy who was frustrated with load time for PowerShell so much, that he managed to use some other tool quicker (something with SharePoint administration). On my admin box I had some problems with that too and it was the moment when I decided to create new profile for ISE that would take care of that for me (post ISE is cool). But now that we are about to jump into windows 7 mode in our organization I will get my PowerShell box on client machines too. And if load time will be so long I will probably do cmd.exe instead for most of time, and jump into PoSh when I really have to. I already experience it on my w2k3 box, where I have to wait for quite a long time to get prompt. And my $profile there is very simple, not like the one I have on my primary box.
5. No XML in ISE.
I know, that primary goal with ISE was to replace notepad.exe and make something available out-of-the-box to support PowerShell users in their struggle with scripting. For that purpose however I see one not so small disadvantage: where is XML colouring? I mean really. When you get out of ad-hoc scripting and want to have a module or two – do you really have to look around for some 3rd party tool? In current situation I guess I should, otherwise I will have to check my syntax and hope it will be all fine. I don’t expect it to be very hard to implement it. But I’m not and expert in this area so maybe I’m wrong about that? 🙂 Anyway: I won’t resign from using ISE. After all I do not edit XML files so often, so I can just jump into something else when I really need it… 😉
Summary
As you can see that list is not very long. And trust me: opposite would be much, much bigger. That’s why I love to use PowerShell when I can. Even if it has area for improvements. That’s probably also good part: PowerShell team love to improve their product and they listen to the feedback. And prefer negative feedback over positive. 😉 Probably because it’s usually easier to see positives in your children, and negatives are overlooked. I know it very well from my personal experience. My kids are brilliant, beautiful and very, very kind. 😀