PowerShell, фильтрация на стороне сервера Skype для бизнеса по переменной

Просто быстрый. Кто-нибудь знает, почему фильтрация на стороне сервера не работает для lineuri при использовании переменной?

$lineuri = 56660
Get-CsUser -Filter { lineuri -like "*$lineuri" }

Я ничего не получаю.

Get-CsUser -Filter { lineuri -like "*56660" }

Дает мне результаты, которые я ожидал увидеть.

У меня здесь 7000 пользователей, и я не могу позволить себе пользоваться где-то все время.

Спасибо


person Graham Jordan    schedule 09.05.2018    source источник
comment
К сожалению, для меня это тоже не работает. Те же результаты, т.е. ничего   -  person Graham Jordan    schedule 09.05.2018
comment
@jrider Это совсем не так. $() - это подвыражение. Вам не нужно использовать расширение строки.   -  person Maximilian Burszley    schedule 09.05.2018
comment
@ TheIncorrigible1 Вы правы. Мой плохой ответ. Я удалю комментарий.   -  person jrider    schedule 09.05.2018
comment
@jrider Если бы рядом с ним были допустимые для переменных символы, это было бы правдой, но было бы точнее использовать вместо них ${} разделители переменных (например, "$mystr:" должно быть "${mystr}:", чтобы не быть модификатором области действия / привода)   -  person Maximilian Burszley    schedule 09.05.2018


Ответы (2)


Oh, oh, oh!

Починил это.

$lineuri = 56660
Get-CsUser -Filter "lineuri -like '*$lineuri'"

Иногда требуется свежий ум, чтобы помочь вам сосредоточиться. Спасибо за помощь.

person Graham Jordan    schedule 09.05.2018
comment
Ах, вот и все. Простой синтаксис :) хорошая работа - person cet51; 09.05.2018
comment
Избегайте использования скриптовых блоков для фильтров. Они все равно конвертируются с использованием .ToString(), поэтому вы добавляете слой без всякой выгоды. - person Maximilian Burszley; 09.05.2018

Убедитесь, что вы указали знак доллара для переменной

$lineuri = 56660
Get-CsUser -Filter "lineuri -like *$lineuri"

Если по какой-то причине это не сработает, попробуйте это

$lineuri = *56660
Get-CsUser -Filter "lineuri -like $lineuri"

Последний, но тем не менее важный

$lineuri = *56660
Get-CsUser -Filter "lineuri -like $($lineuri)"

Поскольку вы запускаете это на удаленном компьютере, вы также можете попробовать (но он может иметь тот же результат, что и не работает)

Invoke-Command -Computername "ComputerNameHere" -Scriptblock { $lineuri = *56660;Get-CsUser -Filter "lineuri -like $lineuri)" }
person cet51    schedule 09.05.2018
comment
Извините, опечатка в исходном вопросе. Решили. Ни один из сценариев не реализуется, как я надеялся. Стоит ли упоминать, что я использую удаленный сеанс PS для выполнения этих задач Skype? - person Graham Jordan; 09.05.2018
comment
Не помешает упомянуть об этом в своем посте. Вы также можете опробовать функцию Invoke-Command с этим кодом, если получаете эту информацию с удаленного компьютера. Я добавил пример в свой пост. - person cet51; 09.05.2018