none
Переменная в двух ковычках. RRS feed

  • Вопрос

  • Господа не ругайтесь сильно, но нужна ваша помощь.

    Есть строка вида 

    'subject:"БДДС июнь 2020" AND received:"25.05.2020 14:34..25.05.2020 14:36"'

    У есть есть переменная $subJect = "БДДС июнь 2020"
    Как мне ее засунуть в эту строку с сохранением одинарных ковычек и двойных 
    В идеале должно получиться вот что. 

    Search-mailbox -Identity $emailUser -SearchQuery 'subject:"$subject" AND receiv
    ed:"$dateSearch"' -DeleteContent -confirm:$false

    19 июня 2020 г. 10:22

Все ответы

  • $emailUser = "admin@contoso.com";
    $subject = "slon";
    $dateSearch = "last month";
    Search-mailbox -Identity $emailUser -SearchQuery 'subject:"$subject" AND received="$dateSearch"' -DeleteContent -confirm:$false


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    19 июня 2020 г. 10:42
    Модератор
  • а зачем сохранять одинарные и двойные кавычки если их по просту можно поменять местами и все полетит?

    The opinion expressed by me is not an official position of Microsoft

    19 июня 2020 г. 11:02
    Модератор
  • Господа не ругайтесь сильно, но нужна ваша помощь.

    Есть строка вида 

    'subject:"БДДС июнь 2020" AND received:"25.05.2020 14:34..25.05.2020 14:36"'

    У есть есть переменная $subJect = "БДДС июнь 2020"
    Как мне ее засунуть в эту строку с сохранением одинарных ковычек и двойных 
    В идеале должно получиться вот что. 

    Search-mailbox -Identity $emailUser -SearchQuery 'subject:"$subject" AND receiv
    ed:"$dateSearch"' -DeleteContent -confirm:$false

    Вроде как помогает экранирование слешем \

    Search-mailbox -Identity $emailUser -SearchQuery 'subject:\"$subject\" AND receiv
    ed:\"$dateSearch\"' -DeleteContent -confirm:$false

    19 июня 2020 г. 14:34
  • Господа не ругайтесь сильно, но нужна ваша помощь.

    Есть строка вида 

    'subject:"БДДС июнь 2020" AND received:"25.05.2020 14:34..25.05.2020 14:36"'

    У есть есть переменная $subJect = "БДДС июнь 2020"
    Как мне ее засунуть в эту строку с сохранением одинарных ковычек и двойных 
    В идеале должно получиться вот что. 

    Search-mailbox -Identity $emailUser -SearchQuery 'subject:"$subject" AND receiv
    ed:"$dateSearch"' -DeleteContent -confirm:$false

    Вроде как помогает экранирование слешем \

    Search-mailbox -Identity $emailUser -SearchQuery 'subject:\"$subject\" AND receiv
    ed:\"$dateSearch\"' -DeleteContent -confirm:$false

    То что находится внутри одинарных кавычках не нуждается в экранировании кроме самих одинарных кавычек которые в свою очередь экранируются повторением (2х' == '')

    Вот только в одинарных кавычках не поюроисходит преобразования переменных в их значения поэтому 

    $var = 123

    'var value: $var' не будет преобразовано в 'var value: 123' а останестя такой же неизменной строкой


    The opinion expressed by me is not an official position of Microsoft

    19 июня 2020 г. 15:38
    Модератор
  • Что то не так ... точнее как-то не так работает. 

    Смотрите в чем суть. Я попробую на пальцах с примерами.
    Вот строка которая ищет письмо с темой "любое"  С точным до минуты  промежутком времени. В ящике это письмо у jons есть во папке входящие. 

    Search-mailbox -Identity "jons@contos.com" -SearchQuery 'subject:"любое" AND received:"22.06.2020 09:00..22.06.2020 09:07"' -EstimateResultOnly

    Когда мы запускам скрипт его не находит. 


    RunspaceId       : 597e1b3a-57fc-47ad-a5ab-5ade4be3c215
    Identity         : Jons
                       
    TargetMailbox    :
    Success          : True
    TargetFolder     :
    ResultItemsCount : 0
    ResultItemsSize  : 0 B (0 bytes)


    Хорошо скажете вы ... попробуй сделать на 5-10 минут больше ... делаю ... не находит. 
    Начинаю смотреть как вообще устроенно это в теле. 
    Определяю что письма в ящик падают по UTM ... Ок у меня +3
    Значит мне надо сделать с минус 3 часа. 

    создаю скрипт

    Search-mailbox -Identity "jons@contos.com" -SearchQuery 'subject:"любое" AND received:"22.06.2020 06:00..22.06.2020 06:06"' -EstimateResultOnly

    Отлично вижу ...

    RunspaceId       : 
    Identity         : jons
                       
    TargetMailbox    :
    Success          : True
    TargetFolder     :
    ResultItemsCount : 1
    ResultItemsSize  : 10.74 KB (11,002 bytes)


    Теперь просто удаляю его и все ... 
    Это если прописывать все руками не использую переменные. 
    Когда я делаю это с переменными ситуация меняется вообще не понятно как.

    $beginDate = "22.06.2020 6:00"
    $endDate = "22.06.2020 6:08"
    $subj = "любое"
    $emailUser = "jons@contos.com"
    
    $Search = [scriptblock]::create("'subject:`"$subj`" AND received:`"$beginDate..$endDate`"'")
    
    Search-Mailbox -Identity $emailUser -SearchQuery $Search -EstimateResultOnly
    

    для теста хочу посмотреть строку 

    $Search

    Получаю значение 
    'subject:"любое" AND received:"22.06.2020 6:00..22.06.2020 6:08"'
    ок все переменные правильно появились. 

    Запускаю проверку


    Search-Mailbox -Identity $emailUser -SearchQuery $Search -EstimateResultOnly

    Success          : True
    TargetFolder     :
    ResultItemsCount : 0
    ResultItemsSize  : 0 B (0 bytes)


    Какие бы минуты я не подставлял и какие бы часы не вставлял письма нет. 
    А если оставить только ДАТУ без минут письмо находиться. 

    22 июня 2020 г. 10:03