PowerShell - [решено] Как удалить мусор из переменной?

Ответить
Аватара пользователя
Luka666

PowerShell - [решено] Как удалить мусор из переменной?

Сообщение Luka666 »

Привет всем! Подскажите пожалуйста как удалить лишние символы из переменной?

К примеру, у меня в скрипте Powershell, создаётся текстовая переменная: $username c текстом:



REGIONS\i2803-04-113

REGIONS\i2803-04-126

REGIONS\i2803-04-156



Ну а мне совершенно не нужно слово REGIONS\ а нужно просто:

i2803-04-113

i2803-04-126

i2803-04-156



Как убрать лишнее из переменной? Ну или создать новую, уже без лишних символов? Помогите чайнику, заранее спасибо.
Аватара пользователя
greg zakharov

Re: PowerShell - [решено] Как удалить мусор из переменной?

Сообщение greg zakharov »

Что значит текстовая переменная? Может все же переменная, содержащая объект типа строка?



Код:

Код: Выделить всё

PS E:\> $username.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object

Тогда самый простой способ:



Код:

Код: Выделить всё

PS E:\> $username -replace 'regions\\', ''
i2803-04-113
i2803-04-126
i2803-04-156

Этот же прием работает, если переменная является массивом строк, например.
Аватара пользователя
Luka666

Re: PowerShell - [решено] Как удалить мусор из переменной?

Сообщение Luka666 »

Цитата greg zakharov:



Тогда самый простой способ:

Код: Выделить весь код

PS E:\> $username -replace 'regions\\', ''

i2803-04-113

i2803-04-126

i2803-04-156

Этот же прием работает, если переменная является массивом строк, например.
PowerShell - [решено] Как удалить мусор из переменной?




Спасибо очень выручил. А у мну не получалось потому-что я вводил: $username -replace "regions\" .



Мне бы ещё убрать лишнее со строковой переменной.



DisplayName

----------------

Петров Пётр Петрович



Ещё раз спасибо!
Аватара пользователя
greg zakharov

Re: PowerShell - [решено] Как удалить мусор из переменной?

Сообщение greg zakharov »

Так как я не в курсе как именуется у Вас переменная на сей раз, а также действительно ли переменная хранит строку, а не какой иной объект, можно поступить так:



Код:

Код: Выделить всё

$a.Substring(($$=[Regex]::Match($a, '\p{IsCyrillic}').Index), $a.Length - $$)

$a - переменная, в которой хранится строка, т.е. при попытке узнать тип переменной в хост будет возвращено следующее:



Код:

Код: Выделить всё

PS E:\> $a.GetType().Name
String

С помощью типа Regex находим индекс первого кириллического символа в строке, а далее методом Substring извлекаем нужную нам подстроку. Можно, конечно, сделать проще, но, повторяюсь, не в курсе, что действительно у Вас за переменная.
Аватара пользователя
Luka666

Re: PowerShell - [решено] Как удалить мусор из переменной?

Сообщение Luka666 »

Не прокатило.



Произошла ошибка при вызове метода, так как [Selected.Microsoft.ActiveDirectory.Management.ADUser] не с

одержит метод с именем "Substring".

строка:1 знак:21

+ $username2.Substring
Аватара пользователя
greg zakharov

Re: PowerShell - [решено] Как удалить мусор из переменной?

Сообщение greg zakharov »

Цитата Luka666:



Но так, как переменная $username2 содержит запись в виде строки...



Хост Вам дал четко понять, что объект в переменной является типом [Selected.Microsoft.ActiveDirectory.Management.ADUser], а не строкой, именно поэтому Вам уже намекалось неоднократно - смотрите на возвращаемый тип с помощью невиртуального метода GetType, большинство ненужных вопросов отпадут сами по себе.


Цитата Luka666:



В описание учётки рабочей станции записывается: @{DisplayName=Петров Пётр Петрович}



Если для Вас Hashtable -eq String, то Вам лучше сперва отправиться на MSDN или почитать встроенную справку.



Код:

Код: Выделить всё

PS E:\> $a = @{UserName='Гнутха Йынлоп'}
PS E:\> $a.UserName
Гнутха Йынлоп

В общем, читайте указанные ресурсы до просветления.
Аватара пользователя
Luka666

Re: PowerShell - [решено] Как удалить мусор из переменной?

Сообщение Luka666 »

Всё. Дошло. Благодарю за терпение. Будем пытаться и дальше познавать PS. Изображение Изображение Изображение Изображение
Ответить

Вернуться в «Скриптовые языки администрирования Windows»