我正在教自己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
谷歌没有任何相关性,所以我转向你,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:__________
问题是,我不知道我做错了什么。我通过帖子阅读,按照他的方式做得很好,但我的方式遇到了麻烦。我确定我发了一些东西,但我找不到它!
感谢任何帮助,欢迎任何批评。
答案 0 :(得分:3)
每个哈希表条目都包含一个键和一个值 这里:
$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)
}