O script do PowerShell para copiar arquivos está tendo problemas com o caminho do diretório com espaços nele

1

Eu tenho uma lista de arquivos para copiar de / para locais diferentes. Infelizmente, um deles tem espaços no subdiretório. Nem todos eles têm subdiretórios e nem todos possuem espaços. Este é um diretório que não posso renomear porque é o diretório da VM e renomeá-lo envolve a remoção e reinstalação da VM inteira. É assim que o script se parece.

$vDrive = "V:\VM - USA02xxxx\VM-USA02xxxx.vhd"
$vDriveToLoc = "G:\"

Copy-Item $vDrive $vDriveToLoc

A mensagem de erro é Cópia-Item: Acesso ao caminho 'V: \ VM - USA02xxxx \ VM-USA02xxxxx.vhd' foi negado.

Sou administrador e tenho controle total sobre o arquivo / pastas, então esse não é o problema. Ele copia os arquivos nos outros diretórios bem.

Eu tentei substituir as aspas duplas por aspas simples e isso não corrige. Eu tentei, com aspas duplas, adicionar back-ticks na frente de cada espaço. Não funcionou.

Eu sei que quando faço isso na linha de comando do powerShell, ele funciona para o cd V: \ then cd "VM - USA02xxxx", mas não posso fazer isso programaticamente para uma longa lista de arquivos / diretórios. Alguma idéia?

Eu vi este link, mas não tenho certeza de que se aplicaria aqui: link

Eu tentei fazer o que um cara comentou aqui, mas não funcionou: link

    
por Michele 16.01.2014 / 21:39

2 respostas

-2

Obrigado pelas ideias caras! Eu estava tentando algumas coisas e adicionei-me tanto de e para diretórios com controle total e funcionou! Não sei por que eu precisei disso, já que estou no grupo Administradores.

    
por 24.01.2014 / 15:07
0

Aqui está uma chave de registro para ativar a unidade mapeada no token dividido do UAC. Eu acho que é por isso que o V: drive não é acessível a partir do seu script admin.

New-ItemProperty -Path "registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLinkedConnections" -Value 1 -PropertyType "DWord"
#

This problem occurs because UAC treats members of the Administrators group as standard users. Therefore, network shares that are mapped by logon scripts are shared with the standard user access token instead of with the full administrator access token.

link

A resposta alternativa é net use v: \etc\etc em seu script para mapear cada vez que ele é executado.

    
por 17.01.2014 / 16:18

Tags