powershell VisualStudioCode调试器要求提供值并给出提示

gcmastyq  于 2023-03-02  发布在  Shell
关注(0)|答案(1)|浏览(118)

我尝试使用代码获取目录中的文件并选择最近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}
elcex8rz

elcex8rz1#

看起来那个新行起了作用。这是有效的:

Get-ChildItem $out_pth | Foreach-Object {$lastupdatetime=$_.LastWriteTime;$nowtime = get-date; if (($nowtime - $lastupdatetime).totalhours -le 40) {$excel_File_from = $_.Name;write-host $_.name}}

 write-host "here"
 write-host $excel_File_from

印刷品:

filename.xlsx
here
filename.xlsx

我将时间从4小时更改为40小时以上,因为我意识到文件最后一次编辑是昨天。但它也找到了文件,没有对文件属性进行时间检查。

相关问题