OK, das eigentliche Problem war, dass ich den Pfad aus einem Registrierungseintrag abrief und ihn dann mit Regex bereinigte. Ganz am Anfang des Pfades befand sich vorne ein Leerzeichen, das ich bei der Protokollierung nicht bemerkte. Ich habe dieses Problem folgendermaßen behoben: #outvar wird zum Erstellen des Pfads verwendet und stammt von einem Registrierungsschlüssel | 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
Wenn ich das Ziel manuell eingebe, funktioniert die Kopie einwandfrei. Dies muss also ein einfaches Syntaxproblem sein.
Ich habe versucht, die Variable $ destinationpath folgendermaßen vollständig zu erstellen:
$destinationpath = "\\$server\$remotepath"
$destinationpath = ("\\{0}\{1}" -f $server,$remotepath)
BEIDES funktioniert und wenn ich die Variable schreibe, erhalte ich das richtige \ server \ d $ \ programe ... Ich erhalte immer noch ein unzulässiges Zeichen im Pfad., Char14
Ich habe bestätigt, dass das im Fehler angegebene Zeichen die genaue Zahl ist, an der sich das Symbol $ im Ziel befindet. es ist diese char-Nummer in diesem Argument.
Ich habe es in zwei Teile geteilt ... siehe unten.
Dies kopiert auf die Admin-Freigabe für das Stammverzeichnis von D. Copy-Item -path $ localtruststore -Destination \ $ server \ d $ -Force
Dann benutze ich dies später, um die Datei auf dem Remote-Server zu verschieben. Rufen Sie den Befehl -ComputerName $ server auf.
Was möglicherweise oder möglicherweise nicht kompliziert ist, ist, dass meine Java Keystore-Dateien, JKS-Dateien, keine Dateierweiterungen haben.
quelle
Antworten:
UNC-Pfade beginnen mit doppelten Backslashes, sodass Ihr Befehl folgendermaßen aussehen sollte:
quelle