Как удалить текст после запятой из поля описания Get-ADComputer?

Я хочу удалить все после запятой в поле описания, поэтому Текст2 и Текст3. Кто-нибудь знает, как я могу это сделать? Я что-то слышал о регулярном выражении, но не знаю, как его использовать в этом случае.

$time = (Get-Date).Adddays(-(1))
$Result = Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} -Properties * | Select-Object Name,Description, @{N='LastLogonTimeStamp'; E = {[DateTime]::FromFileTime($_.LastLogonTimeStamp)}}
$Result | Format-Table 

Name          Description                        LastLogonTimeStamp
----          -----------                        ------------------
SRV-TEST      Text1, Text2, Text3                10-1-2019 09:45:00

что ты уже испробовал? Какие конкретно ошибки вы получаете?

I.T Delinquent 28.05.2019 16:58

Вы можете найти интересующий вас оператор -split

Jeff Zeitlin 28.05.2019 17:00
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
96
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это:

$time = (Get-Date).Adddays(-(1))
$Result = Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} -Properties * | Select-Object Name, @{N='Description'; E = {$_.Description -replace ',.*$','' }}, @{N='LastLogonTimeStamp'; E = {[DateTime]::FromFileTime($_.LastLogonTimeStamp)}} 
$Result | Format-Table 

Для меня он возвращает:

Name          Description                        LastLogonTimeStamp
----          -----------                        ------------------
SRV-TEST      Text1                              10-1-2019 09:45:00

да, это работает, это решение, которое я искал, спасибо.

patrickmaur3r 29.05.2019 13:45

Пожалуйста, отметьте мой пост как ответ, если он полезен. Хорошего дня!

Jeepm 29.05.2019 14:04
Ответ принят как подходящий

Согласно предложению использовать -split в комментариях, это вернет 1-ю строку в массиве после разделения на «,».

$time = (Get-Date).Adddays(-(1))
$Result = Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} -Properties * | Select-Object Name, @{N='Description'; E = {($_.Description -split ",")[0]}}, @{N='LastLogonTimeStamp'; E = {[DateTime]::FromFileTime($_.LastLogonTimeStamp)}}
$Result | Format-Table

Почему вы делаете массив из строки, а затем получаете 1-й элемент из массива? Это не лучший способ использовать память и процессор. Вы выполняете 2 действия вместо 1 и используете в 3 раза больше памяти, чем требуется. Я понимаю, что в одной команде не так уж и здорово, но если у ТС 10 000+ ПК в AD - будет медленно. Итак, почему большинство программ слишком медленные на наших ПК :-)

Jeepm 29.05.2019 10:14

О, верните мои миры! О_о Я протестировал его на своем AD с ~10 000 объектов ПК. И получите кое-что интересное: Measure-Command -Expression { with SPLIT} занимает TotalSeconds : 73,5386477 И Measure-Command -Expression {REPLACE} занимает TotalMilliseconds : 73376,0549 Таким образом, 2 действия занимают то же время, что и регулярное выражение.

Jeepm 29.05.2019 10:32

И действия: $time = (Get-Date).Adddays(-(1)) $Result = Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} -Properties * | Select-Object Name,Description,LastLogonTimeStamp TAKES TotalSeconds: 63,8330494. SO около 10 секунд используется для преобразования данных.

Jeepm 29.05.2019 10:38

Другие вопросы по теме