读取字符串以过滤输入文件中的数据

时间:2016-05-24 10:01:35

标签: powershell

我已将所有已停用的用户属性撤消到名为" Disable.txt"的文本文件中。现在,我想要将用户排除在名为Collaboration accountsSecurity Principles&的特定OU之外。 Service Accounts。我能够做到以下几种方式。

Select-String 'OU=Collaboration accounts', 'OU=Security Principles', 'OU=Service Accounts' $env:USERPROFILE\Desktop\DisabledUsers.txt -NotMatch | % {$_.Line} | Set-Content $env:USERPROFILE\Desktop\DisableList.txt

但我被要求排除OU应该从输入文件中挑选。  所以我尝试创建一个内容为'OU=Collaboration accounts', 'OU=Security Principles', 'OU=Service Accounts'的文本文件,并将其分配给变量,然后进行调用。 但这不起作用。有人可以建议替代方式吗?

1 个答案:

答案 0 :(得分:0)

您需要将这些过滤字符串作为数组提供。如果你放一个文字行

'OU=Collaboration accounts', 'OU=Security Principles', 'OU=Service Accounts'

进入输入文件并读取它,它将作为单个字符串传递给Select-String,如下所示:

Select-String "'OU=Collaboration accounts', 'OU=Security Principles', 'OU=Service Accounts'" ...

相反,将每个过滤字符串放在一个单独的行上(不带逗号或引号)。

OU=Collaboration accounts
OU=Security Principles
OU=Service Accounts

Get-Content将读取文件作为字符串数组,每行作为单独的数组元素:

$filters = Get-Content 'C:\path\to\input.txt'
Select-String $filters ...