我有一个Power Shell模块,它引用了许多PS1文件。
. $PSScriptRoot\vs-command.ps1
. $PSScriptRoot\open.ps1
. $PSScriptRoot\git.ps1
. $PSScriptRoot\build.ps1
. $PSScriptRoot\deploy.ps1
. $PSScriptRoot\count.ps1
. $PSScriptRoot\tab.ps1
. $PSScriptRoot\test.ps1
. $PSScriptRoot\nuget.ps1
. $PSScriptRoot\checkforxml.ps1
此PSM1文件保存在Documents \ WindowsPowerShell \ Modules的位置,并且当前绑定到上面引用的PS1文件。
上面的文件对visual studio项目\解决方案执行了许多操作,现在我要求将每个文件保存在解决方案文件夹中的自己的文件夹中。
我需要找到一种在打开相同的PowerShell窗口时切换$ PSScriptRoot的方法。
所以....要求是...这些文件的初始加载所以我有我期望的基本命令...然后...当我切换到d:\ slns中保存的解决方案文件夹时将检测根已更改,然后选择新的ps1文件。
我是powershell的新手,所以非常感谢所有的帮助和信息。
感谢
答案 0 :(得分:0)
$PSScriptRoot
是一个自动变量,其中包含启动给定PowerShell脚本的文件夹的路径,即您的脚本从其自己的父文件夹中对其他.ps1文件进行点源。
如果您需要从其他位置获取文件,则需要将该变量替换为每个文件的相应路径。
我仍然不确定我理解你的问题,但也许会这样:
switch -wildcard ($PSScriptRoot) {
'*\somefolder\*' {
. "$PSScriptRoot\A.ps1"
. "$PSScriptRoot\..\..\C.ps1"
}
'*\otherfolder\*' {
. "$PSScriptRoot\B.ps1"
. 'C:\some\where\else\D.ps1'
}
default {
. "$PSScriptRoot\A.ps1"
. "$PSScriptRoot\B.ps1"
}
}