This is part 3 of my series of the most common PowerShell
errors that are made in my PowerShell classes.
I will be posting one a day to help you understand why an error occurred
and what the error’s meaning is.
Today’s error: A parameter cannot be found that matches parameter name
Here is our starting code:
Get-Date -Year 2018 -Month 9 -day 23 -ComputerName DC1
And here is the full error:
Get-Date : A parameter cannot be found that matches parameter name
'ComputerName'.
At line:1 char:38
+ Get-Date -Year 2018 -Month 9 -day 23 -ComputerName DC1
+
~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-Date],
ParameterBindingException
+ FullyQualifiedErrorId :
NamedParameterNotFound,Microsoft.PowerShell.Commands.GetDateCommand
This is one of my favorites.
TAB Completion is a wonderful thing.
It helps us understand what parameters are available to us and prevents
typos. Many times I catch my students
forcing a parameter into a cmdlet. If
the parameter will not TAB complete, then 1 of 2 things is the problem.
1 – The Parameter is not available for the cmdlet. Just because one cmdlet has a ComputerName parameters does not mean
every one does.
2 – The parameter is not part of the current parameter set.
To help with #1, take a look at the syntax block of the
cmdlets help file.
SYNTAX
Get-Date [[-Date]
[]] [-Day []] [-DisplayHint {Date | Time |
DateTime}] [-Format []] [-Hour
[]]
[-InformationAction {SilentlyContinue | Stop | Continue | Inquire | Ignore |
Suspend}] [-InformationVariable
[]] [-Millisecond []] [-Minute
[]] [-Month []] [-Second []] [-Year
[]]
[]
Get-Date [[-Date]
[]] [-Day []] [-DisplayHint {Date | Time |
DateTime}] [-Hour []]
[-InformationAction
{SilentlyContinue | Stop | Continue | Inquire | Ignore | Suspend}]
[-InformationVariable
[]] [-Millisecond []] [-Minute
[]] [-Month []] [-Second []] [-UFormat
[]]
[-Year []] []
Get-Date has 2 syntax blocks. This is because there are two parameters that
cannot be used at the same time. In any
case, you will not find a –ComputerName
parameter listed. In other words, you
cannot use this parameter with this cmdlet.
As for the parameter set, this can be a bit tricky. If you Type Get-Date in the PowerShell ISE, you will see both –Format and –Uformat parameters listed
If you use one of those two parameters, the other is
filtered out.
Resolution:
Use TAB completion or the cmdlets help file so you know what
parameters can be used. Also, do not
force a parameter into a cmdlet. It will
not work.
For those of you who want a dinfinative list of which parameters can work together, check out my post on Finding the Required Parameters in Parameter Sets. The code will list each parameter in each set for any cmdlet you want to examin.
For those of you who want a dinfinative list of which parameters can work together, check out my post on Finding the Required Parameters in Parameter Sets. The code will list each parameter in each set for any cmdlet you want to examin.
Comments