我尝试使用代码获取目录中的文件并选择最近4小时内编辑过的文件。由于某种原因,当我在VisualStudioCode中调试此文件时,调试器显示
Supply values for the following parameters:
Process[0]:
$out_path = "C:\Data\Monitor\PropertiesReport\"
#find latest scan file (within 4 hours from now)
$output_sprdsheet_blob_path = Join-Path -Path $out_path -ChildPath "\OutputSprdsht\" #location of scan output file...looks good for path
Get-ChildItem $output_sprdsheet_blob_path -Filter *.xlsx | Foreach-Object
{
$lastupdatetime=$_.LastWriteTime
$nowtime = get-date
if (($nowtime - $lastupdatetime).totalhours -le 4)
{
Write-Host $_.Name
$excel_File_from = $_.Name
#Select-String -Path $_.Name -Pattern "'Execute Time of Send Thread = 60.'"
}
}
#use file found above next
我不知道为什么powershell在路径对Get-ChildItem有效时会提示提供每个对象的值。我以前用过类似的代码,它工作正常,但我用的是PowershellISE,代码以下面的代码开头,而不是Get-ChildItem。
powershell "Set-Location -Path $log_path ; Get-Item *.* | Foreach {...}
我在上面的代码中遇到了同样的问题,Visual Studio代码调试器给出了Process [0]提示符,并希望我在foreach中提供值。这在以前也经过了测试和使用。
我正在尝试Get-ChildItem,因为下面的示例正在执行此操作,它看起来应该可以工作。您知道为什么Visual Studio代码调试器会给出提示以及如何修复它吗?
我已经使用write-host打印了正在使用的目录,我把打印出来的路径粘贴到windows文件资源管理器中,那里有一个文件,路径是有效的。
我的powershell版本是5.1。
example get-childitem
更新:
打印文件名。我不知道为什么它没有给出提示。
$out_pth = "C:\Data\Monitor\PropertiesReport\"
Set-Location -Path $out_pth
Get-Item *.* | foreach-object {write-host $_.name}
更新2:
这也会打印文件名:
Get-ChildItem $out_pth | Foreach-Object {write-host $_.name}
1条答案
按热度按时间elcex8rz1#
看起来那个新行起了作用。这是有效的:
印刷品:
我将时间从4小时更改为40小时以上,因为我意识到文件最后一次编辑是昨天。但它也找到了文件,没有对文件属性进行时间检查。