这是5/18/18的更新: 感谢所有发帖的人。每个人都分享了一些很棒的信息。一旦它最终点击了我,我就能够找到一个非常简单的使用DirectoryName的解决方案:
$file = Get-ChildItem -path "c:\temp\testc" -Recurse
$destshare = "C:\temp\testD\"
$Dest = ($file.DirectoryName.replace($file.directoryname, $destshare))
以下原帖:
我正在使用.fullname
从文件中提取Get-Childitem
,并希望从源中删除 server\sharename
。
使用$f.fullname.split('\)[X]
会保留我选择的数组部分,但有没有办法删除 \\server\share$
(\\ECNFILE01\santana-carlos$\
)?
自:
\\ECNFILE11\Joe-smith-J$\work\O365 SOP - New User Account Creation BEANE EDITS and MARKUPS.docx
我只想:
\work\O365 SOP - New User Account Creation BEANE EDITS and MARKUPS.docx
每个用户的服务器\ sharename会有所不同:\\ECNFILE11\Joe-smith-J$
,\\ECNFILE9\user2$
,\\ECNFILE1\user3
等等。
由于
答案 0 :(得分:0)
您可以将字符串转换为URI,并使用Host
和Segments
属性来构建您想要的\\server\share\
样式的字符串:
$URI = [URI]"\\ECNFILE11\Joe-smith-J$\work\O365 SOP - New User Account Creation BEANE EDITS and MARKUPS.docx"
Write-Output "\\$($URI.Host)\$($URI.Segments[1])"
> \\ecnfile11\Joe-smith-J$/
Windows会在UNC路径中自动更正\
与/
,但如果您愿意,可以随时使用替换更改此内容...
Write-Output "\\$($URI.host)\$($URI.Segments[1] -replace('/','\'))"
> \\ecnfile11\Joe-smith-J$\
返回没有\\server\share
$UNC = "\\ECNFILE11\Joe-smith-J$\work\O365 SOP - New User Account Creation BEANE EDITS and MARKUPS.docx"
$URI = [URI]$UNC
$UNC -replace "^$([regex]::Escape("\\$($URI.host)\$($URI.Segments[1] -replace('/','\'))"))"
> work\O365 SOP - New User Account Creation BEANE EDITS and MARKUPS.docx
答案 1 :(得分:0)
您可以在Do循环中使用Split-Path
,直到它不返回任何内容并获取之前的结果,然后该结果将是最后一个有效的UNC路径,例如\\server\share
。然后正则表达式从全名
$Files = @('\\ECNFILE11\Joe-smith-J$\work\O365 SOP - New User Account Creation BEANE EDITS and MARKUPS.docx','\\ECNFILE01\santana-carlos$\!Archive!\cotr\Task Orders\OPS\OPS-TO-09-1\OPS-TO-2009-1 Extension\OPS-TO-2009-1 MOD6\OPS-TO-2009-2 MOD6 InitiationForm.doc')
foreach ($File in $Files) {
$PathParent = $File
do {
$PreviousParent = $PathParent
$PathParent = Split-Path $PathParent -Parent
}
while ($PathParent)
$File -replace "^$([regex]::Escape(PreviousParent))"
}
答案 2 :(得分:0)
要从网络共享路径中删除\\servername\sharename$
,您只需执行操作即可
Split('$\')[1]
但是,如果共享不是管理共享(共享名称末尾没有$
个标志)
然后你必须按'\'
拆分,删除前4行,在每个行之间加入\
。