Mik*_*ard 13 import powershell
我发现自己正在编写一系列相关函数来处理不同的名词(集群,sql服务器,一般服务器,文件等),并将这些函数组中的每一个放在单独的文件中(比如cluster_utils.ps1) .我希望能够在我的个人资料中"导入"其中一些库,如果我需要,可以在我的PowerShell会话中"导入"其他库.我已经编写了两个似乎可以解决问题的函数,但由于我只使用了powershell一个月,我想我会问是否有任何现有的"最佳实践"类型的脚本我可以使用.
要使用这些功能,我点源它们(在我的个人资料或我的会话中)...例如,
# to load c:\powershellscripts\cluster_utils.ps1 if it isn't already loaded
. require cluster_utils
Run Code Online (Sandbox Code Playgroud)
以下是功能:
$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
}
Run Code Online (Sandbox Code Playgroud)
任何反馈都会有所帮助.
基于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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14955 次 |
| 最近记录: |