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.