除了标题之外,我的脚本不会向我的.txt文件发送任何信息。我想找到任何可能包含(),/,_等的显示名称。我是否无法使用*符号表示我希望过滤的任何显示名称包含“(”名称中的任何位置?
#Grab some AD attributes for the specific user ID
$userid = Get-ADUser -filter {displayname -like '*(' -or displayname -like '*_' -or displayname -like '*/'} -SearchBase "OU=Corporate,DC=we,DC=dirsrv,DC=com" -Properties name, displayname, description, manager
尝试让它显示在我的txt文件中,但仍然是PowerShell的新手
#Grab some AD attributes for the specific user ID
$userids = Get-ADUser -Properties name, displayname, description, manager -filter {displayname -like '*(*' -or displayname -like '*_*' -or displayname -like '*/*'}
#THIS IS THE FOREACH I'M TRYING TO MAKE WORK
foreach ($userid in $userids)
{
$ID = Get-AdUser ($userid.displayname) -Properties displayname
$userid = $ID.displayname
}
foreach ($userid in $userids)
{
#manager missing
if ($userid.Manager -eq $null) {
$owner = "MISSING"
$ownerid = "MISSING"
$ownername = "MISSING"
} else {
#grab the manager's name, surname, and department
$owner = Get-ADUser ($userid.Manager) -Properties GivenName, Surname
$ownerid = $owner.Name
$ownername = $owner.Surname + "." + $owner.GivenName
}
}
到目前为止我正在做什么。好运没有好运
答案 0 :(得分:2)
当您使用-like
运算符时,您正在查找(,_等等)结束的字符串。相反,您需要包围您要查找的字符通配符:
{displayname -like '*(*' -or displayname -like '*_(*' -or displayname -like '*/*'}
或者,对于更简洁的查询,您可以使用正则表达式:
{displayname -match '[\(\)\\_]'}
请注意,因为(,)和\是特殊的正则表达式字符,所以必须使用\来转义它们。
答案 1 :(得分:0)
如果我输入代码
,那么Get-AdUser -Properties displayname -filter {displayname -like '*(*'} | Select displayname
然后它会给我所有我需要的displayname .....自己注意!
现在将它与我的代码连接:P