Powershell更改点源文件的位置

时间:2014-11-13 16:02:43

标签: powershell

我有一个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的新手,所以非常感谢所有的帮助和信息。

感谢

1 个答案:

答案 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"
  }
}