我有这个变量:
$sourcePath ="D:\test1\test2\test3\test4"
我想要审核"\test3\test4"
我试过这个,但它没有用:
"\Split-Path (Split-Path $sourcePath -Parent) \ -Leaf Split-Path $sourcePath -Leaf"
答案 0 :(得分:1)
如果您尝试在双引号内运行cmdlet,则需要使用子表达式$()
,否则将无法对其进行评估。
"\$(Split-Path (Split-Path $sourcePath -Parent) -Leaf)\$(Split-Path $sourcePath -Leaf)"
作为替代方法,您可以使用Get-Item
的父属性来检索所需的级别,然后使用-replace
将其删除。
$sourcePath ="D:\test1\test2\test3\test4"
$ParentParent = (Get-Item $sourcePath).Parent.Parent.FullName
$regex = [regex]::escape($ParentParent)
$sourcePath -replace $regex,""
答案 1 :(得分:0)
其他解决方案
$sourcePath ="D:\test1\test2\test3\test4"
"\" + (($sourcePath -split "\\")[-2..-1] -join "\")
答案 2 :(得分:0)
或者
$sourcePath ="D:\test1\test2\test3\test4"
$Root2Level=[System.IO.Path]::GetDirectoryName([System.IO.Path]::GetDirectoryName($sourcePath))
$sourcePath.Replace($Root2Level, '')