2012-09-11 74 views
1

我需要該腳本的幫助。用於導入psts的PowerShell腳本

$data = Import-CSV C:\temp\import.csv 
ForEach ($i in $data){ 
$pstpath = "\\server\pst$\" + $i.folder + "\" 
$user = $i.user 
$folder = $i.folder 
Get-ChildItem -Recurse -path $pstpath -Filter *.pst | New-MailboxImportRequest -FilePath "$pstpath + $_.name" - Mailbox $user -Name "Import $user $_.name" -BadItemLimit 30 -ConflictResolutionOption KeepAll -TargetRootFolder $_.name -IsArchive -confirm: $false 

} 

我得到這個錯誤在文件夾中的每個PST:

輸入對象不能綁定到任何參數的命令,或者是因爲該命令不採取管道在 放或輸入和其屬性不匹配任何採用流水線輸入的參數。 + CategoryInfo:InvalidArgument:(archive.pst:PSObject)[新-MailboxImportRequest],ParameterBindingException
+ FullyQualifiedErrorId:InputObjectNotBound,新MailboxImportRequest

回答

1

看起來像New-MailboxImportRequest cmdlet不接受管道輸入,如果沒有你必須從命令中刪除'-FilePath'$ pstpath + $ _。name''部分。

試試這個:

$data = Import-CSV C:\temp\import.csv 
ForEach ($i in $data){ 

    $user = $i.user 
    $folder = $i.folder 
    $pstpath = "\\server\pst$\$folder" 

    Get-ChildItem -Recurse -path $pstpath -Filter *.pst | Foreach-Object{ 
     New-MailboxImportRequest -FilePath $_.FullName - Mailbox $user -Name "Import $user $($_.Name)" -BadItemLimit 30 -ConflictResolutionOption KeepAll -TargetRootFolder $_.Name -IsArchive -Confirm:$false 
    } 

} 
+0

它的工作:) IA有另外一個問題。 -TargetRootFolder現在是$ _。名稱和文件夾的名稱是Archive.pst。如何刪除名稱中的.pst?可能嗎? – user1662443

+0

嘗試使用$ _。BaseName代替 –

+0

就是這樣!非常感謝! – user1662443