我发现自己正在编写一系列相关函数来处理不同的名词(集群,sql服务器,一般服务器,文件等),并将这些函数组中的每一个放在单独的文件中(比如cluster_utils.ps1) .我希望能够在我的个人资料中"导入"其中一些库,如果我需要,可以在我的PowerShell会话中"导入"其他库.我已经编写了两个似乎可以解决问题的函数,但由于我只使用了powershell一个月,我想我会问是否有任何现有的"最佳实践"类型的脚本我可以使用.
要使用这些功能,我点源它们(在我的个人资料或我的会话中)...例如,
# to load c:\powershellscripts\cluster_utils.ps1 if it isn't already loaded . require cluster_utils
以下是功能:
$global:loaded_scripts=@{} function require([string]$filename){ if (!$loaded_scripts[$filename]){ . c:\powershellscripts\$filename.ps1 $loaded_scripts[$filename]=get-date } } function reload($filename){ . c:\powershellscripts\$filename.ps1 $loaded_scripts[$filename]=get-date }
任何反馈都会有所帮助.
基于Steven的回答,另一个改进可能是允许一次加载多个文件:
$global:scriptdirectory = 'C:\powershellscripts' $global:loaded_scripts = @{} function require { param( [string[]]$filenames=$(throw 'Please specify scripts to load'), [string]$path=$scriptdirectory ) $unloadedFilenames = $filenames | where { -not $loaded_scripts[$_] } reload $unloadedFilenames $path } function reload { param( [string[]]$filenames=$(throw 'Please specify scripts to reload'), [string]$path=$scriptdirectory ) foreach( $filename in $filenames ) { . (Join-Path $path $filename) $loaded_scripts[$filename] = Get-Date } }