Powershell:如何根据文件名获取文件的位置?

Powershell: How to get the location of a file, depending on its name?

所以我的任务是编写一个 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 文件的位置。

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