如何在PowerShell中获取字符串而不是数组?

jra*_*ara 5 powershell powershell-2.0

我正在尝试执行以下操作:

$files = Get-ChildItem c:\temp | Select-Object Name
foreach ($i in $files) {
    Write-Host "Filename is $i"
}
Run Code Online (Sandbox Code Playgroud)

样本结果:

Filename is @{Name=oracle10204.rsp}
Filename is @{Name=powershell.txt}
Run Code Online (Sandbox Code Playgroud)

我如何只获得以下内容?

Filename is oracle10204.rsp
Filename is powershell.txt
Run Code Online (Sandbox Code Playgroud)

JNK*_*JNK 5

我不确定你为什么Select-Object在这里使用,但我会这样做:

Get-ChildItem c:\temp | % {Write-Host "Filename is $($_.name)"}
Run Code Online (Sandbox Code Playgroud)

这将Get-ChildItem的输出传递给Foreach-Object(缩写%),后者为管道中的每个对象运行命令.

$_ 是通用的管道对象变量.


Sha*_*evy 5

使用-Name开关,您只能获取对象名称:

 Get-ChildItem c:\temp -Name
Run Code Online (Sandbox Code Playgroud)


Old*_*art 5

如果您坚持要让原始尝试工作,请尝试替换

Select-Object Name
Run Code Online (Sandbox Code Playgroud)

Select-Object -ExpandProperty Name
Run Code Online (Sandbox Code Playgroud)