我有一个脚本,其中一部分需要运行三个不同的时间,所以我想我会尝试通过使用函数调用相同的代码而不是一次又一次地复制和粘贴来扩展我有限的 PowerShell 知识,并制作更长的时间-不必要的脚本。
我想在函数中重用的代码:
$users = Get-Content users.txt
foreach ($user in $users){
# Get some information from Exchange about the user
$dn = (Get-MailboxStatistics -id $user).displayname
$ic = (Get-MailboxStatistics -id $user).itemcount
# Make a hash table where user=itemcount
$firstrun += @{"$dn"="$ic"} # Each time the script runs, we
# need a different hash table
# Kick off some Exchange maintenance on the user. (Removed
# to keep the post shorter)
# Item count should lower after a few seconds.
}
当代码第二次和第三次重复时,我希望创建一个新的哈希表(“secondrun”和“thirdrun”)。我的第一个问题是每次更改函数中的哈希表名称 - 可以这样做吗?
我也开始怀疑哈希表是否甚至是适合这项工作的工具,或者是否有更好的工具?对于更多背景知识,在我有了第二个哈希表之后,我想做一个比较:
foreach ($user in $users){
$c1 = $firstrun.get_item($user)
$c2 = $secondrun.get_item($user)
# If the item count hasn't substantially dropped
if ($c2 -ge $c1){
# Do some different Exchange tasks on the user (removed
# to keep the post shorter)
}
}
最后将进行第三次运行,它将简单地创建第三个哈希表(同样,user=itemcount)。然后,我将使用每个哈希表中的值将某种报告输出到文本文件。
我想在这个阶段我有两个主要问题 - 在函数中更改哈希表的变量名,而且在函数运行后我很难维护哈希表 - 尝试像全局变量一样声明它们不会似乎工作。我愿意接受有关如何更好地完成这一切的想法。