I started learning PowerShell about three months ago, mainly through the Microsoft Graph module because I work with Microsoft 365. Since I already knew how to create users and groups, assign licenses, manage devices, and perform other tasks through the graphical interface, I assumed automating those tasks would be fairly easy.
I've learned about variables, arrays, hashtables, loops, functions, pipelines, objects and properties, filtering, conditional logic, error handling, and basic Graph administration. I've also written scripts to create and update users and groups and audit parts of my Microsoft 365 environment.
I'm enjoying the practical results, but I also feel overwhelmed when I have to combine several concepts into a complete script. I understand individual topics while studying them, yet putting everything together still feels difficult.
Did I make things harder by starting with Microsoft Graph, or is learning through a real administration platform a reasonable approach? Would it have been better to learn general PowerShell first? I'm not trying to become a full-time developer; I mainly want to become competent at automating and administering Microsoft 365, Entra, and Intune. How did others get through this stage?
5 Answers
A lot of the difficulty is probably learning programming concepts at the same time as PowerShell and Graph. Variables, types, control flow, data structures, and functions are challenging regardless of the language. Graph adds authentication, permissions, API behavior, and throttling on top of that, so feeling overwhelmed after three months is normal. Learn the missing fundamentals gradually rather than restarting from scratch.
Learning through a module is how many administrators learn PowerShell. Modules are what make the language useful for real work, so there isn't really a completely separate version of 'pure' PowerShell that you need to master first. Use the module to solve actual problems, and fill in general gaps as they appear. Studying fundamentals, practicing with small projects, and reviewing generated code carefully can all help. Just remember to test scripts and understand what they do before using them in production.
That is reassuring. I can keep using Graph for work while deliberately filling in the general PowerShell concepts I haven't learned yet.
Keep going and judge your progress by what you can automate now, not by whether you feel like an expert. As you work with larger environments, you'll naturally learn better ways to handle performance, data structures, reporting, and API limits. For example, making many Graph calls in parallel can be slower because of throttling; sometimes retrieving data once, storing it in a hashtable, and searching locally is much faster. Practical experience will teach you when those techniques are useful.
The main takeaway for me is that competence comes from repeatedly solving real problems, not from completing a perfect curriculum first.
A useful progression is to start with small sequential scripts, then gradually combine commands into functions and reusable script blocks. Practice taking input, processing it, and producing useful output such as reports. Break larger scripts into small pieces and test each part independently. You can also study general PowerShell topics alongside your Graph work, but there is no need to abandon the practical path that is already producing results.
Breaking the work into smaller pieces and checking whether I truly understand each part sounds more useful than trying to memorize the whole language.
You didn't make a mistake. Learning PowerShell while solving real problems is a practical way to learn, and using Graph gives you a clear reason to keep practicing. You can look up the relevant commands as needed; the more important skills are understanding objects, logic, input and output, error handling, and how to structure a solution. Those ideas transfer across modules and platforms. Keep writing scripts instead of waiting until you feel you've mastered every part of the language.
That makes sense. I'm starting to build basic loops, conditions, and functions, so I think continuing to use them in real tasks will help everything come together.

I'm realizing that I'm learning general programming, PowerShell, and Graph all at once, which explains why the learning curve feels so steep.