Powershell 我需要运行一个脚本,将返回给我的任何sAMAccountname在广告中是大写字母的首字母

Powershell 我需要运行一个脚本,将返回给我的任何sAMAccountname在广告中是大写字母的首字母,powershell,uppercase,Powershell,Uppercase,我发现下面的命令返回了广告中所有大写字母的sAMAccountname。我正在寻找一个命令,将返回给我的任何sAMAccountname在广告中是大写字母的首字母 Get-ADUser -Filter * | ? {$_.sAMAccountname -ceq $_.sAMAccountname.ToUpper()} 其目的是识别在其SamAccountName属性中具有大写首字母的所有广告用户帐户;e、 例如,Abcd(首字母A字母为大写),以便以后我们可以将它们全部转换为小写。您需要将测试

我发现下面的命令返回了广告中所有大写字母的sAMAccountname。我正在寻找一个命令,将返回给我的任何sAMAccountname在广告中是大写字母的首字母

Get-ADUser -Filter * | ? {$_.sAMAccountname -ceq $_.sAMAccountname.ToUpper()}

其目的是识别在其
SamAccountName
属性中具有大写首字母的所有广告用户帐户;e、 例如,
Abcd
(首字母
A
字母为大写),以便以后我们可以将它们全部转换为小写。

您需要将测试限制为帐户名的第一个字符。

Get-ADUser -Filter * |
  Where-Object { $_.sAMAccountname[0] -ceq [char]::ToUpper($_.sAMAccountname[0]) }

建议使用带有通配符模式的
-clike
运算符,这是一种更具可读性的替代方法:

Get-ADUser -Filter * | Where-Object { $_.SamAccountName -clike '[A-Z]*' }

警告:这限制了从
A
Z
的ASCII范围字母的匹配,并且不会检测到外来大写字符,如
Ö

谢谢,@AnsgarWiechers-我已经在答案中添加了您的建议,还有一点需要注意的是,这种方法将您限制为仅匹配ASCII字母。@mklement0:第一个命令仅针对服务帐户显示。您发送的以下命令实际上满足了我的要求。谢谢mklement0和Ansgar Wiechers。非常感谢你的帮助。Get ADUser-Filter*| Where Object{$\u.SamAccountName-clike'[A-Z]*'}@sunilpodar:很高兴听到Ansgar的命令对您有用,但是(对于ASCII范围字母)第一个命令应该也可以用。你能举一个不起作用的例子吗?这里有一个简单的测试来说明它可以使用字符串的
.SamAccountName
属性-据我所知,这对于由
Get ADUser
输出的用户对象是正确的:
[pscustomobject]@{SamAccountName='Alex'}[pscustomobject]@{SamAccountName='Alex'}?{$\.sAMAccountname[0]-ceq[char]:ToUpper($\.sAMAccountname[0])}
为什么需要将其转换为小写?