经过多次试验和错误,我想出了一个解决方案:
使用此(为.ps1编辑)创建一个快捷方式,让scrips以管理员身份运行,相对于任何目录:
CMD /C PowerShell "SL -PSPath '%CD%'; $Path = (GL).Path; SL ~; Start PowerShell -Verb RunAs -Args \""SL -PSPath '"$Path"'; & '".\YourScriptHere.ps1"'"\""
您必须清空快捷方式的“开始”字段,以将其相对路径设置为工作目录 .
或者,这是一个脚本,它将为目录中的每个.ps1生成这些快捷方式之一(“已开始”已清除):
(GCI | Where-Object {$_.Extension -eq ".ps1"}).Name | ForEach-Object {
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut((GL).Path+"\$_ Run.lnk")
$Shortcut.TargetPath = 'CMD'
$Shortcut.Arguments = "/C PowerShell `"SL -PSPath `'%CD%`'; `$Path = (GL).Path; SL ~; Start PowerShell -Verb RunAs -Args \`"`"SL -PSPa