Powershell is not a precompiled type of language. So therefore, anyone can read the contents of the script. What if you need to use a password to have the script access certain resources? You can always encrypt your password as a secured string and then decrypt it at runtime. First you will need to encrypt your password using the code below.
$password = Read-Host -Prompt 'Enter your password to encrypt' -AsSecureString
Then, you will need to dump the output of the secure string into an xml file where you powershell script will call at runtime and decrypt.
$password | Export-Clixml -Path 'C:\securepassword.xml'
You can see that the contents of the file it create, securepassword.xml, has your password in encrypted format.
Next, have you powershell call that file and decrypt it.
$password = Import-CliXml -Path 'c:\securepassword.xml'
$plain_password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($password))
write-host $plain_password
One caveat is that you must run the Import-CliXml command as the same user you use to encrypt the password.