【问题标题】:Import-module doesn't run more than once导入模块不会多次运行
【发布时间】:2019-01-25 10:10:07
【问题描述】:

我有一个脚本应该复制另一个脚本并运行该模块,但是当我尝试多次运行它时,它就会结束,没有警告,没有输出/错误。

我一直在努力导入模块以帮助我的脚本更好地运行并简化使用。

$Script:Es = $PSScriptRoot + "\" + "Main Script.psm1"
$Script:Ma32 = "C:\Temp\Scripts2"
$Script:E2 = "\Main Script.psm1"
$Script:E3 = $Ma32 + $E2

Function Get-Check {
    if ( -Not (Test-Path -Path $Ma32 ) ) {
        New-Item -ItemType directory -Path $Ma32 |out-null
    }
}

Function Get-Run {
    copy-item $Es $Ma32
    Import-Module $E3 
}

Function St {
    Get-Check
    Get-Run
}

St

【问题讨论】:

  • 您添加的内容过多。只需给出您尝试从中导入模块和逻辑的功能。阅读THIS
  • 根据要求我已经修改了代码,只是为了显示只运行一次的脚本。
  • 所以你的脚本没有任何错误,尽管逻辑可以进一步优化。当您第一次调用脚本时,它正在终端中导入模块。如果你重新运行,很明显它不会做任何事情,因为模块已经被导入。验证为什么不首先获取模块,然后是 Get-Module -ListAvailable *Get-Command -Module yourmodulename 自定义模块中的函数/命令
  • 我认为第二部分对于理解问题很重要。问题是您的第二部分不是模块而是脚本。见help about_modules。模块需要包含函数等,以便在您的会话中提供它们。不执行动作并一遍又一遍地执行。它们只能被导入一次。

标签: powershell import-module


【解决方案1】:

感谢所有回答,使用-force 可以解决问题。

Import-Module $E3 -force

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    相关资源
    最近更新 更多