Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Как удалить мусор из переменной?

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

Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Luka666
Дата: 11-07-2016
Привет всем! Подскажите пожалуйста как удалить лишние символы из переменной?
К примеру, у меня в скрипте 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

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

Отправлено: 12:14, 11-07-2016

 

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Что значит текстовая переменная? Может все же переменная, содержащая объект типа строка?
Код: Выделить весь код
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
Этот же прием работает, если переменная является массивом строк, например.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:39, 11-07-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
Тогда самый простой способ:
Код: Выделить весь код
PS E:\> $username -replace 'regions\\', ''
i2803-04-113
i2803-04-126
i2803-04-156
Этот же прием работает, если переменная является массивом строк, например. »
Спасибо очень выручил. А у мну не получалось потому-что я вводил: $username -replace "regions\" .

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

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

Ещё раз спасибо!

Последний раз редактировалось Luka666, 11-07-2016 в 15:04.


Отправлено: 13:23, 11-07-2016 | #3


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Так как я не в курсе как именуется у Вас переменная на сей раз, а также действительно ли переменная хранит строку, а не какой иной объект, можно поступить так:
Код: Выделить весь код
$a.Substring(($$=[Regex]::Match($a, '\p{IsCyrillic}').Index), $a.Length - $$)
$a - переменная, в которой хранится строка, т.е. при попытке узнать тип переменной в хост будет возвращено следующее:
Код: Выделить весь код
PS E:\> $a.GetType().Name
String
С помощью типа Regex находим индекс первого кириллического символа в строке, а далее методом Substring извлекаем нужную нам подстроку. Можно, конечно, сделать проще, но, повторяюсь, не в курсе, что действительно у Вас за переменная.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:52, 11-07-2016 | #4


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Произошла ошибка при вызове метода, так как [Selected.Microsoft.ActiveDirectory.Management.ADUser] не с
одержит метод с именем "Substring".
строка:1 знак:21
+ $username2.Substring <<<< (($$=[Regex]::Match($username, '\p{IsCyrillic}').Index), $username2.length
- $$)
+ CategoryInfo : InvalidOperation: (Substring:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound


У меня переменная получается путём извлечения из AD нужного объекта:


$computer = "i2803-w04095"

$username = (get-wmiobject -ComputerName $computer win32_computerSystem).Username

$username = $username -REPLACE 'REGIONS\\', ''

$username2 = get-aduser $username -Properties displayname|select-object DisplayName


т.е извлечения полного выводимого имени из юзерской учётки в AD. Для того, чтоб вставить его в описание учётной записи компьютора на котором этот юзер залогинен в данный момент.

Set-ADComputer $computer -Description "$username2"

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

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

В описание учётки рабочей станции записывается: @{DisplayName=Петров Пётр Петрович}
А мне надо только " Петров Пётр Петрович " (без кавычек). Для этого полагаю что в переменной $username2 текст должен быть такой-же "чистый" в виде текста, безо всего лишнего.

Как это сделать?

Последний раз редактировалось Luka666, 11-07-2016 в 15:10.


Отправлено: 15:02, 11-07-2016 | #5


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата Luka666:
Но так, как переменная $username2 содержит запись в виде строки...
Хост Вам дал четко понять, что объект в переменной является типом [Selected.Microsoft.ActiveDirectory.Management.ADUser], а не строкой, именно поэтому Вам уже намекалось неоднократно - смотрите на возвращаемый тип с помощью невиртуального метода GetType, большинство ненужных вопросов отпадут сами по себе.
Цитата Luka666:
В описание учётки рабочей станции записывается: @{DisplayName=Петров Пётр Петрович}
Если для Вас Hashtable -eq String, то Вам лучше сперва отправиться на MSDN или почитать встроенную справку.
Код: Выделить весь код
PS E:\> $a = @{UserName='Гнутха Йынлоп'}
PS E:\> $a.UserName
Гнутха Йынлоп
В общем, читайте указанные ресурсы до просветления.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:06, 11-07-2016 | #6


Новый участник


Сообщения: 29
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 19:49, 11-07-2016 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Как удалить мусор из переменной?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - Как удалить баннер из IE tihon_65 Лечение систем от вредоносных программ 1 05-03-2015 21:17
VBS/WSH/JS - [решено] Удалить файл с переменной в пути viliam Скриптовые языки администрирования Windows 6 19-06-2014 13:34
как удалить мусор ??? SLIMYS Автоматическая установка Windows 2000/XP/2003 3 14-04-2011 05:28
Как извлечь значение из переменной масива, которое не отображалось бы на экране dima1981 Вебмастеру 8 11-11-2008 11:54
js имя объекта из переменной, как? E-mail Вебмастеру 13 15-03-2005 07:22




 
Переход