Powershell - Copiar-Item para um erro de caminho de compartilhamento remoto caracteres ilegais no caminho

1

OK, o verdadeiro problema era que eu estava obtendo o caminho de uma entrada do registro e depois limpando-a com o Regex. O início do caminho tinha um espaço na frente que eu não percebi como estava registrando. Eu consertei esse problema usando isso:     #outvar é usado para construir o caminho e vem de uma chave de registro | Out-String     $ outvar = ($ outvar -replace '\ s', '')

$localtruststore = "C:\Users\me\OneDrive\work\scripts\PS\TEST\truststore"
$servers = "SERVER1"

## remotepath is actually set by looking at a registry entry, but I am sure it is coming out like this:
$remotepath = "d$\programname\server\Openfire\resources\security"


#### THIS LINE CAUSES THE ERROR - I think just because of the $.
Copy-Item $localtruststore -Destination \$server\$remotepath -Force

Copy-Item : Illegal characters in path.
At C:\Users\me\OneDrive\work\scripts\PS\TEST\chat_copy_trustore_to_remote.ps1:46 char:11
+     Copy-Item <<<<  $localtruststore -Destination \$server\$remotepath -Force
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], ArgumentException
    + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.CopyItemCommand

Se eu colocar manualmente o Destination in, a cópia funcionará perfeitamente, então isso deve ser um problema simples de sintaxe.

Eu tentei construir completamente a variável $ destinationpath fazendo isso:

$destinationpath = "\$server\$remotepath"    
$destinationpath = ("\{0}\{1}" -f $server,$remotepath)

AMBOS desses trabalhos e quando eu escrevo-host a variável eu recebo o correto \ server \ d $ \ programe ... Eu ainda tenho caráter ilegal no caminho., Char14

Confirmei que o caractere mencionado no erro é o número exato em que o símbolo $ está no destino. é esse número de caracteres nesse argumento.

Acabei quebrando isso em duas partes .... veja abaixo ...

Isso será copiado para o compartilhamento admin da raiz de D.     Copy-Item -path $ localtruststore -Destination \ $ server \ d $ -Force

Então eu uso isso depois para mover o arquivo no servidor remoto.     Invoke-command -ComputerName $ server {     Copy-Item -path D: \ truststore -Destino D: \ Temp -Force     }

O que pode ou não ter complicado isso é que meus arquivos Java Keystore, arquivos JKS, não possuem extensões de arquivo.

    
por user1991791 17.03.2015 / 14:44

1 resposta

1

Os caminhos UNC começam com barras duplas invertidas, então seu comando deve ficar assim:

$source = "C:\Users\me\OneDrive\work\scripts\PS\TEST\truststore"
$server = "server1"
$destinationpath = "\$server\d$\programname\server\Openfire\resources\security"

copy-item -path $source -destination $destinationpath -verbose


Or you can do it like this:
$foldershare = "d$\programname\server\Openfire\resources\security"
$destinationpath = ("\{0}\{1}" -f $server,$foldershare)
    
por 17.03.2015 / 14:53