Windows Powershell-无法正确创建html表

Windows Powershell-无法正确创建html表,windows,object,powershell,Windows,Object,Powershell,我有一个问题,我希望有人能帮助我 我有以下代码: Else { $script:MyReport += Get-CustomHeader "2" "Files older than" Get-ChildItem -Path $Target -Recurse | Where-Object { $_.LastWriteTime -lt $(get-date).('Add' + $PeriodName).Invoke(-$periodv

我有一个问题,我希望有人能帮助我

我有以下代码:

Else {
                $script:MyReport += Get-CustomHeader "2" "Files older than"

                Get-ChildItem -Path $Target -Recurse | Where-Object { $_.LastWriteTime -lt $(get-date).('Add' + $PeriodName).Invoke(-$periodvalue) `
                -and $_.psiscontainer -eq $false } | `
                #Loop through the results and create a hashtable containing the properties to be added to a custom object

                ForEach-Object {
                    $properties = @{ 
                        Path = $_.Directory 
                        Name = $_.Name 
                        DateModified = $_.LastWriteTime }
                    #Create and output the custom object
                    $var1 = New-Object PSObject -Property $properties | select Path,Name,DateModified  
                    $script:MyReport += Get-HTMLTable ( $var1 | select Path,Name,DateModified )   

                }             

       } #Close Else clause on Test-Path conditional
Get HTMLTable
功能(如下所示):

然而,我实际想要的输出如下:

Path                Name             DateModified
\\10.0.0.1\folder1  document1.xls    19/08/2013 16:02:01
\\10.0.0.1\folder1  test.doc     20/08/2013 15:47:06
\\10.0.0.1\folder1  anotherfile.txt  20/08/2013 15:42:26
我认为我的代码部分做得不正确,我没有得到正确的输出是因为这几行代码和foreach对象循环:

$var1 = New-Object PSObject -Property $properties | select Path,Name,DateModified  
$script:MyReport += Get-HTMLTable ( $var1 | select Path,Name,DateModified )   
我确信我忽略了一些明显的事情,但看不出我做错了什么


非常感谢您的帮助

我也怀疑这与您如何在foreach对象循环中构建自定义对象有关;玩了一段时间后,我放弃了,并试图从头开始建造它。希望这对你有用

在Get ChildItem调用之前,请创建一个空数组:

$tableObject = @()
然后更改foreach对象块,以迭代方式使用psobject的内容填充数组:

    ForEach-Object {

        $properties = "" | Select Directory, Name, DateModified
            $properties.Directory = $_.Directory 
            $properties.Name = $_.Name 
            $properties.DateModified = $_.LastWriteTime
            $tableObject += $properties
    }             
最后,在foreach对象块之外添加表,传递数组而无需选择任何内容:

$script:MyReport += Get-HTMLTable ( $tableObject )
根据我的评论,不要更改数组中的值,用正确的值填充数组:

    ForEach-Object {

        $properties = "" | Select 'Whatever You', Might, Want
            $properties.('Whatever You') = $_.Directory 
            $properties.Might = $_.Name 
            $properties.Want = $_.LastWriteTime
            $tableObject += $properties
    } 

我也怀疑这与您如何在foreach对象循环中构建自定义对象有关;玩了一段时间后,我放弃了,并试图从头开始建造它。希望这对你有用

在Get ChildItem调用之前,请创建一个空数组:

$tableObject = @()
然后更改foreach对象块,以迭代方式使用psobject的内容填充数组:

    ForEach-Object {

        $properties = "" | Select Directory, Name, DateModified
            $properties.Directory = $_.Directory 
            $properties.Name = $_.Name 
            $properties.DateModified = $_.LastWriteTime
            $tableObject += $properties
    }             
最后,在foreach对象块之外添加表,传递数组而无需选择任何内容:

$script:MyReport += Get-HTMLTable ( $tableObject )
根据我的评论,不要更改数组中的值,用正确的值填充数组:

    ForEach-Object {

        $properties = "" | Select 'Whatever You', Might, Want
            $properties.('Whatever You') = $_.Directory 
            $properties.Might = $_.Name 
            $properties.Want = $_.LastWriteTime
            $tableObject += $properties
    } 

看看HTML源代码输出?它依赖于转换为Html,但似乎是为每一行追加一个完整的表。您可以将Get-HTMLTable分为3个函数:Get-htmlTableHeader(将所有内容打印到)、Get-htmlTableRow(打印到)和Get-htmlTableFooter(从开始)。您必须在循环外部调用get-htmlTableHeader和get-htmlTableFooter?它依赖于转换为Html,但似乎是为每一行追加一个完整的表。您可以将Get-HTMLTable分为3个函数:Get-htmlTableHeader(将所有内容打印到)、Get-htmlTableRow(打印到)和Get-htmlTableFooter(从开始)。您必须在循环外调用get-htmlTableHeader和get-htmlTableFooter。我现在尝试更改创建的HTML表中出现的标题。我认为用我想要的值替换数组中的值是可行的,即`$tableObject=$tableObject-replace'Name'、'ReplacementText',这会将数组中的“Name”更改为“ReplacementText”。但是,当我用新数组调用Get-HTMLTable函数并打印表时,它只打印几个数字,而不是我想要的“Name”标题改为“ReplacementText”的新表。正确的方法是什么?非常感谢,最好将自定义对象属性更改为您想要的名称,而不是稍后重命名它们。将$properties PSCustomObject上的注释属性的名称更改为您想要的名称,只需确保在填充它们时正确引用它们!上面的描述性代码。非常好,谢谢……这是我认为应该做的,但我出了问题的地方不是更改
“|选择任何你想要的
部分。如果我希望替换文本也包含空格,即不包含“Name”,它会说“This is the Name”,那么在更改
$property
部分时使用的正确语法是什么,因为显然
$properties.This is Name=$\ Name
将不起作用?thansk谢谢你的帮助不确定这是否是“正确”的语法,但这对我来说是有效的(见修改后的答案)。奇怪的是,我在版本2和3以及版本3 ISE下测试了它,它在所有方面都运行良好。。。您确定您的代码已正确更新吗?带空格的属性应该被“引用”-可能不带大括号<代码>$properties。“无论你做什么”
很好,是的,这成功地工作了。我现在尝试更改创建的HTML表中出现的标题。我认为用我想要的值替换数组中的值是可行的,即`$tableObject=$tableObject-replace'Name'、'ReplacementText',这会将数组中的“Name”更改为“ReplacementText”。但是,当我用新数组调用Get-HTMLTable函数并打印表时,它只打印几个数字,而不是我想要的“Name”标题改为“ReplacementText”的新表。正确的方法是什么?非常感谢,最好将自定义对象属性更改为您想要的名称,而不是稍后重命名它们。将$properties PSCustomObject上的注释属性的名称更改为您想要的名称,只需确保在填充它们时正确引用它们!上面的描述性代码。非常好,谢谢……这是我认为应该做的,但我出了问题的地方不是更改
“|选择任何你想要的
部分。如果我希望替换文本也包含空格,即不包含“Name”,它会说“This is the Name”,那么在更改
$property
部分时使用的正确语法是什么,因为显然
$properties.This is Name=$\ Name
将不起作用?thansk谢谢你的帮助不确定这是否是“正确”的语法,但这对我来说是有效的(见修改后的答案)。奇怪的是,我在版本2和3以及版本3 ISE下测试了它,它在所有方面都运行良好。。。您确定您的代码已正确更新吗?带空格的属性应该被“引用”-可能不带大括号<代码>$properties。“随你怎么做”