我有一个名为 D:\MyDir 的文件夹,这是其内容:
PS D:\MyDir> gci
Directory: D:\MyDir
Mode LastWriteTime Length Name
---- ------------- ------ ---- d----- 11/22/2021 8:10 PM MyFolder-2021-11-22
Run Code Online (Sandbox Code Playgroud)
我将按 creatin 排序的文件夹名称存储在 $Dirlist 上:
$Dirlist = gci $LBDestination | ? { $_.PSIsContainer } | sort CreationTime | select -Property Name | foreach { $_.Name }
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是系统将列表中的每个字母存储为数组中的一个值
PS D:\MyDir> $Dirlist[0..3]
M
y
F
o
Run Code Online (Sandbox Code Playgroud)
当我有多个文件夹时,我的脚本工作正常。
Sim*_*onS 10
这不是处理数据的好习惯format-list。format-list用于可视化输出。
相反,您应该告诉您的变量它肯定是一个数组,即使它只有一个值。您可以通过将其转换为 a[string[]]或将整个命令包装到其中@(),甚至在将其存储在变量中之前使其成为数组。
看看这里的区别:
如果有多个返回,您的方法就有效,因为那时它自动是一个数组。然而,如果只有一个返回,它就不起作用,因为 PowerShell 认为您希望变量是一个字符串,因为您没有明确告诉它您希望它是一个数组:
PS C:\Install\mydir> $Dirlist = gci . | ? { $_.PSIsContainer } | sort CreationTime | select -ExpandProperty Name
PS C:\Install\mydir> $Dirlist[0..3]
M
y
F
o
Run Code Online (Sandbox Code Playgroud)
您可以将其转换为数组,它将起作用:
PS C:\Install\mydir> [string[]]$Dirlist = gci . | ? { $_.PSIsContainer } | sort CreationTime | select -ExpandProperty Name
PS C:\Install\mydir> $Dirlist[0..3]
MyFolder-2021-11-22
Run Code Online (Sandbox Code Playgroud)
或者将整个命令包装在@():
PS C:\Install\mydir> $Dirlist = @(gci . | ? { $_.PSIsContainer } | sort CreationTime | select -ExpandProperty Name)
PS C:\Install\mydir> $Dirlist[0..3]
MyFolder-2021-11-22
Run Code Online (Sandbox Code Playgroud)
顺便提一句。代替
| select -Property Name | foreach { $_.Name }只需使用
| select -ExpandProperty Name| 归档时间: |
|
| 查看次数: |
4113 次 |
| 最近记录: |