Search notes:

PowerShell cmdLet Get-Counter

(get-counter '\Process(*)\% Processor Time').CounterSamples
(get-counter '\Process(powershell)\% Processor Time').CounterSamples
(get-counter '\Process(powershell*)\% Processor Time').CounterSamples

Returned object

When not using -listSet (or other parameters?), get-counter returns a Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet object:
PS C:\> (get-counter '\Process(powershell#2)\Working Set').getType().FullName
Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet

-listSet

Invoking get-counter with the option -listSet returns an array of Microsoft.PowerShell.Commands.GetCounter.CounterSet objects.
(get-counter -listSet *) | select-object counterSetName | sort-object counterSetName

$procCnt = get-counter -listSet processor

$procCnt.Paths
$procCnt.PathsWithInstances

Find processor intensive processes

Apparently, it's not possible(?) to find processes that use much CPU with the cmdlet get-process.
In order to find CPU intensive processes, the counter \Process(*)\% Processor Time can be used:
(get-counter '\Process(*)\% Processor Time').counterSamples |
  sort-object cookedValue -desc |
  select-object -first 10

Multiple processes

The \Process(…) related counted are indexed by process image name, not by the process id. Thus, the following command reports only one Powershell process's working set even if multiple Powershell process are running:
(get-counter '\Process(powershell)\Working Set').counterSamples.cookedVAlue / 1mb
In order to get the individual processes's numbers, the process name can be indexed with #0, #1 etc:
(get-counter '\Process(powershell#0)\Working Set').counterSamples.cookedVAlue / 1mb
(get-counter '\Process(powershell#1)\Working Set').counterSamples.cookedVAlue / 1mb

See also

Show all performance counters.
get-counter is one of the cmdLets with the -computerName parameter.
Powershell command noun: counter

Index