Parsing Shortcuts in Powershell

风格不统一 提交于 2019-12-20 02:08:24

问题


I have some code which is trying to make a copy of a directory which contains shortcuts:

 # Create a directory to store the files in
 mkdir "D:\backup-temp\website.com files\"

 # Search for shortcuts so that we can exclude them from the copy
 $DirLinks = Get-ChildItem "\\web1\c$\Web Sites\website\" -Recurse | ? { $_.Attributes -like "*ReparsePoint*" } | % { $_.FullName } 

 # Execute the copy
 cp -recurse -Exclude $DirLinks "\\web1\c$\Web Sites\website\*" "D:\backup-temp\website.com files\"

But when I execute the script I get the following error:

 Copy-Item : The symbolic link cannot be followed because its type is disabled.
 At C:\scripts\backup.ps1:16 char:3
 + cp <<<<  -recurse "\\web1\c$\Web Sites\website\*" "D:\backup-temp\website.com files\"
     + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
     + FullyQualifiedErrorId :          
 System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand

It seems the script is getting hung up on a symbolic link (I'm assuming the shortcut) that I'm trying to exclude in the fourth line of the script.

How can I tell powershell to ignore/exclude shortcuts?

Thanks, Brad


回答1:


If you are on V3 or higher you can eliminate the reparse points like so:

Get-ChildItem "\\web1\c$\Web Sites\website" -Recurse -Attributes !ReparsePoint | 
    Copy-Item -Dest "D:\backup-temp\website.com files"

On V1/V2 you can do this:

Get-ChildItem "\\web1\c$\Web Sites\website" |
    Where {!($_.Attributes -bor [IO.FileAttributes]::ReparsePoint)} |
    Copy-Item -Dest "D:\backup-temp\website.com files" -Recurse



回答2:


So it turns out that the issue I faces is explained in this Microsoft Blog Post: http://blogs.msdn.com/b/junfeng/archive/2012/05/07/the-symbolic-link-cannot-be-followed-because-its-type-is-disabled.aspx

Essentially on the server I am running the powershell script from I needed to run the following command: fsutil behavior set SymlinkEvaluation R2R:1

This allows Remote to remote symbolic links. Once this is in place the above powershell commands run as expected without errors.



来源:https://stackoverflow.com/questions/21514284/parsing-shortcuts-in-powershell

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!