PowerShell模块和高级功能

时间:2014-10-14 14:20:03

标签: powershell module

我编写了一个高级函数,它使用输入$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"
    }
}

感谢您的帮助。

2 个答案:

答案 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
    }