Иногда кавычки имеют значение ;)

Вопрос от zorion:

не отрабатывает как надо скрипт (точнее как мне бы хотелось)

get-qadcomputer | select-object dnsname | ForEach-Object {get-childitem \\$_.dnsname\c$}

в итоге идут ошибки для каждого имени компа в домене

Get-ChildItem : Cannot find path ‘\\@{DnsName=lili.lutekAD.ru}.dnsname\c$’ because it does not exist.

вот на фиг он подставляет туда

@{DnsName=

Во-первых Select-Object тут совсем не необходим — он лишь создает новый объект с единственным свойством — dnsname, а учитывая то что дальше всё равно выбирается лишь это свойство ($_.dnsname) эта махинация не нужна🙂

Ошибка же возникает из за порядка обработки…

Сначала PowerShell понимает что первым параметром для Get-ChildItem является строка (в подробности пока вдаваться не будем) и соответственно преобразовывает \\$_.dnsname\c$ в «\\$_.dnsname\c$«

Далее он подставляет вместо переменных — их значения, а переменная тут — $_ Точку со свойством PowerShell распознает уже как кусок текста. Нельзя требовать от PowerShell’а чтобы он сам догадывался где в строке текст, а где код — хватит того что выцепляет переменные. Поэтому нам просто надо указать ему особо, что данная часть строки ($_.dnsname) является кодом, а не только $_. Для этого используется следующая конструкция: «\\$($_.dnsname)\c$« Всё что внутри неё — выполняется, а результат уже будет помещен в строчку.

Хочется надеяться что кто-нибудь поймет мои сбивчивые объяснения🙂

Короче говоря, делаем так🙂

get-qadcomputer | Foreach-Object {get-childitem "\\$($_.dnsname)\c$"}

Или если вы используете вот эту классную функцию, то еще проще:

Get-QADComputer | ... dnsname | %{dir \\$_\c$}

комментария 2 to “Иногда кавычки имеют значение ;)”

  1. zorion Says:

    Большое спасибо, а то я уже победил эту хрень через создание списка компьютеров в txt файл и потом доставанием оттуда

    type computers.txt
    ну а дальше по конвейеру

    помнится была у меня уже такая хрень, но победить так и не смог, только щас догадался куда обратиться надо🙂

  2. Xaegr Says:

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


Обсуждение закрыто.

%d такие блоггеры, как: