Удалить символы внутри выражения Powershell - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь удалить символы из выражения, без возможности определить другое целое число.Это выражение, которое у меня сейчас есть:

Get-ADUser -Identity $PSItem -Properties mail, manager, l, title |
  Select-Object -Property Name, SamAccountName, Mail, l, title, @{ 
      Name = "ManagerGID"
      Expression = { (Get-Aduser -identity $psitem.manager).samaccountname }
    }, 
    @{ 
       Name = "ManagerName"
       Expression = { (Get-Aduser -identity $psitem.manager).name } 
    }, 
    @{ 
       Name = "PicURL"
       Expression = { 
         (ConvertFrom-Json -InputObject (Invoke-WebRequest ('http://picasaweb.google.com/data/entry/api/user/' + $psitem.mail + '?alt=json')) |
           Select-Object -ExpandProperty entry |
             Select-Object -ExpandProperty 'gphoto$thumbnail')
      }
   }

Для опции PicURL результаты от google для эскиза gphoto $ будут примерно такими: @{$t=https://lh3.googleusercontent.com***********.jpg}

Мне бы хотелосьудалить @{$t= и } в начале и конце свойства.К сожалению, не смог найти правильный способ сделать это без необходимости извлекать это выражение из конвейера, что не очень эффективно для остальной части кода.

Если вам интересно, это дляавтоматическое создание оргструктуры из AD, включая фотографии профиля Google.

1 Ответ

0 голосов
/ 13 декабря 2018

Результат просмотра @{$t=https://lh3.googleusercontent.com***********.jpg} заключается в том, что значение gphoto$thumbnail вашего входного объекта является пользовательским объектом с единственным свойством, буквально названным $t, значением которого является интересующий URL. [1]

Поэтому вы можете просто добавить еще один вызов Select-Object для извлечения значения свойства $t:

... | Select-Object -ExpandProperty '$t'

Обратите внимание на необходимость имя свойства ('...') в одинарной кавычке $t, чтобы его нельзя было принять за ссылку на переменную, так же, как имя свойства gphoto$thumbnail требовало одинарных кавычек.


В качестве альтернативы, в версии v3 + можно объединить три тогда Select-Object -ExpandProperty вызова в один ForEach-Object вызов:

... | ForEach-Object { $_.entry.'gphoto$thumbnail'.'$tp' }

[1] Эта хеш-таблица - как представление - это то, что PowerShell использует для преобразования [pscustomobject] экземпляров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...