我正在尝试对我的Exchange2010SP1服务器运行以下PowerShell命令:

$colItems = Get-Mailbox -Filter {office -eq "ExportPST"}
ForEach($objItem in $colItems)
{
New-MailboxExportRequest -Mailbox $objItem -FilePath \\server\share$\"$objItem".pst
}

当我这样做时,我收到错误:

找不到适合存储此请求的数据库。+分类信息 :无效的,无效的:(domain.com....d/李四:MailboxOrMailUserIdParameter)[New-M ailboxExportRequest], 邮箱数据库。..manentException异常 +完全资格 :9322cb6d,微软。交换。管理。RecipientTasks.NewMailboxExportRequest

我试图做的是在我的AD用户中搜索,找到在Office字段中具有字符串ExportPST的用户,然后导出命令New-MailboxExportRequest以将用户邮箱的全部内容导出到返回的每个用户的PST。

当我在上面添加一个Write-Host时,输出的值是正确的:

New-MailboxExportRequest-Mailbox jdoe-FilePath"\\server\share$\John Doe。pst"

输出还包括-FilePath"和\之间的额外空间,我想一旦上述问题得到解决就会导致问题,有没有办法在没有它添加这个额外空间的情况下联系字符串?

谢谢,

马特

有帮助吗?

解决方案

我认为你的报价有点偏离。双引号字符串扩展在完全围绕字符串时,不仅仅是变量部分。

$colItems = Get-Mailbox -Filter {office -eq "ExportPST"}
ForEach($objItem in $colItems)
{
  New-MailboxExportRequest -Mailbox $objItem -FilePath "\\server\share$\$objItem.pst"
}
.

这是一种使用.NET字符串格式/替换的替代语法:

$colItems = Get-Mailbox -Filter {office -eq "ExportPST"}
ForEach($objItem in $colItems)
{
  New-MailboxExportRequest -Mailbox $objItem -FilePath ('\\server\share$\{0}.pst' -f $objItem)
}
. 要使故障排除/调试更容易,您可以将文件路径分配给变量,然后将变量传递到-FilePath参数中。这样,您可以完全看出已通过哪个值。

$colItems = Get-Mailbox -Filter {office -eq "ExportPST"}
ForEach($objItem in $colItems)
{
  $FilePath = '\\server\share$\{0}.pst' -f $objItem;
  Write-Host -Object ('$FilePath value is: {0}' -f $FilePath);
  New-MailboxExportRequest -Mailbox $objItem -FilePath $FilePath;
}
.

其他提示

如果 $objItem 是你可以做的字符串:

-FilePath "\\server\share$\${objItem}.pst"

你可以通过这样做来判断它是否是一个字符串:

$objItem.GetType().FullName

即使它不是一个字符串,它仍然可能工作,如果对象 ToString() 方法提供您需要的值,因为PowerShell会自动调用 ToString() 对象的方法,并把它放在你的字符串中。所以如果这给了你想要的价值: $objItem.ToString() 那么你也可以使用它。如果有一个属性,但是像?objItem.Name 您必须访问,那么您将需要使用字符串连接,子表达式或.NET字符串格式。

  • 连接,连接: -FilePath ("\\server\share$\" + $objItem.Name + ".pst")
  • 子表达式: -FilePath "\\server\share$\$($objItem.Name).pst"
  • .NET字符串格式: -FilePath ("\\server\share$\{0}.pst" -f $objItem.Name)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top