假设您是一位系统管理员,他使用PowerShell来管理他/她系统上的很多事情。从某个目录将所有函数加载到PowerShell中
您可能已经编写了很多功能,可以执行您经常需要检查的功能。但是,如果你需要大量移动,大量使用不同的机器等,则必须一次又一次地重新输入所有功能才能使用它们。我甚至必须这样做,每次我退出并重新启动PowerShell出于某种原因,因为它不会记住这些函数...
我已经写了一个函数来为我做这件事。我在这里发布,因为我想确保它是万无一失的。函数本身存储在allFunctions.ps1
中,这就是为什么我将它排除在代码中的原因。
其基本思想是你有一个文件夹,你可以在其中存储你所有的ps1文件,每个文件夹都包含一个函数。在PowerShell中,你去到该目录,然后输入:
. .\allFunctions.ps1
该脚本的内容是这样的:
[string]$items = Get-ChildItem -Path . -Exclude allFunctions.ps1
$itemlist = $items.split(" ")
foreach($item in $itemlist)
{
. $item
}
该脚本将首先收集在你的目录所有文件,这意味着所有非ps1文件,你也可能在那里。 allFunctions.ps1将被排除。
然后我根据空间分割长字符串,这是常见的分隔符。然后我用Foreach循环遍历它,每次将函数初始化为PowerShell。
假设你有超过100个功能,你永远不知道你需要哪些,哪些不需要?为什么不把他们全部输入而不是挑剔?
所以我想知道,这里可能会出现什么问题?我希望这是非常安全的,因为我可能会使用它很多。
他似乎喜欢在PS中使用字符串进行翻译:) – Joey 2009-04-18 17:38:55
感谢您的帮助,您提到了一些好的一点。实际上,入侵的黑客可能会造成更多的伤害。 另外,约翰,这不是我喜欢PS中的字符串,我更喜欢设置变量类型,当用户输入一个字符串应该是的数字时,会抛出一个错误,而不是脚本仍然尝试做某事用它。 – KdgDev 2009-04-18 17:41:59
Get-ChildItem将返回FileInfo/DirectoryInfo对象的集合。没办法,你可以尝试在那里使用数字。 – Joey 2009-04-18 17:43:46