A struggle to list & certain properties files from UNC Path

This topic contains 0 replies, has 1 voice, and was last updated by Profile photo of Forums Archives Forums Archives 5 years, 5 months ago.

  • Author
    Posts
  • #6031

    by Milo at 2013-02-22 05:22:13

    I'm struggeling with following issue:
    Someone requested me a logfile in Excel containing information parsed out several Shared folders.
    BaseName,"Extension","Length","CreationTime","LastWriteTime","FolderlName"
    last modified by & created by were also requested but i know these objects cannot be retrieven or am i wrong?

    Localy this works, getting following output:
    BaseName,"Extension","Length","CreationTime","LastWriteTime","FullName"
    TempBadges1day,"",,"21/02/2013 10:45:15","21/02/2013 10:45:16","C:\test\TempBadges1day"
    batchfile.csv,".log","91","21/02/2013 10:45:34","3/10/2012 11:30:02","C:\test\batchfile.csv.log"

    But when I try this on server I get no output....

    this is my code:
    cls

    $Logfile = "c:\script\log999.csv"
    if (Test-Path $Logfile)
    {
    Remove-Item $Logfile
    }
    New-Item -ItemType File -Path $Logfile

    function GetFiles
    {
    param ( [Parameter(Mandatory=$true)] [String]$Path )
    foreach ($item in Get-ChildItem $path -recurse -ErrorAction SilentlyContinue)
    {
    write-host $item
    $item | select Basename,Extension,Length,CreationTime,LastWriteTime,FullName
    }

    }

    GetFiles| export-csv -Path $Logfile

    Can I get some help please???
    Because I cannot sort it out anymore 🙁

    by Klaas at 2013-02-22 05:48:29

    How exactly do you 'try this on server'?
    On what computer did you save the script and on what computer do you execute what command?

    by Milo at 2013-02-22 06:03:15

    I saved & runned this from my computer.
    I mapped the unc path as a Shared drive (Z:\) for instance
    when I perform this code Get-ChildItem z:\ -recurse | ForEach-Object { $_.Basename,$_.Extension,$_.Length,$_.CreationTime,$_.LastWriteTime,$_.FullName} > c:\script\TEST1234.TXT then I get the output instantly, but not in the format I want it....

    by Klaas at 2013-02-22 06:27:19

    Get-ChildItem z:\ -recurse | Select Basename, Extension, Length, CreationTime, LastWriteTime, FullName | Export-csv C:\script\Filelist.csv -NotypeInformation
    You probably want to add a filter to collect either files or directories.

    by Milo at 2013-02-22 07:02:36

    [quote="Klaas"]Get-ChildItem z:\ -recurse | Select Basename, Extension, Length, CreationTime, LastWriteTime, FullName | Export-csv C:\script\Filelist.csv -NotypeInformation
    You probably want to add a filter to collect either files or directories.[/quote]

    This would be a great feature!
    So my mistake was not adding -NotypeInformation to the export ?

    by Klaas at 2013-02-22 07:50:29

    not exactly 🙂
    You did not use Select, so the default action in the foreach loop was to send everything to out-default,which you then redirected to a text file as a collection of strings.The foreach is not necessary here because all objects are sent through the pipeline and Select accepts this pipeline input.
    The export-csv both treats the input as objects and writes it as a table to a .csv file. The -NoTypeInformation just deletes an informational row above the records.

    by Klaas at 2013-02-22 07:54:43

    You can filter by adding the -File switch (or -Directory if you want those):
    Get-ChildItem z:\ -recurse -File | Select Basename, Extension, Length, CreationTime, LastWriteTime, FullName | Export-csv C:\script\Filelist.csv -NotypeInformation
    If you want more options you can also add a -Filter parameter.
    Try Get-Help Get-ChildItem -Full | more to learn more about the possibilities.

    by Milo at 2013-02-24 23:59:24

    Huge Thanks co-Belgian 😉
    In fact, Get-Childitem does not know -File as switch (I'm still using v2)
    I had to change this into|Where-Object {$_ -is [IO.FileInfo]}|

    I also build a little automatisation into it ...
    cls
    function GetFiles
    {
    #Calling in the parameters used for the further script
    param ( [Parameter(Mandatory=$true, Position=0)][String]$Path,
    [Parameter(Mandatory=$true, Position=1)][string]$csv)

    Get-ChildItem $Path -recurse|Where-Object {$_ -is [IO.FileInfo]}| Select Basename, Extension, Length, CreationTime, LastWriteTime, FullName | Export-csv $csv -NotypeInformation
    }

    GetFiles

    In this way we can copy this part into further scripts if needed 😉
    Once again... thanks to help me on this struggle 🙂
    For me this topic may be closed, as my question has been answered, and I did learn new things (again :))

You must be logged in to reply to this topic.