我正在处理分配,我注意到在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
有人可以解释这种行为吗?
答案 0 :(得分:0)
这是常见问题的一部分,在该问题中,powershell脚本不能将多个不同的属性集作为表输出。 PowerShell: write-output only writes one object如果这两个if语句都运行格式表,那么它将起作用。或者,您可以将整个内容通过管道传递给format-table,但是while语句必须在函数内部。