PowerShell运行时获取脚本路径:$MyInvocation.PSCommandPath返回空值
获取PowerShell脚本的可靠路径
直接使用$MyInvocation.PSCommandPath会出现返回空值的问题,这是因为该变量的行为依赖于具体的调用上下文,在相对路径调用脚本的场景下容易失效。
你可以用PowerShell v3及以上版本提供的更可靠的自动变量来解决:
$PSCommandPath:直接返回当前脚本的完整绝对路径,适用于需要完整脚本路径的场景$PSScriptRoot:返回当前脚本所在的目录的完整绝对路径,适合需要拼接其他文件路径的场景
替换后的脚本示例
# 获取脚本完整绝对路径 $scriptFullPath = $PSCommandPath Write-Host "脚本路径:$scriptFullPath" # 示例:生成重启后可直接执行的命令(保留原参数) $restartExecuteCommand = "powershell -ExecutionPolicy Bypass -File `"$scriptFullPath`" -file1 .\file1.exe -file2 .\file2.exe" Write-Host "重启后执行命令:$restartExecuteCommand"
说明
用$PSCommandPath获取的路径是绝对路径,只要脚本文件没有被移动,重启系统后使用这个路径就能正常执行脚本,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Wandering
相关产品推荐
相关产品推荐

