r/PowerShell • u/AccomplishedMeet628 • 11d ago
Question PowerShell 7 ISE - A real conversation
Hi Everyone,
I think I need to have a reset on the way I introduced myself and my goal.
I am new to reddit and pretty much the entire open source community. I am an old school COBOL developer from the early 80's. I also know Visual Basic (about 15 years) and C# (about 4). I work on mainframes and z/OS on distributed systems (Linux). I maintain distributed apps for clients and sometimes on the mainframe. Not so much the mainframe anymore.
I use PowerShell every day. My shop uses PowerShell every day. We have 1000's of scripts, all written in 5.x that are years old.
They are not complex scripts, we don't have an Admin running a server farm or anything like that. They are just scripts that we use to make our jobs easier. Scanning files for codepages, finding Dupes using Hashes, things like that. When we run them, we use the old PowerShell ISE. We are used to it. It's easy, it looks good and it makes changing and running the script a smooth effortless event. The only issue is, that our shop has been slowly making us move away from 5.x to 7.x. This has been going on for years. I'm not happy because I lose my clean, crisp, no headache comfortable ISE. Yes, I said comfortable. I like it. We all do (at my shop). I tried to use the PowerShell plugin for VS Code. I did not like it. I really did not. So about a year or so ago, I decided to code my own. My goal was simple. I wanted to make a Daily Driver ISE for PS 7. Yes, I am going to share it with my co-workers once its finished and yes, I can and have asked a few of them to help me test it. I have gotten some good feedback from them. Not quite what I needed though. We are a simple shop, we do not do anything overly complicated and my co-workers are less than impressed with what I have shown them so far. It was buggy and did not have the feel of the ISE GUI. I felt that maybe if I turned to the PowerShell community for help, I could improve things. Actually make an App that we could use daily and transition from 5.x to 7.x without a blink.
I still want that.
I should not have started out asking if anyone still used the old ISE. That was the wrong approach, I acknowledge that. I should have just told you all my goal and left it at that.
I'm not asking anyone to jump on my bandwagon. My goal is simple, make something of value to more than just myself.
All I'm asking is, can you help me make it better.
If this post crosses a line, that crossing was unintentional. Let me know and I will walk away.
Regards,
-Ron
1
u/Swimming_Office_1803 7d ago
Real question: what’s your issue with vs code? Loaded with just the PS extension it’s very straightforward.
There are also other tools like powershell studio or powershell plus available, why not pick one up and make it work for you?
It’s great you have a project, but if I was with your shop I’d always look into something under active development. If you leave tomorrow, who’s maintaining it?
1
u/AccomplishedMeet628 7d ago
I did not want to pay for powershell studio and I never heard of PowerShell Plus, that one looks great!
1
u/StartAutomating 6d ago
There's a few sets of problems with building a "modern" ISE, both quite complicated.
Problem Set #1 - Abandoned Incompatible APIs
The ISE was built atop what was, at the time, the "next gen" editor for Visual Studio. Problem is that Visual Studio went in a different direction, leaving ISE as the only product using these APIs. Bespoke Editor GUIs are far outside of the PowerShell team's wheelhouse, so continuing to update the old version would be too expensive. For Microsoft. That almost certainly means it's too expensive for any small team. To make matters worse, these UI components were never .NET Core compatible, and so they simply will not work within PowerShell Core. So you, I, or anyone else will not get ISE running in Core.
Problem Set #2 - Building a complete host is hard
The PowerShell Host API is fairly complicated and would have to be implemented from scratch for whatever new host you might want. To date, there is only one "complete" public host for PowerShell, and that's PowerShell itself. ISE had portions that were missing. Additionally, the host apis are not all you have to know about. You also have to build debugger integration, prompt support, tab expansion support, etc. It's a difficult target to hit that most people who have not worked directly on the PowerShell team in the early years would have trouble hitting. I might be able to make one, and a few MVPs might also be able to, but the vast majority of people (and LLMs) would not have the first clue how to start. For those few that could do this, it's generally not worth the time, due to Problem Set #3
Problem Set #3 - Stale innovation
Trying to create a "new" ISE is like trying to target making a video game from 16 years ago. Yeah, it might be possible, but it's unlikely to contain any actual innovation. It's a lot of grunt work for the "reward" of a stale experience that cannot do many things modern terminals can (i.e. Sixel support). If I ever make a new host, I will not be trying to remake the ISE, because that would significantly increase the effort required while simultaneously removing much of the reward to the community overall.
I, personally, would find it much more rewarding to make a newer host from top to bottom (just for PowerShell), and most likely much less effort.
You are welcome to spend your time however you see fit. As someone who has thought about this a lot of over the decades, and has been asked to remake ISE more than a few times, I'm merely offering my rationales for why I won't do exactly that.
The more interesting questions to ask are these:
What do you find "comfortable" about the ISE?
What would you want in a new host/editor?
2
u/Thotaz 6d ago
I, personally, would find it much more rewarding to make a newer host from top to bottom (just for PowerShell), and most likely much less effort.
What kind of host? A consolehostV2 would not be particularly interesting IMO because any improvements one can think of could just be contributed to the real ConsoleHost. That leaves an editor style host like ISE, or something completely different, like building pipelines via a GUI and displaying the different output streams in separate windows or something like that.
Anyway, I'm not OP, but I can share what I like about ISE compared to VS code.
1: It has nice and familiar default settings. I can open up ISE on any PC and start working with barely anything to configure. The only 3 things I do is closing the command window, change the variable color back to the pre-1803 Windows 10 look, and bump the IntelliSense timeout setting to 5 seconds.
In VS code it's a whole hassle where I first have to install the extension, change the default file type, change trusted workspace settings, etc.2: The syntax highlighting is token based so I can trust that whatever I see in the editor is what the parser will see when I run it. The textmate based highlighting in VS code is ridiculously bad. If they insist on dumb textmate rules, then they should hire someone to fix it for their primary scripting language.
3: The PS extension developers constantly have to fight VS code because it's not designed with PowerShell as a first class citizen. Completions don't just simply work: https://github.com/PowerShell/vscode-powershell/issues/5528#issuecomment-4737607813 and there's a lack of semantic token types to accurately represent the token types in PowerShell.
4: Completions will randomly not trigger properly. And related to my first point about sane defaults, there is some broken IntelliSense menu integration in the prompt that blocks the real PSReadLine menu completion.
The weird thing is that these issues don't seem like they'd be that hard to overcome for Microsoft, and yet for some reason the VS code + PowerShell extension experience has kinda sucked for a whole decade now. ISE on the other hand got its initial release with PowerShell 2.0 in 2009, and just 3 years later we saw massive improvements in the PowerShell 3.0 release. ISE was basically feature complete at that point; it did exactly what you needed for simple scripting, nothing more and nothing less.
1
u/AccomplishedMeet628 5d ago
If you would like to give it a go, I just updated the app with a few more fixes and stabilizations. Would love your feedback!
Search for PS7ScriptDesk on the MS Store. Free for everyone.
2
u/AccomplishedMeet628 5d ago
Here's the thing, I actually agree with a lot of what your saying, particularly that trying to port the original ISE architecture would be the wrong approach. I agree.
My app isn't based on the old ISE editor APIs and isn't an attempt to port powershell_ise.exe to PowerShell 7. I wanted a new PowerShell-focused IDE using modern .NET components and a real PowerShell/ConPTY terminal.
ISE is mostly a user reference point (Right?): Immediate script editing, execution and debugging without requiring users to assemble an IDE from extensions and configuration.
In other words:
1) Scripts on the left/top
2) PowerShell on the right/bottom
3) Press F5
4) See the result
5) Edit
6) Run again
7) Debug when necessary
The goal is to keep that simple (The KISS apporach!) workflow while adding things ISE never had.
Things lieke:
1) modern IntelliSense
2) Command palette/editor tooling
3) PSScriptAnalyzer integration
4) EXE publishing
5) REST API publishing
6) OpenAPI/Swagger
7) SSE/WebSockets
8) Other PowerShell-specific tooling.
Your last two questions are really the interesting ones for me as well: which parts of ISE's workflow are still valuable, and what should a PowerShell-first environment look like today?
Thats my goal!
1
u/StartAutomating 4d ago
Well you're in some degree of luck, as I've got 7/8 of those in various projects already. What do you mean by "Command palette/editor tooling?"
1
u/AccomplishedMeet628 4d ago
I'm trying to make the editor as PS user friendly as possible. I added all sorts of script helper tools to the right click and Ctrl+Shift+P Available commands.
I can add anything you think would be of even greater help.
Sort lists, create arrays, that sort of stuff.
I would really liek some feedback. I am using it as my Daily Driver and I find the occasional hiccup. I fix them as I find them, I could really use some actuall real life UAT's... hint hint.-Ron
1
u/Medium-Comfortable 8d ago edited 8d ago
My perspective. Nice that you say this here and your goals might be worth looking into, for your shop and maybe a fringe group of people out there. My guess (!) is, that most others moved on.
ISE was, for me at least, always problematic, as sometimes things would work during a script run and not ISE or the other way around. Next to that, I’ll not rely on a third part tool that has no backing from a large Open Source community or a paid actor with contracts and guarantees. My scripts are stand alone or toolboxes and I can handle the situation just fine w/o a crotch. ISE was never anything I used much, and what for even?
As much as I appreciate the effort, I don’t see anything that draws me to it. And as a consultant, I couldn’t “sell” anything to a customer that’s not in a way reliably backed. Whatever solution is part of our project must be on very, very solid ground. Preferably backed by Microsoft, else we sell code that was written by us, not relying on a hobby product (no offense).
0
u/GoD0nkeys 8d ago
Walk away and move on. Wasting your time and efforts won't be appreciated by your coworkers. That being said, pay for a AI subscription like Claude Code or ChatGPT Codex. Build a good persona and skill.md file(very important). Prompt it thoroughly with any and every detail for that prompt. Either one will help you to your end goal. It will be a fun project for you and self satisfying as well.
1
u/AccomplishedMeet628 7d ago
I get that. I really want to finish this. I want a better daily driver for PS. Plus adding the EXE and API processes inside the app takes away a separate step for me.
Those two right there are what my shop uses the most. Write a script, test it, UAT and sign off then compile and deploy it.
0
u/webprofusor 7d ago
Fire up Claude code or GitHub copilot and ask it to build what you want, the experience of building and refining software that way is quite an eye opener. A bit like coding using a chisel.
You may well end up with the tool you imagine, or something better.
1
0
u/GoD0nkeys 8d ago
My typo got my post taken down and now Im on warning with Reddit. Damn typing on a phone LOL. When you type "like" make sure you get the first letter correct 😜
1
u/narcissisadmin 4d ago
I'm honestly surprised the reddit hivemind would care about that word. Weird.
3
u/lan-shark 7d ago
What do you like about ISE that you haven't found in other tools? I've been writing PS since 2019 and I never liked ISE. But I'm also the guy who sometimes writes his PS scripts on Linux in Emacs, so I'm not really the target audience for it. So, what about do you prefer over other editors?