This Powershell error Cannot process argument because the value of argument "value" is not valid. Change the value of the "value" argument and run the operation again. has tripped me up a few times now. I
can usually fix it without ever really knowing how. I hate those type of
solutions so this time I decided to get to the bottom of it.
I started using a new template snippet for my advanced
functions. I tracked it down to one small detail in that template that was
causing this issue. Here is the code below:
function New-Function
{
<#
.SYNOPSIS
.EXAMPLE
New-Function -ComputerName server
.EXAMPLE
.NOTES
#>
[cmdletbinding()]
param(
#
Pipeline variable
[Parameter(
Mandatory = $true,
HelpMessage = '',
Position =
0,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true
)]
[Alias('Server')]
[string[]]$ComputerName
)
process
{
foreach($node in $ComputerName)
{
Write-Verbose
$node
}
}
}
I start with this and fill in the rest of my code as I go.
The full error message is this:
Cannot process argument because the value of argument
"value" is not valid. Change the value of the "value"
argument and run the operation again.
At line:16 char:11
+ [Parameter(
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [],
RuntimeException
+
FullyQualifiedErrorId : PropertyAssignmentException
The function also acts kind of strange. I can tab complete
the name but not any arguments. This tells me it is not loading correctly. If I
try and get-help on the command, I get the exact same error message.
It took me a little trial and error but I narrowed it down
to one of the parameter attributes. In this case, if the HelpMessage was left '' then it would error out. I would usually remove this line or add a real message
eventually.
#
Pipeline variable
[Parameter(
Mandatory = $true,
HelpMessage = '',
Position =
0,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true
)]
[Alias('Server')]
[string[]]$ComputerName
So if you are getting this error message, pay attention to
the actual values in the parameter. If any of them are blank or null, you may
run into this.
In the end, I updated my snippet to use a different placeholder.
Problem solved.
No comments:
Post a Comment