【发布时间】:2020-06-01 15:16:47
【问题描述】:
我想指定当前目录的名称来构造一个并行目录的路径(运行一些diff命令)。
但是当我这样做时:
New-Item -ItemType Directory -Name my_test_dir;
Set-Location my_test_dir;
$a = $( Get-Item . | Select-Object Name );
write-host( "x${a}x" );
我明白了
x@{Name=my_test_dir}x
而不是我预期的:
xmy_test_dirx
那么,我如何“拆箱”目录的名称?
PS - 为了便于测试,我使用:
mkdir my_test_dir; cd my_test_dir; $a = $( Get-Item . | Select Name ); echo "x${a}x"; cd ..; rmdir my_test_dir
【问题讨论】:
-
使用
select-object -expand name。对象具有属性/值对,除非它们是原语。所以你必须做一些不同的事情才能获得价值。另一种方法是使用会员访问:$a.name -
Select-Object PropertyName生成一个具有名为PropertyName的属性的对象,从输入项的相应属性中复制值。使用Select-Object -ExpandProperty PropertyName只获取属性的值 -
@MathiasR.Jessen 为什么不让您的评论成为答案?
-
为了节省管道的开销,你可以得到这样的名字:
$a = (Get-Item .).Name -
@Sled 提问,您将收到 ^_^