Я думаю, что ваши цитаты немного не в порядке.Расширение строки в двойных кавычках работает, когда вы полностью окружаете строку, а не только переменную часть.
$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;
}