子串问题,trim,trimend
Troubles with substring, trim, trimend
我正在尝试获取一组电子邮件地址(以用户名@company.com 的形式),这些地址生成自:
$users = get-MSOLUser -All | where {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "my_license"} | select userprincipalname
并且只获取每个用户的用户名。我从 username@company.com
开始,想以 username
结束。我尝试了各种使用子字符串、Trim、TrimEnd 等的方法,但都无法正常工作。
$username = $users | %{$_.substring(0,$users.length - 12)}
$users | %{$_.trimend("@company.com")}
$users | %{$_.trimend(12)}
以上所有错误包括以下两个。
方法调用失败,因为 [Selected.Microsoft.Online.Administration.User]
没有
包含一个名为 substring
.
的方法
方法调用失败,因为 [Selected.Microsoft.Online.Administration.User]
没有
包含一个名为 trimend
.
的方法
我在语法上做错了什么,还是有其他问题,比如我没有导入的模块,或者我的语法如何尝试使用数组?
好吧,您需要使用 属性,而不是对象,因此您可能想要执行以下操作:
select -expandproperty userprincipalname
但这会创建一个用户主体名称数组,因此没有其他属性。
当你 运行 get-MSOLUser
你得到一个对象,有一堆属性。当您执行 select -expandproperty
时,您只会返回某些 属性,而不是对象本身。您正在取回 system.string
对象。该对象具有您尝试调用的所有方法。
这将return您列出满足您条件的所有用户名(不带域):
$users = Get-MSOLUser -All |
Where-Object {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "my_license"} |
ForEach-Object { $_.userprincipalname -replace '@.*' }
我正在尝试获取一组电子邮件地址(以用户名@company.com 的形式),这些地址生成自:
$users = get-MSOLUser -All | where {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "my_license"} | select userprincipalname
并且只获取每个用户的用户名。我从 username@company.com
开始,想以 username
结束。我尝试了各种使用子字符串、Trim、TrimEnd 等的方法,但都无法正常工作。
$username = $users | %{$_.substring(0,$users.length - 12)}
$users | %{$_.trimend("@company.com")}
$users | %{$_.trimend(12)}
以上所有错误包括以下两个。
方法调用失败,因为 [Selected.Microsoft.Online.Administration.User]
没有
包含一个名为 substring
.
方法调用失败,因为 [Selected.Microsoft.Online.Administration.User]
没有
包含一个名为 trimend
.
我在语法上做错了什么,还是有其他问题,比如我没有导入的模块,或者我的语法如何尝试使用数组?
好吧,您需要使用 属性,而不是对象,因此您可能想要执行以下操作:
select -expandproperty userprincipalname
但这会创建一个用户主体名称数组,因此没有其他属性。
当你 运行 get-MSOLUser
你得到一个对象,有一堆属性。当您执行 select -expandproperty
时,您只会返回某些 属性,而不是对象本身。您正在取回 system.string
对象。该对象具有您尝试调用的所有方法。
这将return您列出满足您条件的所有用户名(不带域):
$users = Get-MSOLUser -All |
Where-Object {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "my_license"} |
ForEach-Object { $_.userprincipalname -replace '@.*' }