To expand upon @Martin Brandl's answer, I would suggest going the Parameter route. You can set a default value for your own use while also allowing people to specify a different path when they run the script. As a small example:
[CmdletBinding()]
param(
[string]$Path = "C:\Users\Future\Desktop"
)
Set-Location $Path
If you use the Mandatory parameter setting it will require someone to input a Path each time the script is run which is similar to using Read-Host
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]$Path
)
Set-Location $Path
There are other parameter settings you can use for validation purposes.
I would recommend looking through this page for more information on to set up functions as it describes a lot of the options you can use in parameters.
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions?view=powershell-6
$env:USERPROFILE\Desktop.