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
所以我的任务是编写一个 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