防止PowerShell管道中出现额外的空白
我正在尝试将本地Exchange 2010环境中的邮箱(不再需要)归档到远程服务器共享目录中的PST文件。我的问题是,我无法在PowerShell中找到适当的语法,以便在某种程度上自动化此过程。我所做的最接近它的工作是在我的PowerShell命令中用空格替换单引号 因此,我尝试在一台Exchange 2010服务器上从PS运行以下内容(作为示例):防止PowerShell管道中出现额外的空白,powershell,powershell-2.0,exchange-server,exchange-server-2010,Powershell,Powershell 2.0,Exchange Server,Exchange Server 2010,我正在尝试将本地Exchange 2010环境中的邮箱(不再需要)归档到远程服务器共享目录中的PST文件。我的问题是,我无法在PowerShell中找到适当的语法,以便在某种程度上自动化此过程。我所做的最接近它的工作是在我的PowerShell命令中用空格替换单引号 因此,我尝试在一台Exchange 2010服务器上从PS运行以下内容(作为示例): Get-Mailbox test.user | Where {$_.OrganizationalUnit -eq "domain.com/User
Get-Mailbox test.user | Where {$_.OrganizationalUnit -eq "domain.com/Users/TEMP"} | ForEach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath '\\server\share\PSTdir\'$_.Alias'.pst'}
test.user仅在示例中用作测试邮箱,直到我能够计算出使其工作所需的PowerShell语法。语法工作后,我将删除单个test.user邮箱,并让PS通过管道发送所有邮箱
当我使用这个示例时,我可以使用Get-MailboxExportRequest检查移动请求的状态。当我检查状态时,我看到文件路径不包含正确格式化的文件路径信息。从示例中,这是命令的哪一部分在PS中被格式化:
New-MailboxExportRequest -Mailbox test.user -FilePath \\server\share\PSTdir\ test.user .pst
注意,“PSTdir\test.user”中现在有一个空格,在“test.user.pst”中的.pst之前也有一个空格。我尝试过使用单引号和双引号,我改变了引号的位置,使用了转义符,等等,但我一直无法找出我遗漏了什么。示例中的单引号似乎被一个空白字符(我需要删除它)所取代。该命令应如下所示(文件路径中没有空格):
Q:如何通过PS管道传递变量$\别名,以便文件路径中的名称不包含任何空格。我的猜测是,
'\\server\share\PSTdir\'$\别名.pst'
没有按照您想要的方式计算。请尝试以下操作:“\\server\share\PSTdir\'$($).Alias.Trim())'.pst”
如果将其拆分得更容易阅读,您应该能够使用此选项:
Get-Mailbox -Identity test.user -OrganizationalUnit 'domain.com/Users/TEMP' | ForEach-Object {
$Alias = $_.Alias.Trim();
New-MailboxExportRequest -Mailbox $Alias -FilePath "\\server\share\PSTdir\'$Alias'.pst";
}
如果仍然看到空格,则第一个字符可能不是空格。如果
[int[]][char[]$($别名)
的第一个结果不是32
,则第一个字符不是空格字符。是否尝试使用trim
?例如,'$\u0.Alias'.trim()
谢谢-不幸的是,我得到了相同的结果,额外的空格如果使用append操作符会发生什么'\\server\share\PSTdir\'+$\别名+'.pst'
此[int[]]([char[]]($\别名))的输出是什么?我想知道空格是否有什么不同Hanks David-尝试过,但是追加只在输出中添加了追加符号(+)。是的,成功了。我使用了“\\server\share\PSTdir\'$($).Alias.Trim())”.pst“
,输出结果与预期相符。令人惊叹的!!非常感谢。
Get-Mailbox -Identity test.user -OrganizationalUnit 'domain.com/Users/TEMP' | ForEach-Object {
$Alias = $_.Alias.Trim();
New-MailboxExportRequest -Mailbox $Alias -FilePath "\\server\share\PSTdir\'$Alias'.pst";
}