Software⏱️ 3 min read📅 2026-06-11

How to Fix: Start-Process always generates error "A positional parameter cannot be found that accepts argument '$null'"

Start-Process Error in PowerShell on Server 2012 R2 - A positional parameter cannot be found that accepts argument '$null' error message.

Quick Answer: The issue is likely due to the way Start-Process handles positional parameters. Try using the '-ArgumentList' parameter with a string instead of an array, or use the 'Invoke-Expression' cmdlet to pass the arguments as a single string.

The error 'A positional parameter cannot be found that accepts argument '$null'' is experienced by users who attempt to launch the SQLServer installation using the Start-Process cmdlet. This issue can occur even when all arguments are correctly specified, making it a frustrating problem for IT administrators and system administrators.

This error occurs due to the way PowerShell handles positional parameters versus named parameters. The Start-Process cmdlet is designed to work with positional parameters, where the order of the arguments matters. However, in some cases, the wrong set of parameters might be used, leading to this error.

🛑 Root Causes of the Error

  • The primary reason for this error is that PowerShell expects all arguments to be specified before any positional parameters when using Start-Process. When positional parameters are provided after named parameters, it can cause issues.
  • Another possible reason could be the presence of an empty string in the ArgumentList array, which might cause the positional parameter to fail.

✅ Best Solutions to Fix It

Correcting the Positional Parameters Order

  1. Step 1: To fix this issue, ensure that all named parameters are specified before any positional parameters when using Start-Process. This means rearranging your ArgumentList array so that named parameters come first.
  2. Step 2: For example, if you have a long Argument list like the one provided in the original code, make sure to move the named parameters (e.g., /ACTION=Install) to the beginning of the array before the positional parameters (e.g., $DVDDriveLetter `/setup.exe`).
  3. Step 3: Verify that there are no empty strings or unnecessary whitespace characters in your ArgumentList array, as these can also cause issues.

Checking for Empty Strings in ArgumentList

  1. Step 1: To further troubleshoot this issue, check the ArgumentList array for any empty strings. These can be introduced accidentally when building or populating the array.
  2. Step 2: If an empty string is found, remove it from the array and re-run the Start-Process cmdlet to see if the error persists.

💡 Conclusion

By following these steps and ensuring that all arguments are correctly specified in the right order, you should be able to resolve the 'A positional parameter cannot be found that accepts argument '$null'' error when launching SQLServer using Start-Process. Remember to verify your ArgumentList array for any empty strings or unnecessary whitespace characters before proceeding.

Did this fix your problem?

If not, try searching for specific error codes.

🔍 Search Error Database

❓ Frequently Asked Questions