【问题标题】:PowerShell - Including .ps1 files - invoke from other folderPowerShell - 包括 .ps1 文件 - 从其他文件夹调用
【发布时间】:2015-12-14 19:32:55
【问题描述】:

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

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

q:\test\install.ps1

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

. .\installfunctions.ps1

从 q:\test\folder 执行时,这两个 Install ps 文件运行良好。

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

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

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

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

【问题讨论】:

    标签: powershell


    【解决方案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")
    

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多