Short description

PowerShell is as case-insensitive as possible while preserving case.

Long description

As a general principle, PowerShell is as case insensitive as possible while preserving case and not breaking the underlying OS.

On Unix-based systems

On Unix-based systems, PowerShell is case-sensitive because filesystem manipulation and environment variables directly affect the underlying operating system and integration with other tools.

On all systems

  • PowerShell variables are case-insensitive

    Variable names have no interaction between them and the underlying operating system. PowerShell treats them case-insensitively.

  • Module names are case-insensitive (with exceptions)

    The name of the module is purely a PowerShell concept and treated case-insensitively. However, there is a strong mapping to a foldername, which can be case-sensitive in the underlying operating system. Importing two modules with the same case-insensitive name has the same behavior as importing two modules with the same name from different paths.

    The name of a module is stored in the session state using the case by which it was imported. The name, as stored in the session state, is used by Update-Help when looking for new help files. The web service that serves the help files for Microsoft uses a case-sensitive filesystem. When the case of the imported name of the module doesn't match, Update-Help can't find the help files and reports an error.