【发布时间】: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。模块需要包含函数等,以便在您的会话中提供它们。不执行动作并一遍又一遍地执行。它们只能被导入一次。