Formatting Output from two command help needed

by link12 at 2012-11-14 10:23:04

I’m running into issues with formatting the output of this script in particular to the FullName property of a
get-childitem cmdlet. The first couple of variables formats the full path to just a small set of info, just the samaccount name
of the predefined file. I then take that $filename variable and loop to get the primary smtp address. This all works.
What I want for out is the following.

Read through a directory that has PST files, pull out the name, get the smtp address, and then get the full path to the pst file.

I have the username@domain.com, but can’t get the fullname path

Format should output to a text file that looks like the following.

username01@domain.com, c:\folder\username01.pst
username02@domain.com, c:\folder\username02.pst
username03@domain.com, c:\folder\username03.pst




Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
Set-ADServerSettings -ViewEntireForest $true

$filepath = “C:\testfile”

$filename = get-childitem $filepath | foreach-object {($.BaseName -split “-”)[3]}
$filenamepath = get-childitem $filepath | ForEach-Object {$
.FullName}

foreach ($i in $filename){
$smtpaddress = get-mailbox $i | select primarysmtpaddress
$smtpaddress,filenamepath (the filenamepath is not working)
}

Remove-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
by DonJ at 2012-11-15 04:18:32
So, I think you just may have a few logic errors.


Get-ChildItem c:\testfile |
Select @{n=‘Filename’;e={$.Name},@{n=‘Path’;e={$.FullName},@{n=‘SMTP’;e={Get-Mailbox $.Name | Select -Expand PrimarySMTPAddress}}


Is that not what you’re after? Or am I not understanding the question?

In your code, within the ForEach loop, $filenamepath is a collection of objects, but you’re treating it like a single object. I think that might be why this isn’t working for you - you’re kind of mixing and matching bits. What I tried to do is put all of that into a single consistent command. I don’t have Exchange so I can’t test it, and I’m not 100% clear on what you’re after, but hopefully it’ll help a bit…
by link12 at 2012-11-15 05:54:37
Basically I’m building a manifest file to ingest PST files to an archive system. We’re going to have a central file server that stores the PST files with a common name. I need to first parse that name so that I can do a get-mailbox on it to get the PrimarySMTPAddress. I also need the FullName to get the path.

Folder example PST format (This will have hundreds)
c:\test\pst_storage\Something-Something-Something-samaccountname.pst

Output needed for a text file.
username01@domain.com, c:\test\pst_storage\Something-Something-Something-samaccountname1.pst
username02@domain.com, c:\test\pst_storage\Something-Something-Something-samaccountname2.pst
username03@domain.com, c:\test\pst_storage\Something-Something-Something-samaccountname3.pst

I tried your example on a file and go the following. Thanks for the help.

The hash literal was incomplete.
At C:\Users\usertest01\Desktop\test.ps1:2 char:155
+ Get-ChildItem $path | Select @{n=‘Filename’;e={$
.Name},@{n=‘Path’;e={$.FullName},@{n=‘SMTP’;e={Get-Mailbox $.N
| Select -Expand PrimarySMTPAddress}} <<<<
+ CategoryInfo : ParserError: (CloseBraceToken:TokenId) [], ParseException
+ FullyQualifiedErrorId : IncompleteHashLiteral