我编写了一个高级函数,它使用输入$Text
和来自Excel文件的信息。函数本身非常快,只有读取Excel文件(Import-ExcelHC
)的部分很慢,需要一些时间。
此功能已在模块中提供。现在每次调用此函数时,都需要读取Excel文件,这是正常的。但是Excel文件并没有经常改变,所以每次调用函数时我都不需要阅读它。
加载模块时是否只能读取Excel文件一次?因此,每次从脚本中调用Excel文件时,函数都不需要读取Excel文件吗?
对不起,如果这看起来像是一个菜鸟问题,但我对使用模块感到陌生。谢谢你的帮助。
MyModule.PSM1:
Function Foo ($Text) {
Begin {
$Excel = Import-ExcelHC -File 'C\Test.xlsx' # slow part
}
Process {
Write-Host "We did some stuff with $Text and $Excel"
}
}
感谢您的帮助。
答案 0 :(得分:1)
您可以加入
$Excel = Import-ExcelHC -File 'C\Test.xlsx' # slow part
在任何函数之外的模块的末尾。加载模块时会执行函数外部的代码。
答案 1 :(得分:1)
另一个想法:你也可以在加载模块时检查LastWriteTime属性,然后在你的函数中将它与模块加载时的内容进行比较,以确保你使用的是最新版本。这样,只有在更新后才重新加载。
关于模块加载:
$excelwritetimeonload = (Get-Childitem 'C:\Test.xlsx').lastwritetime
然后在函数内部:
$excelwritetimecurrent = (Get-Childitem 'C:\Test.xlsx').lastwritetime
if ($excelwritetimecurrent -gt $excelwritetimeonload) {
$Excel = Import-ExcelHC -File 'C:\Test.xlsx' # slow part
}