Author Posts

August 13, 2018 at 2:13 pm

OMG I forgot how to use the methods of objects.

I piped get-service to get-member and i see it has a method called pause. So what i want to do is select an object from the service objects and use the pause method on it but i forgot how! Maybe there are more ways to do this, so please post even if this is answered if you know more ways of doing this. Thanks!

August 13, 2018 at 6:06 pm

I have been searching but i could not find the way i like to be doing this 🙁

Anyone got an answer for me?

August 13, 2018 at 6:10 pm

I found one way. Surrounding the command in parentheses and using .method on it. But this does not work for all cmdlets it seems. Any other way you guys do this?

August 13, 2018 at 6:21 pm

There're a few ways.

#1
$Var = Do-Thing
$Var.Property
$Var.Method([param])
#2
(Do-Thing).Property
(Do-Thing).Method([param])
#3
Do-Thing | ForEach-Object -MemberName Property
Do-Thing | ForEach-Object -MemberName Method [param]

Methods always require parentheses to run, you can think of them like little scripts. Properties tend to be static values, and are referenced without parentheses. Methods can take parameters or arguments inside their parentheses.

If you call a method name without the parentheses, PowerShell will helpfully list its OverloadDefinitions — the different ways it can be called, with different sets of parameters (or none, sometimes).

August 13, 2018 at 6:31 pm

The question is what are you trying to accomplish? If you look at what commands are available for services:

PS C:\Users\Rob> Get-Command "*-Service"

CommandType     Name                                               Version    Source                                                                                                                                   
-----------     ----                                               -------    ------                                                                                                                                   
Cmdlet          Get-Service                                        3.1.0.0    Microsoft.PowerShell.Management                                                                                                          
Cmdlet          New-Service                                        3.1.0.0    Microsoft.PowerShell.Management                                                                                                          
Cmdlet          Restart-Service                                    3.1.0.0    Microsoft.PowerShell.Management                                                                                                          
Cmdlet          Resume-Service                                     3.1.0.0    Microsoft.PowerShell.Management                                                                                                          
Cmdlet          Set-Service                                        3.1.0.0    Microsoft.PowerShell.Management                                                                                                          
Cmdlet          Start-Service                                      3.1.0.0    Microsoft.PowerShell.Management                                                                                                          
Cmdlet          Stop-Service                                       3.1.0.0    Microsoft.PowerShell.Management                                                                                                          
Cmdlet          Suspend-Service                                    3.1.0.0    Microsoft.PowerShell.Management                                                                                                          

For simplicity, you can see that you can pipe to Suspend rather then attempting to call a method:

Get-Service -Name SERVICENAME | Suspend-Service

August 13, 2018 at 6:41 pm

This is the way to do it. But I had better luck with .Stop()

$a = get-service AdobeARMservice
$a.Pause()
Exception calling "Pause" with "0" argument(s): "Cannot pause AdobeARMservice service on computer '.'."
At line:1 char:1
+ $a.Pause()
+ ~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : InvalidOperationException
$a.Stop()