Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从变量写入输出,显示“0”;在大括号处;符号值_Powershell_Variables - Fatal编程技术网

Powershell 从变量写入输出,显示“0”;在大括号处;符号值

Powershell 从变量写入输出,显示“0”;在大括号处;符号值,powershell,variables,Powershell,Variables,我更像是一个Linux bash shell的家伙,在PowerShell中遇到了一些让我困惑的东西。我想从foreach循环中的AD中提取一个用户名列表,并对其执行特定的操作 在这一点上,我只关心在基于该字符串运行任何重要操作之前,我是否拉取了正确的字符串。以下是我作为测试运行的内容(出于隐私考虑,方括号中的详细信息已删除): 导入模块ActiveDirectory foreach($x英寸(获取ADUser-Filter*-Server“[host]”-SearchBase“[mybase]

我更像是一个Linux bash shell的家伙,在PowerShell中遇到了一些让我困惑的东西。我想从foreach循环中的AD中提取一个用户名列表,并对其执行特定的操作

在这一点上,我只关心在基于该字符串运行任何重要操作之前,我是否拉取了正确的字符串。以下是我作为测试运行的内容(出于隐私考虑,方括号中的详细信息已删除):

导入模块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
的参数。