Powershell 从变量写入输出,显示“0”;在大括号处;符号值
我更像是一个Linux bash shell的家伙,在PowerShell中遇到了一些让我困惑的东西。我想从foreach循环中的AD中提取一个用户名列表,并对其执行特定的操作 在这一点上,我只关心在基于该字符串运行任何重要操作之前,我是否拉取了正确的字符串。以下是我作为测试运行的内容(出于隐私考虑,方括号中的详细信息已删除):Powershell 从变量写入输出,显示“0”;在大括号处;符号值,powershell,variables,Powershell,Variables,我更像是一个Linux bash shell的家伙,在PowerShell中遇到了一些让我困惑的东西。我想从foreach循环中的AD中提取一个用户名列表,并对其执行特定的操作 在这一点上,我只关心在基于该字符串运行任何重要操作之前,我是否拉取了正确的字符串。以下是我作为测试运行的内容(出于隐私考虑,方括号中的详细信息已删除): 导入模块ActiveDirectory foreach($x英寸(获取ADUser-Filter*-Server“[host]”-SearchBase“[mybase]
导入模块ActiveDirectory
foreach($x英寸(获取ADUser-Filter*-Server“[host]”-SearchBase“[mybase]”|选择对象SamAccountName)){
写入输出“别名为:$x”
}
因此,如果我在Write Output
语句中去掉双引号,它看起来很棒,并且会打印:
Alias is:
username1
Alias is:
username2
Alias is:
username3
别名为:
用户名1
别名为:
用户名2
别名为:
用户名3
它在每个值之前注入一个换行符,我宁愿从字符串中删除/删除它
但在双引号中,我得到了:
Alias is: @{SamAccountName=username1}
Alias is: @{SamAccountName=username2)
Alias is: @{SamAccountName=username3}
别名为:@{SamAccountName=username1}
别名为:@{SamAccountName=username2)
别名为:@{SamAccountName=username3}
我不确定如何从中提取我正在查看的值。我在这里看到的是什么?这是我需要取消引用的东西,还是我需要提取的数组中的东西?或者我的变量值实际上是一个对象而不是一个字符串,我需要对其执行ToString()
操作(或等效操作)问题是:
选择对象SamAccountName
它返回一个具有SamAccountName
属性的对象。如果只需要该值,请使用-ExpandProperty
:
选择对象-ExpandProperty SamAccountName
问题在于:
选择对象SamAccountName
它返回一个具有SamAccountName
属性的对象。如果只需要该值,请使用-ExpandProperty
:
选择对象-ExpandProperty SamAccountName
选择对象SamAccountName
->选择对象-展开SamAccountName
啊,所以它确实是一个对象(我应该从命令Select Object推断),expand从中提取字符串。它总是简单的。谢谢!我并不认为这是重复的,因为它是特定于Select对象的,链接到alternate的问题甚至没有提到expand参数,这可能会让其他遇到此问题的观众感到困惑。我可以看到输出符号是如何覆盖的aps,但没有别的。我的意思是,我得到了我的答案,并对此感到高兴,但你可能想想想,到底什么是重复的,以及在发布我自己的帖子之前,我是如何使用该网站的搜索功能找到其他帖子的(我是这样做的)。如果有人键入“在花括号处”Google上的mine很可能会被索引。该问题中描述的问题与您的问题完全相同,并且答案,特别是来自mklement0的答案,描述了该问题的解决方案。是的。PowerShell中的参数名称可以缩短,只要它们保持唯一。-ExpandProperty
与-ExpandPr
,或-Expand
,甚至-Exp
。但是,-Ex
或-E
将不起作用,b/c还有另一个参数名为-ExcludeProperty
选择对象SamAccountName选择对象-Expand SamAccountName啊,所以它确实是一个对象(正如我应该从“选择对象”命令推断的那样),expand从中提取字符串。它总是简单的。谢谢!我并不认为这是重复的,因为它是特定于Select对象的,链接到alternate的问题甚至没有提到expand参数,这可能会让其他遇到此问题的观众感到困惑。我可以看到输出符号是如何覆盖的aps,但没有别的。我的意思是,我得到了我的答案,并对此感到高兴,但你可能想想想,到底什么是重复的,以及在发布我自己的帖子之前,我是如何使用该网站的搜索功能找到其他帖子的(我是这样做的)。如果有人键入“在花括号处”Google上的mine很可能会被索引。该问题中描述的问题与您的问题完全相同,并且答案,特别是来自mklement0的答案,描述了该问题的解决方案。是的。PowerShell中的参数名称可以缩短,只要它们保持唯一。-ExpandProperty
与-ExpandPr
,或-Expand
,甚至-Exp
。但是,-Ex
或-E
将不起作用,b/c还有另一个名为-ExcludeProperty
的参数。