gpt4 book ai didi

function - 在PowerShell中的foreach函数中更改变量名称

转载 作者:行者123 更新时间:2023-12-03 01:20:37 25 4
gpt4 key购买 nike

我有一个脚本,其中一部分脚本需要运行三个不同的时间,所以我想我会尝试通过使用函数调用相同的代码来扩展有限的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)。然后,我将使用每个哈希表中的值将某种类型的报告输出到文本文件。

我想在这个阶段我有两个主要问题-函数中的哈希表的变量名不断更改,并且在函数运行后也难以维护哈希表-试图像全局变量一样声明它们似乎有效。我愿意就如何更好地做到这些提出想法。

最佳答案

如果我了解您在说什么,那么您正在执行以下操作:

  • 填充一个哈希表,该哈希表将用户集映射到他们的项目计数。
  • 做一些修剪项目
  • 重新生成哈希表
  • 比较步骤1和3中生成的哈希表;再次执行该列表。
  • 重新生成哈希表
  • 基于所有三个表生成报告

  • 从上面的列表中可以看到,您确实想生成一个生成哈希表并返回它的函数:
    function Get-UsersItemCount
    {
    $ht = @{}
    $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
    $ht += @{"$dn"="$ic"}
    }

    $ht # Returns the hashtable
    }

    现在您可以调用此函数三次:
    $firstrun = Get-UsersItemCount

    # Do first run stuff
    $secondrun = Get-UsersItemCount

    # Do second run stuff
    $thirdrun = Get-UsersItemCount

    # Generate your report

    关于function - 在PowerShell中的foreach函数中更改变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350693/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com