About three months ago, I started learning PowerShell through the Microsoft Graph module because I wanted to automate Microsoft 365 administration. I already knew how to perform tasks such as creating users and groups, assigning licenses, and managing devices through graphical interfaces, so I assumed scripting those same tasks would be relatively easy.
Since then, I've learned about variables, arrays, hash tables, loops, functions, pipelines, objects and properties, filtering, conditional statements, error handling, and basic Graph administration. I've written scripts to create and update users and groups and to audit parts of my Microsoft 365 environment.
I'm enjoying the results, but I'm also feeling 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 instead of learning general PowerShell first? Is this level of frustration normal after a few months? I'm not trying to become a full-time developer; I mainly want to become competent enough to automate and administer Microsoft 365, Entra, and Intune effectively. What helped you get past this stage?
5 Answers
A practical progression is to start with small, sequential scripts, then gradually turn repeated sections into functions and reusable components. Focus on one improvement at a time: clear input and output, validation, error handling, logging, and performance.
For large Graph operations, remember that making one request per user can be slow or trigger throttling. Sometimes it’s faster to retrieve a broader dataset once, store it in memory or a hash table, and then perform local lookups. The important lesson is to measure and understand the bottleneck rather than optimizing prematurely.
This is a normal way to learn automation. Most administrators start with a task they need to complete, search for the relevant commands or module documentation, test the pieces, and gradually build a working script. There is no requirement to learn a completely separate version of PowerShell before using modules.
It’s still worth spending some time on general topics such as functions, parameter validation, objects, scope, error handling, and testing. Those skills transfer directly to Graph and will make your scripts safer and easier to maintain. Keep using it consistently; confidence usually comes from repeated problem-solving rather than trying to memorize the whole language.
You didn’t make a mistake. You started with a real platform and a practical goal, which is often more effective than studying a language without knowing what you want to use it for. Learning cmdlets is only one part of PowerShell; the bigger skills are breaking a problem into steps, working with objects, handling input and output, and building reliable logic.
You don’t need to master every feature before writing useful scripts. Keep solving real problems, look up the pieces you need, and revisit older scripts as your skills improve. Over time, you’ll naturally recognize better patterns and more efficient approaches.
A structured learning method can help. First make sure you understand individual concepts, then combine them in small exercises. After that, modify existing scripts and explain what each change does, compare alternative approaches, and finally create something from scratch.
Don’t hesitate to return to the basics when you get stuck. Small experiments in the console, reviewing command output, and breaking a large script into separate sections can make the overall problem much easier to reason about.
The difficult part may not be PowerShell specifically; you’re learning programming fundamentals, PowerShell itself, and the Graph API all at once. Concepts such as data types, control flow, variable management, authentication, object structures, and API behavior would create a steep learning curve in almost any language.
Using Graph as your learning environment is completely reasonable. Just fill in the gaps as they become relevant, rather than trying to learn the entire language in advance.
I think you’re right. I’m trying to understand programming, PowerShell, and Graph simultaneously, which explains why it feels like a lot.

That makes sense. I can already build basic loops, conditions, and functions, so I’ll keep practicing instead of expecting myself to know everything immediately.