当前位置:  开发笔记 > 数据库 > 正文

在powershell中导入"库"

如何解决《在powershell中导入"库"》经验,为你挑选了1个好方法。

我发现自己正在编写一系列相关函数来处理不同的名词(集群,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
}

任何反馈都会有所帮助.



1> Emperor XLII..:

基于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
  }
}

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有