I often find myself in the situation where I have to concatenate a string with a variable after a cmdlet. For example,
New-Item $archive_path + "logfile.txt" -type file
If I try to run this, PowerShell throws the following error:
New-Item : A positional parameter cannot be found that accepts argument '+'.
Am I not concatenating the string correctly? I'd like to not have to declare another variable before each cmdlet that I do this in (e.g., $logfile = $archive_path + "logfile.txt"
, and then do New-Item $logfile -type file
). Also, I won't always be concatenating a file path.
You get that error because the PowerShell parser sees $archive_path
, +
, and "logfile.txt"
as three separate parameter arguments, instead of as one string.
Enclose the string concatenation in parentheses, ()
, to change the order of evaluation:
New-Item ($archive_path + "logfile.txt") -Type file
Or enclose the variable in a subexpression:
New-Item "$($archive_path)logfile.txt" -Type file
You can read about argument mode parsing with Get-Help about_Parsing
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With