Powershell 理解键';哈希表的s和值
我目前正在阅读一本书,我遇到了一个关于哈希表的示例,我们有一个CSV文件,我们想通过管道传送到Powershell 理解键';哈希表的s和值,powershell,csv,key,hashtable,Powershell,Csv,Key,Hashtable,我目前正在阅读一本书,我遇到了一个关于哈希表的示例,我们有一个CSV文件,我们想通过管道传送到New ADUser,CSV如下所示: 属性名称与New ADUser接受的属性名称不匹配,因此Import CSV。\newusers.CSV | New ADUser将不起作用,但我们可以创建一个哈希表来更改属性名称以匹配New ADUser接受的输入,本书提供的解决方案如下: C:\> import-csv .\newusers.csv | >> select-object -
New ADUser
,CSV如下所示:
属性名称与New ADUser
接受的属性名称不匹配,因此Import CSV。\newusers.CSV | New ADUser
将不起作用,但我们可以创建一个哈希表来更改属性名称以匹配New ADUser
接受的输入,本书提供的解决方案如下:
C:\> import-csv .\newusers.csv |
>> select-object -property *,
>> @{name='samAccountName';expression={$_.login}},
>> @{label='Name';expression={$_.login}},
>> @{n='Department';e={$_.Dept}}
我知道有一个键和一个与之相关的值,总共有3个键,我对这个特定解决方案的问题是:
- 为什么密钥必须是Name、N、Label或L?我可以不输入自定义密钥名吗?使用名称、N、标签或L的意义是什么
- 键的
和samAccountName
的值都是Name
。。。$\登录
来自哪里?在这种情况下这意味着什么$\登录名
名称或标签标识符来定义该财产。属性的名称将是指定给键的值
$\登录名
来自您的CSV。您必须附加$。
,因为您要在表达式中访问属性。这会清除问题,但我仍然不明白为什么必须使用名称
或标签
来指定属性名称?我不能改用custom01
和custom02
吗?不管怎样,我仍然拥有相同的属性名称和值?属性名称仍然可以通过New ADUser
ByPropertyName
传递,因此我不知道不使用name
和label
会如何改变这一点?PowerShell如何知道custom01
是属性的名称?您必须指定属性名称e。gcustom01
使用的标识符是name
或label
对不起,我的措辞很糟糕,我的问题是:标识符必须是name
或label
?例如:{name='samAccountName';expression={$\.login}
和{custom='samAccountName';expression={$\.login}
指定samAccountName
的属性名和$\.login
的值,但标识符已更改,使用的标识符是否有任何更改?如果不是,名称或标签标识符之间是否存在差异,或者标识符只是用于保持事物的有序性?是的,标识符必须是名称或标签,但它仅用于powershell实际标识符是什么。因此name=samAccountName使用表达式中指定的值创建一个名为samAccountName的新属性。名称和标签之间没有区别。该功能被调用。