我正在努力应对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文件夹运行。
答案 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")