PowerShell 代码在 运行 来自 PowerShell 命令提示符时有效,但在 运行 双击或变成可执行文件时无效

The PowerShell code works when run from the PowerShell command prompt but not when run with double-click or turned into an executable

此代码:

$username = 'Username'
$password = 'Password'
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword
Start-Process -FilePath powershell -WorkingDirectory "$env:ALLUSERSPROFILE" -Credential $credential -WindowStyle Hidden -ArgumentList "-NoProfile -Command `"Start-Process -FilePath wscript -Verb RunAs -ArgumentList '\`"$((Get-Location).Path -replace "'", "''")\test.vbs\`" \`"/CurrentDirectory:$((Get-Location).Path -replace "'", "''")\`" \`"/AppData:$($env:APPDATA -replace "'", "''")\`"'`""

当我从 PowerShell 命令提示符逐行 运行 时有效。
当我将 .ps1 扩展名关联到“Windows PowerShell”然后双击脚本时,以及当我通过 IronMan Software 的“PSScriptPad”在 .exe 中编译脚本时,都会出现问题。
以下 link:
存在类似问题 Powershell script executes correctly when I choose "run with powershell", but not when I "open with" powershell or double-click it
但就我而言,它甚至不适用于“运行 with PowerShell”,也许问题的原因与影响可执行文件的原因相同。

另一个有用的link如下:

我该如何解决这个问题?
Windows10 专业版 64 位
Powershell 版本:5.1.19041.1237(集成于 Windows 10)。

如果编译的可执行文件不在包含撇号字符的目录中,则编译后的可执行文件可以正常工作,而在双击 .ps1 脚本的情况下,包含它的目录甚至不能包含空格。
这是一个有用的 link:
https://social.technet.microsoft.com/Forums/en-US/bf3344de-3af6-48e3-9f43-f595bb41c62d/bug-powershell-starts-w-error-when-opened-by-context-menu-in-folder-w-apostrophe-in-its-name?forum=win10itprogeneral

对于.exe文件中的撇号路径问题,我向IronMan Software PSScriptPad发送了一个错误报告,然后得到了处理。
对于在 .ps1 脚本上双击或执行“运行 with PowerShell”时路径带有撇号或连续空格的问题,我已通过修复以下注册表值解决:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.ps1]
@="Microsoft.PowerShellScript.1"

[HKEY_CLASSES_ROOT\Directory\Background\shell\Powershell\command]
@="\"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe\" -NoExit -Command \"Set-Location -LiteralPath \\"%V\.\\"\""

[HKEY_CLASSES_ROOT\Directory\Shell\Powershell\command]
@="\"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe\" -NoExit -Command \"Set-Location -LiteralPath \\"%V\.\\"\""

[HKEY_CLASSES_ROOT\Drive\shell\Powershell\command]
@="\"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe\" -NoExit -Command \"Set-Location -LiteralPath \\"%V\.\\"\""

[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\DefaultIcon]
@="\"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe\",0"

[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\Open\Command]
@="\"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe\" -Command \"if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force }; & \\"%1\\"\""

[HKEY_CLASSES_ROOT\SystemFileAssociations\.ps1\Shell[=10=]\Command]
@="\"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe\" -Command \"if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force }; & \\"%1\\"\""

[HKEY_CLASSES_ROOT\SystemFileAssociations\.ps1\Shell\Edit\Command]
@="\"C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe\" -File \"%1\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\ShellIds\Microsoft.PowerShell]
"ExecutionPolicy"="RemoteSigned"