- Cmdlets: These are .NET programs designed to interact with PowerShell
- Scripts: These are files with the
FileName.PS1
extension - Functions: These are a block of code that are very helpful for script organization
- Native window commands: These are internal commands such as MKDIR, CHDIR, and so on
The internal commands of Windows PowerShell are called cmdlets. Cmdlets are always named in the verb-and-noun combination. This appears as Verb-Noun, for example
Get-Service
and Stop-Service,
where Get
and Stop
are verbs, and Service
is a noun.
(Verb)—Action
(Noun)—Something to be acted on
For example,
Get-Service
Let's execute the following command:
Get-Command
The output of this command is illustrated in the following image:
The previous command will list all the installed commands from the computer and retrieve only the cmdlets, functions, and aliases.
Get-Command -CommandType Cmdlet
Now, let's explore the commands. In the following example, we will take a look at the cmdlet
Get-Service
. Since we know the cmdlet up front, let's collect more information such as the cmdlet version and source, as follows:Get-Command Get-Service
The output of the preceding command is illustrated in the following image:
- 1: This is the type of command
- 2: This is the name of the command
- 3: This indicates the version (From Windows PowerShell 5.0 onward)
- 4: This indicates the module's name
To retrieve the commands for a specific module, we need to use the
Module
parameter, which accepts the module name (Source) as we saw in bullet 4. The following is an example of the command:Get-Command -Module Microsoft.PowerShell.Management
This outputs all the commands available in the
Microsoft.PowerShell.Management
module.
The
Get-Service
command will retrieve all the services running on your local computer.
Let's see the alternate of the
Get-Service
cmdlet using the .NET class. To do this, let's find the TypeName of the Get-Service
cmdlet by executing Get-Service
| Get-Member
and this gives the TypeName
as System.ServiceProcess.ServiceController
. Windows PowerShell allows us to use this directly as follows:[System.ServiceProcess.ServiceController]::GetServices()
Now, let's take a look at how the command that we just discussed works.
Here, we will consume the .NET
ServiceController
class in PowerShell and invoke the GetServices()
method.
The
GetServices
method has an overload with a machineName
parameter. To find this, we will execute the following command:[System.ServiceProcess.ServiceController]::GetServices
The difference is that here, we did not use parentheses. The output of
OverloadDefinitions
is as follows:OverloadDefinitions ------------------- static System.ServiceProcess.ServiceController[] GetServices() static System.ServiceProcess.ServiceController[] GetServices(string machineName)
We can query the service information of a remote computer by passing the host name of the remote computer as the
machineName
parameter, as follows: [System.ServiceProcess.ServiceController]::GetServices('RemoteServer')
No comments:
Post a Comment