powershell运行D盘java_PowerShell:使用相对路径从快捷方式运行脚本
經過多次試驗和錯誤,我想出了一個解決方案:
使用此(為.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 -PSPath `'`"`$Path`"`'; & `'`".\$_`"`'`"\`"`""
$Shortcut.IconLocation = 'PowerShell.exe'
$Shortcut.Save()
}
如果需要,請在第一個 \" 之后添加 -NoExit , -ExecutionPolicy Unrestricted 等 .
筆記:
PowerShell從第一個啟動的第二個管理實例的原因是直接以管理員身份啟動(通過勾選快捷方式的"Run as administrator"框),因為some reason忽略"Start in"并始終在System32中啟動 .
CMD用于啟動第一個實例,因為PowerShell當前無法解析包含方括號的路徑,將它們解釋為正則表達式字符 . 這通常可以使用LiteralPath參數(也就是PSPath)來避免,但是在這里,路徑在啟動時在幕后傳遞,并且由開發人員來修復(我剛剛提交了錯誤報告here) .
總結
以上是生活随笔為你收集整理的powershell运行D盘java_PowerShell:使用相对路径从快捷方式运行脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支持到 2026 年 12 月,Linu
- 下一篇: case when用法java,sql之