首页 > 解决方案 > 如何在 Powershell 中引用多个路径?

问题描述

我正在编写一个脚本,该脚本从位于脚本根文件夹的多个目录中提取。当我使用这个时:

$ScriptPath="$PSScriptRoot\Scripts"
$BinaryPath="$PSScriptRoot\Binaries"
$DataFolderPath="$PSScriptRoot\Data"

PowerShell 抱怨 3 条路径中的 2 条说找不到它们。

我也试过这个,但没有运气。

$ScriptPath=Join-Path (Split-Path $PSScriptRoot) -ChildPath Scripts
$BinaryPath=Join-Path (Split-Path $PSScriptRoot) -ChildPath Binaries
$DataFolderPath=Join-Path (Split-Path $PSScriptRoot) -ChildPath Data

标签: windowspowershell

解决方案


你怎么运行这个?

This...$PSScriptRoot只会在您运行完整脚本时填充,而不是在您在 ISE/VSCode 或其他编辑器窗格窗口中运行时填充。

最后$PSScriptRoot,正如记录的那样......


关于自动变量

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.1

PSScriptRoot 包含调用的脚本的完整路径


...因此,如果您不在具有该组命名子文件夹的源目录中,那么您应该期望这会失败。

如果您想让它工作,那么您必须在开始之前检查子文件夹是否存在,如果不存在,那么您的脚本应该创建它们,然后运行其余代码。


推荐阅读