ОК, настоящая проблема заключалась в том, что я получал путь из записи реестра, а затем чистил его с помощью Regex. У самого начала пути было пространство впереди, которое я не заметил, как я регистрировал. Я исправил эту проблему с помощью этого:#outvar используется для построения пути и приходит из раздела реестра | 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\40\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
Если я вручную введу пункт назначения, копия будет работать отлично, поэтому это должно быть простым синтаксическим вопросом.
Я попытался полностью построить переменную $ destinationpath, выполнив следующие действия:
$destinationpath = "\\$server\$remotepath"
$destinationpath = ("\\{0}\{1}" -f $server,$remotepath)
ОБА из них работают, и когда я пишу переменную host-host, я получаю правильный \server \d $ \programe ... Я все еще получаю недопустимый символ в пути., Char14
Я подтвердил, что символ, указанный в ошибке, является точным числом, где символ $ находится в месте назначения. это тот номер символа в этом аргументе.
Я просто разбил это на две части .... см. Ниже ..
Это скопирует в общий ресурс администратора для корня D. Copy-Item -path $ localtruststore -Destination \$ server \d $ -Force
Затем я использую это позже, чтобы переместить файл на удаленный сервер .. Вызвать-команду -ComputerName $ server {Copy-Item -path D:\truststore -Destination D:\Temp -Force}
Что может или не может быть сложным, это мои файлы Java Keystore, файлы JKS, не имеют расширений файлов ..