Creating the PSM1 PowerShell Module File
Full-Access Members Only
Sorry, this lesson is only available to Server Academy Full-Access members. Become a Full-Access member now and get instant access to this and many more premium courses. Click the button below and get instant access now.
Instructions
Q&A (0)
Notes (0)
Resources (0)
Saving Progress...
Resources
There are no resources for this lesson.
Notes can be saved and accessed anywhere in the course. They also double as bookmarks so you can quickly review important lesson material.
Expand the full completed source code for this lesson below:
GreetMe.psm1 Full Source Code
In this lesson, we're going to be writing our PowerShell module or PSM1 file. Now, in this particular instance, what we're going to do is define a couple variables at the top. So I'll just call this variables. We're going to import all private functions. Then we're going to import And export functions from the public folder, and we're going to do this dynamically.
Now I want to make a note about security. What we're going to do for development purposes is automatically import any PowerShell files that are in the new public or private folders. And what this means is if somebody gains access to your system and they put. A file in here, a PowerShell script that has malicious code.
Your function will automatically import and execute that. And you may think, you know, that's not very good and it's really not. But I would also argue if somebody has permission to create files and PowerShell scripts and place them on your file system, you're already in a lot of trouble. With that being said, the system that we're going to write that will automatically dot source all of these PowerShell scripts can easily replace once you're done writing your PowerShell module. By just manually calling out each file that we have inside of here again, if someone can write to your file system, they could just open up this module file and manually import or include those PowerShell files that are malicious as well that they can just place in the file system, so, I don't really think you're mitigating much, and I've seen several other modules that use the same method, but I want you to be aware that you know, this is, this could be a vulnerability, but we're going to go ahead and just do this because it's going to save us a lot of time, and I don't think it's a big deal for our lab exercises.
All right that's between you and your security team if you want to do this or you want to go a different path. So I'm going to make, create a couple of variables here at the top, and this is going to be our module public path, and this is going to be equal to, we're going to use join dash path, and we're going to use ps script root.
And then we're going to join it with public. Alright, so we're taking this variable pscryptr, which if I execute right now, will probably be empty. Now this is a tricky variable that is reserved it's, or it's a default variable that is, will be present when we say import module. This will, this variable will be populated, but when we just run it in our terminal, it's empty.
Okay. So I just want you to be aware of that, but what this is going to look like is it's going to be this full path and we're going to take this and we're going to join this with public. So just to give you an idea of what that's going to look like, if I copy this and I say, join dash path and I paste in that, and then I paste in public, this is what we end up with.
See users, administrator documents, PowerShell modules, greet me, which is the folder that we're in right here at the top and then the folder public. Okay. Now. I'm going to copy this line in the way that I like to do this in Visual Studio code is by holding shift and alt and press the down arrow and look at that.
Server Academy Members Only
Sorry, this lesson is only available to Server Academy Full Access members. Become a Full-Access Member now and you’ll get instant access to all of our courses.