2012-08-10 169 views
1

我一直在試圖編寫一個cmd-let for powershell,它允許我一次運行它並將多個模塊導入到任何正在運行的腳本中。我以爲我有它的工作,但現在它似乎已停止。我只想知道這是否有可能,看起來好像是這樣。cmd-let導入多個模塊powershell

命令來運行導入:

Import-Module .\Tools\Import-Tools.ps1 
$Tools = Import-Tools -ToolsDirectory \$PathToToolsDirectory 
$Tools 

功能導入:

Function Import-Tools 
{ 
    param 
    (
     [Parameter(Mandatory=$true)] 
     [string]$ToolsDirectory 
    ) 

    # Make sure the path is absolute (Borrowed from Michael Wanke) 
    if (!(Split-Path $ToolsDirectory -IsAbsolute)) 
    { 
     $ToolsDirectory = Join-Path $pwd $ToolsDirectory 
    } 


    #Verifies that the tools directory exists. 
    while ((Test-Path -Path $ToolsDirectory) -eq $False) 
    { 
     $ToolsDirectory = Read-Host "Incorrect tool path entered. Please enter one now or exit" 
    } 

    #Create $Tools variable containing multiple lines for import. 
    foreach ($Tool in Get-Childitem $ToolsDirectory -Name -Filter "*.ps1") 
    { 
     [string] $Tools= $Tools + "`r`nImport-Module $ToolsDirectory\$Tool" 
    } 

     Write-Output $Tools 
     return $Tools 

} 

任何幫助或建議,將不勝感激。

+0

模塊通常PSM1不PS1文件 – 2012-08-11 05:05:49

+0

我跟你的腳本發揮各地本地和能複製交互式運行'導入模塊\ test.ps1'但只要我嘗試了'$ tool =。\ test.ps1;導入模塊$工具「通過它不起作用的文件循環。也許你可以通過點擊源代碼並通過配置文件加載它們?這並不理想,但也許它可以幫助你克服這個問題。 [鏈接](http://msdn.microsoft.com/en-us/library/bb613488%28VS.85,loband%29.aspx) – Michael 2012-08-14 08:03:26

回答

2

您可以使用Import-Module cmdlet導入多個模塊:

# import multiple modules by using the name of the module 
Import-Module -Name WebAdministration, ActiveDirectory 

# import multiple modules by using a path 
Import-Module -Name c:\moduleA.psm1, c:\moduleB.psm1 
+0

感謝您的答覆,但我正在尋找的是可重複使用的一段代碼我可以重新使用導入存儲在某個目錄中的模塊。它似乎沒有工作。我甚至無法將它們存儲在變量中,然後運行Import-Module $ Variable。它似乎只是不想接受它。 – Originalme8 2012-08-11 23:40:19

+1

模塊發現基於$ env:PSModulePath中的路徑。嘗試將模塊路徑添加到它,然後使用Import-Module加載模塊。 – 2012-08-12 09:32:06

+0

好吧,我修改了它來設置PSModule的環境路徑,但是我的代碼仍然沒有看到這些函數。 新線加入: '$ ENV:PSModulePath = $ ENV:PSModulePath + 「$ ToolsDirectory」' 替換爲包含多個線進口 '#創建$工具變量。 的foreach($工具在GET-Childitem $ ToolsDirectory -Name -Filter 「*名爲.psm1」) { [字符串] $工具= $工具+ 「'」 $ ToolsDirectory \ $ Tool' 「」 } [ string] $ Tools =「Import-Module -Name」+「$ Tools」' – Originalme8 2012-08-13 22:07:27