Powershell: как узнать местоположение файла в зависимости от его имени? - PullRequest
1 голос
/ 02 апреля 2020

Итак, моя задача - написать скрипт PS, который выводит местоположение файла базы данных. Расположение файла:

C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox database Name\Mailbox database Name.edb 

Я полагал, что могу получить имя своей базы данных Exchange с помощью

Get-MailboxDatabase | fl Name

, который имеет вывод:

Mailbox Database 0161713049

это имя базы данных, но есть множество невидимых символов до и после фактического имени.

Итак, мой вопрос, как я могу избавиться от этих невидимых символов? Я хочу объединить строку, чтобы она выглядела следующим образом:

C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 0161713049\Mailbox Database 0161713049.edb

Мне понадобится этот код для работы на серверах с совершенно разными именами баз данных, поэтому просто удалите ненужные символы с самого начала с помощью .Remove () может помочь, но так как я точно не знаю длину имени базы данных, я не могу удалить символы в конце.

Также я не могу избавиться от чувства что есть намного более простой способ узнать местоположение моего файла .edb.

1 Ответ

1 голос
/ 02 апреля 2020

Powershell рассматривает почти все выходные данные как объект со свойствами в формате хеш-таблицы, например @{Name=MYEXCHDB}. Если вместо этого вам просто нужно значение свойства в виде строки, вы должны развернуть его, как подсказывает @AdminOfThings:

Get-MailboxDatabase | Select-Object -ExpandProperty Name

Чтобы объединить имя в строку:

$myString = "C:\path\to\$(Get-MailboxDatabase | Select-Object -ExpandProperty Name)"

И как @ mathias-r-jessen предполагает, что путь к базе данных - это еще одно свойство, которое вы можете получить напрямую:

Get-MailboxDatabase | Select-Object -ExpandProperty EdbFilePath | Select-Object -ExpandProperty PathName
...