用于将samaccountname返回到静态变量的Powershell脚本
我正在尝试创建一个脚本,用于通过网络远程删除本地配置文件 我正在使用delprof2作为程序,我已将其设置为计算机网络名称,但在尝试指定要查找和删除的用户名时,脚本将返回完整的区分名称,包括OU和Dc等。我需要它返回的只是没有CN=INFORT的SamAccountName内容 有人能帮忙吗 我尝试了用于将samaccountname返回到静态变量的Powershell脚本,powershell,active-directory,ldap-query,Powershell,Active Directory,Ldap Query,我正在尝试创建一个脚本,用于通过网络远程删除本地配置文件 我正在使用delprof2作为程序,我已将其设置为计算机网络名称,但在尝试指定要查找和删除的用户名时,脚本将返回完整的区分名称,包括OU和Dc等。我需要它返回的只是没有CN=INFORT的SamAccountName内容 有人能帮忙吗 我尝试了-filter而不是-ldapfilter 我已将括号中的samaccount名称更改为$name.samaccountname=甚至CN= function CheckUser{ $use
-filter
而不是-ldapfilter
我已将括号中的samaccount名称更改为
$name.samaccountname=
甚至CN=
function CheckUser{
$user = Get-ADUser -LDAPFilter "(samaccountname=$user)"
If ($user -eq $Null)
{"User does not exist in AD";GetUserName}
Else {GetMenu}
所需的结果是,
$user
变量仅保存SamAccountName数据。Get ADUser
默认返回属性SamAccountName
,以及DiscrimitedName
,启用的给定名称
,名称
,对象类
,对象GUID
,SID
,姓氏
和UserPrincipalName
cmdlet的-Identity
参数可以采用以下条目:
- 区分名称
- 指南
- 希德
- SamAccountName
如果你的问题表明你已经有了DistinghuishedName或SamAccountName来检查,你可以简单地将其用于Identity参数,而不使用过滤器
像这样的方法应该会奏效:
function CheckUser {
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Position = 0)]
[string]$UserToCheck # can be DistinghuishedName, GUID, SID or SamAccountName
)
$user = Get-ADUser -Identity $UserToCheck
if (!$user) {
"User does not exist in AD"
}
else {
# return the SamAccountName of the user
return $user.SamAccountName
}
}
像这样使用
$samaccountname = CheckUser -UserToCheck 'the property you have, like the DistinghuishedName'
如果您需要使用用户的某些其他属性,如电子邮件地址,则确实需要使用筛选器(或LDAPFilter)来搜索该用户。
差不多
$user = Get-ADUser -Properties EmailAddress -Filter "EmailAddress -eq '$UserToCheck'"
或
希望这有帮助谢谢大家的帮助
在尝试了所有人的建议后,我改变了脚本的原始形式,在上下文中,现在可以使用了
function CheckUser{
Get-ADUser -LDAPFilter ("samaccountname=$user") = $user
If ($user -eq $Null)
{"User does not exist in AD";GetUserName}
Else {GetMenu}
}
如您所见,现在将samaccountname设置为$user
我使用菜单功能进行了测试
4{#显示存储的用户名
读取主机$user
用户查核
}
并且输出是正确的用户名
现在,这会将正确的变量传递到DelProf2.exe以进行远程配置文件删除。您已经掌握了哪些信息?你的代码说你已经有了SamAccountName。。。然后你说你想要SamAccountName。。。我非常非常困惑![blush]尝试:$Samaccountname=$User |选择-展开Samaccountname
或只:$Samaccountname=$User.Samaccountname
,因此您只需将$User=..
交换到=$用户
。。恐怕这是完全错误的。你真的测试过这个吗?
function CheckUser{
Get-ADUser -LDAPFilter ("samaccountname=$user") = $user
If ($user -eq $Null)
{"User does not exist in AD";GetUserName}
Else {GetMenu}
}