2012-09-11 4 views
1

J'ai besoin d'aide avec ce script.Script PowerShell pour l'importation de psts

$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 

} 

J'ai cette erreur pour chaque pst dans le dossier:

L'objet d'entrée ne peut pas être lié à des paramètres de la commande, soit parce que la commande ne prend pas pipeline dans vente ou l'entrée et ses propriétés ne correspondent à aucun des paramètres qui prennent l'entrée de pipeline. + CategoryInfo: InvalidArgument: (archive.pst: PSObject) [Nouvelle-MailboxImportRequest], ParameterBindingException
+ FullyQualifiedErrorId: InputObjectNotBound, Nouvelle-MailboxImportRequest

Répondre

1

On dirait que l'applet de commande New-MailboxImportRequest n'accepte pas l'entrée de pipeline, et si elle a fait vous devez supprimer la partie '-FilePath "$ pstpath + $ _. name"' de la commande.

Essayez ceci:

$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

il travaille :) Ia ont une autre question. -TargetRootFolder est maintenant $ _. Nom et le nom du dossier est Archive.pst. Comment puis-je supprimer .pst dans le nom? C'est possible? – user1662443

+0

Essayez $ _. BaseName à la place –

+0

C'est tout! Merci beaucoup! – user1662443

Questions connexes