gpt4 book ai didi

powershell - 使用 Powershell 'Cannot find an overload for "添加“和参数计数”向哈希表添加数据

转载 作者:行者123 更新时间:2023-12-03 16:24:26 25 4
gpt4 key购买 nike

我正在自学 Powershell,我正在努力掌握哈希表。我明白了这个概念,但应用它是另一回事。

我正在使用“你好脚本专家”帖子作为引用,http://blogs.technet.com/b/heyscriptingguy/archive/2011/10/15/automatically-create-a-powershell-hash-table-10-15-11.aspx ,即这里的这一段:

To create a hash table dynamically, follow these steps:
1. Create an empty hash table.
2. Store the empty hash table in a variable.
3. Collect the data.
4. Store the collected data in a variable.
5. Use the foreach statement to walk through the collected data.
6. Inside the loop call the add method to add the key value pairs to the hash table.

An example of this procedure is shown here:
$hash = $null
$hash = @{}
$proc = get-process | Sort-Object -Property name -Unique

foreach ($p in $proc)
{
$hash.add($p.name,$p.id)
}

效果很好,但是当我尝试满足我的需求时,它会说:

Cannot find an overload for "Add" and the argument count: "1".
At line:15 char:10
+ $hash.add <<<< ($strGroup)
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest

Google 没有找到任何相关信息,所以我求助于 Stack Overflow Powershell 用户,我做错了什么?

import-module activedirectory
$strDate = Get-Date
$strGroupList = get-content "C:\Users\MYUSERNAME\Documents\Group Audit\audit.txt"
$strGroupDetails = Get-ADGroupMember -identity $strGroup


$strGroupList #list groups found

$hash= $null #empty the hash table
$hash = @{}


foreach ($strGroup in $strGroupList)
{
$hash.add($strGroup)
}

我所做的只是进入一个文本文件,获取 Active Directory 组的名称,返回它们(为了单步执行代码),目的是让每个项目中的组的所有成员在我的列表(文本文件)中,按组划分为单独的数组。例如:

Group1     Time/Date
------ ---------------
member1
member2
member3
member4

Group Owner:__________

Group2 Time/Date
------ ----------------
member1
member2
member3
member4

Group Owner:__________

问题是我不知道自己做错了什么。我通读了这篇文章,按照他的方式做的很好,但是我的方式有问题。我确定我摸到了一些东西,但就是找不到!

感谢任何帮助,欢迎任何批评。

最佳答案

每个哈希表条目都由一个键和一个值组成。
这里:

$hash.add($p.name,$p.id)

你正在向哈希表中添加一个新条目,其中的键是 $p.name 中的任何内容,值是 $p.id 中的任何内容。提供的 .add 方法有两个参数 - 一个用于键,一个用于值。

这里:

$hash.add($strGroup)

您只提供了一个参数,而该方法不知道如何处理它 - 它需要键和值的参数,但没有足够的参数可以使用。

编辑:

我认为这可能更接近您要实现的目标:

import-module activedirectory
$strDate = Get-Date
$strGroupList = get-content "C:\Users\MYUSERNAME\Documents\Group Audit\audit.txt"


$strGroupList #list groups found

$hash= $null #empty the hash table
$hash = @{}


foreach ($strGroup in $strGroupList)
{
$strGroupDetails = Get-ADGroupMember -identity $strGroup
$hash.add($strGroup,$strGroupDetails)
}

关于powershell - 使用 Powershell 'Cannot find an overload for "添加“和参数计数”向哈希表添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23227803/

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