复制到网络共享不适用于 powershell Copy-Item

Copying to network share does not work with powershell Copy-Item

我尝试在 Windows10 中使用 powershell 将安装文件夹复制到网络共享(linux 上的 samba)

powershell.exe -Version 5 -Command "Copy-Item  -Force -Path 'install' -Recurse -Destination 
'\\intranet.server.com\install'" -Container

它总是失败,即使可以在资源管理器中写入文件并且我可以访问,并且有很多这样的消息:

Copy-Item : The target file "\intranet.server.com\install\a\b\c" is a directory, not a file.

删除任何现有文件夹适用于 Remove-Item '\intranet.server.com\install\*' -Force -Recurse

我不知道它是否与凭据有关,我该如何调试它?

问题出在Windows的SMB2 Redirector Cache:

我们需要通过以下操作暂时禁用烦人的缓存:

if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    Start-Process PowerShell -Verb RunAs "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`"";
    exit;
}

$c = Get-SmbClientConfiguration
$dc=$c.DirectoryCacheLifetime
$fc=$c.FileInfoCacheLifetime
$fnc=$c.FileNotFoundCacheLifetime
Set-SmbClientConfiguration -Force -DirectoryCacheLifetime 0 -FileInfoCacheLifetime 0 -FileNotFoundCacheLifetime 0

// Normal kopieren hier !!!!

Set-SmbClientConfiguration -Force -DirectoryCacheLifetime $dc -FileInfoCacheLifetime $fc -FileNotFoundCacheLifetime $fnc

这很麻烦,但解决了问题。