So I’ve been working professionally with Linux-based systems for a few years, and while I’m not the expert I would like to be, I have got a pretty good feeling for the way those systems work. You have the bootloader, the initramfs, the boot procedure, systemd, PID 1, you can check the logs, you have all those little things that make the system work. Everything is a file, you have file permissions and selinux contexts, you have networkmanager, systemd units, you have (system) users, some just for some services, it’s all dandy… if I have a problem with a program I can usually debug it, check its logs, and get it to run.
Now for work I suddenly need to do lots of administration of Windows systems, Win11 and server, and troubleshoot deep, weird issues…
And I’ve started reading up on it, trying to use PowerShell as much as I can, but I’m just not getting the same high level overview feeling of understanding of how the system works, of how the parts work together. Or even what parts there are, and what they do.
(Especially within an Azure context.)
Books on Windows tend to be very surface level, just instructions on what menus to click through to get a working configuration.
But what’s going on underneath the hood? What do I do when I get a weird VPN issue? I mean, there’s Get-EventLog to check for things in the logs, but… nothing feels connected.
Do you know what I mean?
(Also, how cumbersome is PowerShell? No proper paging like with less in bash, I mean, you can’t go back a page, not with windows more or that powershell pager command, and you have to type sooo many words… and yeah, everything is an object, and I see how that can be a nice idea, but man, does that force you to select properties of those objects like crazy. Is this really a good thing, once you have it figured out?)
Are there one-to-one equivalents between Windows and Linux distros that could help me understand? Or is there a really good book that spells it all out, that sets me on a path where I can someday debug ANY issue and understand what I am seeing and doing?
…and I mean, where do I even start out debugging and understanding things like Entra ID issues in Windows365 machines, and hybrid Azure domains… the Microsoft help usually just seems to be steps on how to configure the stuff, but not understanding how it works…
Sorry, this is all over the place, but I’m just lost right now 🤷♂️ maybe someone has felt those same things before and has something wise to tell me?
Powershell supposedly is really great once you’ve understood how it’s structured.
I keep hearing it’s more logical and discoverable than Bash.
Maybe that’s true, I keep bouncing off it and getting frustrated. And when I try to read up on it, the explanations throw low level programming terms at me, which I’m too stupid to understand.
But modern Windows has one thing going for it, which makes it similar to Linux in concept:
Literally everything can be done with Powershell, and literally every config can be manipulated manually when you know where to look.
Configs are a bit strewn around the system, though. They can be in your user folder in AppData, or globally in C:\ProgramData or only in the Registry.
And some software says “Fuck all this” and puts them in C:\Program Files, C:\Program Files (x86) or even in an own directory on C:\ But that’s no different on Linux, really.
Then you can look at group policies, which are like an extended settings menu for thousands of things that aren’t in the GUI.
And since you can write your own group policies that set arbitrary Registry values, you can make Windows your bitch.
The main issue really is documentation. It either doesn’t exist, or it’s wrong, or only available to Microsoft employees.
So even if you have 10 years of experience in administering Windows systems, you’re still hunting through forums for answers.
The most important resource an experienced Windows admin can have is a list of bookmarks to trustworthy sysadmin blogs.
So, to recap: Windows is the Registry. If it reads a config file from somewhere, the path to that config file will be in the Registry. If you change a setting in the GUI, via Powershell, or a group policy, the setting will be saved in a Registry key. Unfortunately, many Registry keys are not legible by humans. And Regedit as a tool absolutely sucks.
PS is really powerful, actually using it is one of the worst experiences ever, it’s just horrible in every way possible. After writing a few bigger scripts in ps I’ve literally swore to never touch it again except for interactive stuff and one-liners.
Powershell very nice? No, in my opinion. Very powerful? Yes.
So many parts of it are so fucking weird.