我现在是我公司的离线脚本的骄傲的主人(耶!)。 我一直在通过代码和testing,并且我注意到,在一些用户的主文件夹中,我遇到了PowerShell的260个字符限制。 这是一个问题,因为我们的政策规定,任何“诉讼保留”的公司都需要将整个家庭文件夹压缩并存储,直到合法发布(换句话说永远)。 脚本的其余部分运行良好,并处理所有其他事情,所以我希望这个过程留在PowerShell中。
我已经尝试了许多方法/方法/解决方法,我还没有find一个工作。 这是我所尝试的:
AlphaFS :可以获取所有的文件名,但当我将输出发送到本地cmdlet时会出现窒息现象(不奇怪)
AlphaFS压缩 :不recursion
7-Zip :不保留时间戳正确
ICSharpCode.SharpZipLib :点击PS字符限制
*编辑:我也试过QuickIO.NET,但没有通过与压缩方法的PS限制。
*编辑2:尝试System.IO.Compression.FileSystem – 点击PS字符限制
我不幸的不能发布代码,但这个想法很简单。
HomeFolder – > PowerShell – > CompressedFile
我可以加载任何模块,我可能需要在脚本,但它必须保持PowerShell和文件夹内容需要压缩成一个文件。 我希望这甚至是可能的。
任何帮助,将不胜感激。
谢谢
我build议使用emcopy / robocopy将目录移动到更短的path长度。
那么你可以轻松地在PowerShell中操作它。
即使这是压缩,然后用emcopy将其移回
这是更多的SOtypes的答案,但自从你提到你已经使用AlphaFS .. AlphaFS实际上确实有一个recursion压缩选项,你只需要传递选项,如上所述基本上只需要添加,32你的方法调用,32所以像[Alphaleonis.Win32.Filesystem.Directory]::Compress($path,32)
请记住,这使用NTFS压缩,而不是创build一个zip文件。