PowerShell - 包括.ps1文件 - 从其他文件夹调用

时间:2015-12-14 11:23:00

标签: powershell

我正在努力应对PowerShell挑战,设置如下:

在C:\ update文件夹中,我有ReInstall.ps1 powershell脚本,它将尝试在另一个驱动器上的文件夹中运行脚本:

q:\test\install.ps1

在q:\ test文件夹中,我有一个名为Install.ps1的Powershell文件,它试图包含另一个名为InstallFunctions.ps1的ps文件

. .\installfunctions.ps1

从q:\ test \文件夹执行时,两个安装ps文件的效果很好。

但是如果我尝试从c:\ Update文件夹运行ReInstall.ps1脚本,它很好地启动q:\ install.ps1,但随后失败,因为它无法找到Installfunctions.ps1。

它尝试在c:\ update文件夹中找到InstallFunctions.ps1,而不是q:\ test文件夹。

  

术语'。\ installfunctions.ps1'不被识别为cmdlet的名称,>函数,脚本文件或可操作程序。   检查名称的拼写,或者如果包含路径,请验证路径>是否正确,然后重试。

由于安装ps文件位于ISO文件中,并且必须在任何情况下都可以使用,因此我无法对其进行更改。所以我必须想办法让Install.ps1相信它从q:\ test文件夹运行。

1 个答案:

答案 0 :(得分:1)

你必须像这样检索脚本文件夹(PS 2.0):

$scriptPath = Split-Path $MyInvocation.MyCommand.Definition

. "$scriptPath\installfunctions.ps1"
#or . (Join-Path $scriptPath "installfunctions.ps1")

在PS 3.0 $PSScriptRoot中保存您需要的信息:

. "$PSScriptRoot\installfunctions.ps1"
#or . (Join-Path $PSScriptRoot "installfunctions.ps1")