2016-11-30 2 views
1

Я пытаюсь взять массив адресов электронной почты (в виде [email protected]), который формируется из:Неприятности с подстроки, отделка, trimend

$users = get-MSOLUser -All | where {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "my_license"} | select userprincipalname 

И получить только имя пользователя от каждый. Я начинаю с [email protected] и хочу в итоге 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.

Что я делаю неправильно с синтаксисом, или есть что-то еще, как модуль, который я не импортировал, или как мой синтаксис пытается работать с массивом?

ответ

3

Это вернет вам список всех имен пользователей (без домена), который удовлетворяет заданным условиям:

$users = Get-MSOLUser -All | 
    Where-Object {$_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -eq "my_license"} | 
    ForEach-Object { $_.userprincipalname -replace '@.*' } 
+0

ничего себе, я даже не знал, что вы можете это сделать '-replace '@. *'' – 4c74356b41

+0

Мне нравится этот фрагмент кода. Протестировано и отлично работает. –

1

Ну, вы должны работать с собственностью, а не с объектом, так что вы, вероятно, хотите сделать что-то вроде:

select -expandproperty userprincipalname 

но что бы создать массив userprincipalnames, поэтому никаких других атрибутов.

При запуске get-MSOLUser вы возвращаете объект с кучей свойств. Когда вы делаете select -expandproperty, вы возвращаете только определенное свойство, но не объект. Вы возвращаетесь к объекту system.string. И этот объект имеет все те методы, которые вы пытаетесь вызвать.

+0

добавление -expandproperty на мое заявление полностью работал. Думаю, я должен прочитать, как это работает. Большое спасибо. –

+0

хорошо, позвольте мне подробно рассказать в своем ответе – 4c74356b41

+0

Начиная с [email protected] Любая идея, почему $ users | % {$ _. trimend ("@ company.com")} возвращает (иногда) BSmit, но $ users | % {$ _. trimend ("ompany.com")} возвращает BSmith @ c? Наличие @ или не имеет большого значения в результатах. –

Смежные вопросы