Прежде чем делать что-либо еще, убедитесь, что с вашим синтаксисом ничего не происходит, выполнив команду с жестко закодированными значениями:
Copy-Item 'D:\location.exe' -Destination \\Computer1\D$\ -Recurse -PassThru
Не видя вашего полного сообщения об ошибке, я не уверен, что вам отказано в доступе на локальном или удаленном компьютере.
Предполагая, что это ваш локальный компьютер, поднимите ваш запрос (запустите его от имени администратора). Обычно я не вижу этой проблемы при извлечении с диска, отличного от 'C', поэтому я не уверен на 100%, что это проблема, с которой вы столкнулись.
Вы можете обнаружить, что ваша учетная запись не имеет разрешения на запись / доступ к удаленным компьютерам. Похоже, вы начали указывать там имя пользователя и пароль, но на самом деле вы его еще не используете.
Чтобы получить объект учетных данных, который затем можно использовать с Copy-Item
рассмотрите следующее:
$username = "adminuser"
$password = "pass"
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, ($password | ConvertTo-SecureString -AsPlainText -Force)
Обратите внимание, что это оставит пароль в текстовом виде в вашем скрипте, чтобы все могли его видеть, я лично предпочел бы сделать это:
$username = "adminuser"
$cred = Get-Credential $username
Откроется диалоговое окно «Безопасность Windows» с предварительно заполненным именем пользователя и предложит ввести пароль.
Затем вы можете использовать $cred
с другими командами, например:
Copy-Item $FileLocation -Destination \\$_\$Destination -Credential $cred -Recurse -PassThru
Я должен отметить, что это не защитит ваши полномочия. Пока существует этот объект $ cred, можно извлечь пароль из него в тексте плана ($cred.GetNetworkCredential().password
).