PowerShell-虽然使用格式表自动调整大小时True循环中断

时间:2019-07-23 15:14:48

标签: powershell

我正在处理分配,我注意到在Format-Table cmdlet上使用-AutoSize参数时,while循环中的输出中断。

例如:(此方法有效)

while ( ($in = Read-Host -Prompt "Enter Option: ") -ne "5") {

    if ($in -eq "1") {
            Get-ChildItem -Path "C:\Users\User\Git\Test\Requirements1\*" -Include *.txt;
    }

    if ($in -eq "2") {
            Get-ChildItem -Path 'C:\Users\User\Git\Test\Requirements1' | Sort-Object -Property Name | Format-Table;
    }

}

我可以在1到2之间来回循环。没问题。

Enter Option: : 1


    Directory: C:\Users\USER\Git\Test\Requirements1


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        7/15/2019   3:36 PM           7935 Assign1.txt
-a----        7/15/2019   9:15 AM             38 DailyLog.txt


Enter Option: : 2




    Directory: C:\Users\User\Git\Test\Requirements1


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        7/15/2019   3:36 PM           7935 Assign1.txt
-a----        7/15/2019   9:15 AM             38 DailyLog.txt
-a----         7/4/2019  10:50 AM         196608 x86ship-U.etl
-a----        7/15/2019   8:44 AM       10289152 x86ship-U.etl
-a----        7/12/2019  11:35 AM       52430553 log.bak.log
-a----        7/12/2019   4:38 PM       28564622 log.bak.log
-a----        4/27/2019  11:07 AM           4138 0.log
-a----        4/28/2019   3:00 AM           1501 00.log
-a----        4/28/2019   3:00 AM        3148824 0000.dat
-a----         7/6/2018   4:25 PM             24 Storage_OCAddin_0.dat
-a----        7/15/2019   8:45 AM          65536 x86ship-U.etl

现在,如果我在Format-Table上添加-AutoSize参数:

while ( ($in = Read-Host -Prompt "Enter Option: ") -ne "5") {

    if ($in -eq "1") {
            Get-ChildItem -Path "C:\Users\User\Git\Test\Requirements1\*" -Include *.txt;
    }

    if ($in -eq "2") {
            Get-ChildItem -Path 'C:\Users\User\Git\Test\Requirements1' | Sort-Object -Property Name | Format-Table -AutoSize;
    }

}

“ 1”仅在第一次工作。之后,它似乎卡住了,并且不显示输出。但是,当我选择2时,它将显示“ 1”和“ 2”的输出。

Enter Option: : 1


    Directory: C:\Users\User\Git\Test\Requirements1


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        7/15/2019   3:36 PM           7935 Assign1.txt
-a----        7/15/2019   9:15 AM             38 DailyLog.txt
Enter Option: : 2




    Directory: C:\Users\User\Git\Test\Requirements1


Mode          LastWriteTime   Length Name
----          -------------   ------ ----
-a----        7/15/2019   3:36 PM           7935 Assign1.txt
-a----        7/15/2019   9:15 AM             38 DailyLog.txt
-a----         7/4/2019  10:50 AM         196608 x86ship-U.etl
-a----        7/15/2019   8:44 AM       10289152 x86ship-U.etl
-a----        7/12/2019  11:35 AM       52430553 log.bak.log
-a----        7/12/2019   4:38 PM       28564622 log.bak.log
-a----        4/27/2019  11:07 AM           4138 0.log
-a----        4/28/2019   3:00 AM           1501 00.log
-a----        4/28/2019   3:00 AM        3148824 0000.dat
-a----         7/6/2018   4:25 PM             24 Storage_OCAddin_0.dat
-a----        7/15/2019   8:45 AM          65536 x86ship-U.etl


Enter Option: : 1

Enter Option: : 1


Enter Option: : 2

    Directory: C:\Users\User\Git\Test\Requirements1


Mode          LastWriteTime Length Name
----          ------------- ------ ----
-a----  7/15/2019   3:36 PM   7935 Assign1.txt
-a----  7/15/2019   9:15 AM     38 DailyLog.txt
-a----  7/15/2019   3:36 PM   7935 Assign1.txt
-a----  7/15/2019   9:15 AM     38 DailyLog.txt




    Directory: C:\Users\User\Git\Test\Requirements1


Mode          LastWriteTime   Length Name
----          -------------   ------ ----
-a----        7/15/2019   3:36 PM           7935 Assign1.txt
-a----        7/15/2019   9:15 AM             38 DailyLog.txt
-a----         7/4/2019  10:50 AM         196608 x86ship-U.etl
-a----        7/15/2019   8:44 AM       10289152 x86ship-U.etl
-a----        7/12/2019  11:35 AM       52430553 log.bak.log
-a----        7/12/2019   4:38 PM       28564622 log.bak.log
-a----        4/27/2019  11:07 AM           4138 0.log
-a----        4/28/2019   3:00 AM           1501 00.log
-a----        4/28/2019   3:00 AM        3148824 0000.dat
-a----         7/6/2018   4:25 PM             24 Storage_OCAddin_0.dat
-a----        7/15/2019   8:45 AM          65536 x86ship-U.etl

有人可以解释这种行为吗?

1 个答案:

答案 0 :(得分:0)

这是常见问题的一部分,在该问题中,powershell脚本不能将多个不同的属性集作为表输出。 PowerShell: write-output only writes one object如果这两个if语句都运行格式表,那么它将起作用。或者,您可以将整个内容通过管道传递给format-table,但是while语句必须在函数内部。