3

リモートサーバー上に、さまざまなサブフォルダーを含むフォルダーがあります。完全にネストされています。私はしたいと思います:

  1. フォルダ名を含むHTMLレポートを作成します。
  2. すべてのフォルダについて、ファイル数も記録する必要があります。
  3. コードは、すでに作成されているHTMLファイルを追加する必要があります。
  4. 必要な列:フォルダー名、フォルダーパス、ファイル数

以下は、私のメインスクリプトの一部であるコードスニペットです。私はPowerShellにかなり慣れていません。

誰か助けてもらえますか?

$server_dir = "D:\Data\Inbox"
$does_dir_e = (Test-Path $server_dir)

if($does_dir_e)
{
       $fso = New-Object -com "Scripting.FileSystemObject"
        $f = $fso.GetFolder($server_dir)

    foreach($folder in $f.subfolders)
    {

       $fcount = $((Get-ChildItem $folder.Path).count)
       $fname = $folder.name | Convertto-HTML -Fragment  >> C:\Temp\Server.html

    }
}
4

2 に答える 2

3

何がうまくいかないかを実際に言うことはありませんが、次のスクリプトで始めることができます。

外側のループはフォルダー(PSIsContainer)を介して繰り返され、フォルダーであることを意味します。内側のループは、measure-objectを使用して各フォルダー内のファイルの数をカウントします。このカウントからフォルダーをフィルターで除外して、ファイル数だけを取得します。

$path = "D:\Data\Inbox"

# Enumerate the given path recursively
Get-ChildItem -Path $path -Recurse | Where-Object {$_.PSIsContainer} | %{

    # Add a user-defined custom member with a value of the filecount this
    # time not recursively (using measure object)
    $_ | add-member -membertype noteproperty -name FileCount -value (Get-ChildItem -Path $_.Fullname | 
        Where-Object {!$_.PSIsContainer} | 
        Measure-Object).Count

    # Output the required values
    $_ | select Name, FullName, FileCount | ConvertTo-Html -Fragment
}
于 2013-01-04T14:36:58.280 に答える
2

これは、あなたの望むことですか?私はこれまでHTMLコマンドレットを使用したことがないので、醜いことに注意してください:)

$server_dir = 'D:\Data\Inbox'

if(Test-Path $server_dir)
{
       $folders = Get-ChildItem $server_dir -Recurse | where {$_.PSIsContainer}
       $output = @()

    foreach($folder in $folders)
    {
       $fname = $folder.Name
       $fpath = $folder.FullName
       $fcount = Get-ChildItem $fpath | where {!$_.PSIsContainer} | Measure-Object | Select-Object -Expand Count
       $obj = New-Object psobject -Property @{FolderName = $fname; FolderPath = $fpath; FileCount = $fcount}
       $output += $obj

    }
       #Output to HTML
       $output | ConvertTo-Html -Fragment >> 'C:\Temp\Server.html'
}
于 2013-01-04T14:35:59.463 に答える