当我查询AD时,返回一个SIP地址。这不是问题。字符串完美地回来了。但我会不断使用这段代码,所以我需要编写一个函数。该函数返回我需要的内容,但它也返回了我不需要的其他内容。
我所做的只是查询AD并获取SIP地址。如:John.Smith@ourbusiness.com。我在" @"分拆电子邮件地址。符号并返回它左边的内容。再次,代码完美地返回John.Smith。
但是当我在函数中添加此代码时,我得到的回报看起来像这样。
0
1
2
John.Smith
这就是我所拥有的。
Function CheckSIP {
$loggedOnUser = (get-WmiObject win32_process -Filter "Name='explorer.exe'"|Select -First 1).GetOwner().User
$strFilter = "(&(objectCategory=User)(mailnickname=$loggedOnUser))"
$objDomain = New-Object
System.DirectoryServices.DirectoryEntry("LDAP://OU=Offices,dc=OurNetwork,dc=net")
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"
$colProplist = "name", "mail", "mailnickname"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}
$colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults){
$objItem = $objResult.Properties
[string]$UserName = $objItem.name
[string]$sipaddress = $objItem.mail
[string]$mailnickname = $objItem.mailnickname
}
$theSIP = $sipaddress.Split("@")[0]
return $theSIP
}
$mySIPaddress = CheckSip
我所需要的只是john.smith
我确定我的语法障碍在哪里,我只是不知道在哪里看。
答案 0 :(得分:2)
在PowerShell中,不仅是函数的return
语句创建输出:
>$null
/ | Out-Null
或通过$null = ...
)在您的情况下,它是以下语句(返回$i
插入StringCollection
)实例的索引:
$objSearcher.PropertiesToLoad.Add($i)
简单地取消输出会从输出中删除0
,1
,2
值:
$null = $objSearcher.PropertiesToLoad.Add($i)
另外,您可以简化代码:
$env:USERNAME
代替(get-WmiObject win32_process -Filter "Name='explorer.exe'"|Select -First 1).GetOwner().User
Get-ADUser
cmdlet一起使用,这样可以更轻松地使用AD。