Powershell问题从txt文件读取组

时间:2019-03-01 14:10:52

标签: windows powershell

因此,使用上一个问题中的相同代码,我遇到了一个新问题。它返回一个计数,但是有两个AD组引起问题。我们将其称为“东组”和“西组”。两者都用空格完全这样写,因此需要加引号。当我跑步时:

(Get-ADGroup "East Group" -Properties *).member.count

它返回用户数没问题。但是,当我运行总计代码而忽略重复项时:

$script:cnt = 0
$Groups = Get-Content -Path $someFile
$Groups | Get-ADGroupMember | Select-Object -expand DistinguishedName -Unique | ForEach-Object { $script:cnt++ }
$script:cnt

它返回总计,但也出现一条错误,表明它无法在我的域下找到West Group或East Group。我最好的猜测是它以某种方式忽略了文本文件中的引号。有没有办法让它读为“东组”或其他解决方法?

1 个答案:

答案 0 :(得分:2)

  

以某种方式忽略了文本文件中的引号。

如果您使用Get-Content 阅读,请不要在带有组名的纯文本文件中加上引号-这样的引号将成为值的部分,这不是您的意图-只需依靠Get-Content逐行读取文件 即可,即使带有空格的值也可以正常工作。

# Create the group-list file - do NOT use quotation marks around the entries.
@'
NoSpacesGroup
East Group
'@ > Groups.txt

# Demonstrate that each group name is read correctly, even if it
# contains spaces.
Get-Content Groups.txt | ForEach-Object { "this group: >>$_<<" }

以上结果:

this group: >>NoSpacesGroup<<
this group: >>East Group<<

表明即使带空格的值也被正确读取为单个值(行)。

因此,只需从组文件中删除引号,然后重试命令