1

ОК, настоящая проблема заключалась в том, что я получал путь из записи реестра, а затем чистил его с помощью 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, не имеют расширений файлов ..

1 ответ1

1

UNC-пути начинаются с двойной обратной косой черты, поэтому ваша команда должна выглядеть так:

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

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


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .