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。“随你怎么做”