Updating and lengthening PowerShell object’s kind knowledge

One of many issues that I’ve all the time appreciated about PowerShell is that it may possibly present a wealth of knowledge for its varied objects. The Get-VM cmdlet, for example, is ready to retrieve granular details about Hyper-V digital machines. What lots of directors don’t notice is that you could really add to what PowerShell already is aware of about an object. Let me present you the way it’s carried out.

Earlier than we will lengthen a PowerShell object’s kind knowledge, we have to know the article’s kind identify. The best approach to do that is to make use of the Get command to retrieve an object, after which pipe the command’s output into the Get-Member cmdlet. Suppose for a second that you just wished to change the information that’s out there for system companies. You would kind Get-Service | Get-Member. As you may see within the determine beneath, PowerShell reveals you the properties and strategies that at present exist for the article (on this case, companies), however PowerShell additionally shows the sort identify simply above the listing. Within the case of the system companies, for instance, the sort identify is System.ServiceProcess.ServiceController.

PowerShell object’s type data

Creating members

You possibly can add kind knowledge to a PowerShell object by creating members. These members might be script properties (which implies that the worth is calculated), or they are often aliases. Though this sounds considerably complicated, creating members is less complicated than you may count on.

I like to recommend that you just get began by seeing what members at present exist. Generally Microsoft creates members for you. By the way, members created by Microsoft are persistent, however the members that you just create are solely out there all through your PowerShell session.

To see what members exist, simply map the sort identify to a variable, after which take a look at the variable’s members. Right here is an instance:

$Information = Get-TypeData System.ServiceProcess.ServiceController

Within the case of the system companies, there aren’t any preexisting members, however let’s go forward and create a member of our personal. There are just a few totally different items of knowledge that you’ll want to produce when making a member.

First, as you could have already guessed, you’ll have to provide the sort identify. Personally, I prefer to map the sort identify to a variable. PowerShell doesn’t require you to make use of a variable for this objective, however I discover that doing so helps to simplify the command. I’ll present you an instance in a second.

The following piece of knowledge that you’ll want to offer is the kind of member that you’re creating. The legitimate member varieties are ScriptProperty and AliasProperty.

The third piece of knowledge that you’ll have to embody is a reputation for the member that you’re creating. You possibly can name the member something that you really want, so long as the identify isn’t already getting used.

Lastly, the fourth piece of knowledge that it’s a must to provide is the worth. The worth is the knowledge that can be assigned to the member that you’re creating. Whenever you provide the worth, it have to be enclosed in brackets .

So now that I’ve outlined the essential necessities, let’s go forward and create a member. I’m going to stay to working with the system companies, only for the sake of consistency.

The very first thing that we now have to resolve is what the brand new member will do. We are able to make the member do something that we wish, however I’m going to create a member named Pc that features the identify of the pc that the service is working on (in my instance, it will likely be the native machine).

As beforehand famous, step one is mapping the sort identify to a variable. Here’s what such a command may appear to be:


Now that we now have mapped the sort identify to a variable, we will use the Replace-TypeData cmdlet to create the member. Here’s what such a command may appear to be:

Replace-TypeData -TypeName $Information -MemberType ScriptProperty -MemberName Pc -Worth $env:ComputerName

As you may see, the TypeName merely factors to the variable containing my kind identify. The MemberType is ready to script property, which implies that I’m going to let PowerShell calculate a price. The MemberName is ready to Pc, indicating that the customized member can be referred to as Pc. The worth is ready to $env:ComputerName, which retrieves the pc identify from the Home windows surroundings variable.

In distinction, an alias merely assigns a secondary identify to a price that already exists. If for instance, we wished to create an alias referred to as Comp that accommodates the identical worth because the Pc member, we may achieve this with a command like this one:

Replace-TypeData -TypeName $Information -MemberType AliasProperty -MemberName Comp -Worth Pc -Pressure

As you may see, I modified the member kind to AliasProperty, set the member identify to Comp, and set the worth (which is being pressured) to match that of the Pc member that I created earlier. Here’s what the command seems to be like in motion.

However did it work?

Now that I’ve proven you easy methods to create customized members, you could be questioning easy methods to inform if the method labored or not, and the way you need to use the members that you’ve created. To confirm the existence of the members, simply use the command that I confirmed you earlier:

Get-Service | Get-Member

The determine beneath lists each of the customized members. Comp is on the very prime of the listing, and Pc is on the backside of the listing.

PowerShell object’s type data
So how do you utilize these customized strategies? You need to use them in precisely the identical approach as some other object properties. If for instance, you kind the next command, you will note Pc and Comp listed among the many object’s properties.

Get-Service WinDefend | Choose-Object *

PowerShell object’s type data

Updating PowerShell object’s kind knowledge: One caveat

Needless to say the information customized members that you just create will solely persist all through your PowerShell session. I like to recommend that you just create a script to outline any customized members that you just need to use on an ongoing foundation.

Featured picture: Freepik / TechGenix picture illustration

Put up Views:

Extra PowerShell Fundamentals articles

report this advert

Learn Subsequent

About the Author

Leave a Reply

Your email address will not be published. Required fields are marked *