Я попытался скопировать файл с моего компьютера в список удаленных компьютеров. Я сделал этот сценарий PowerShell, но я получаю следующую ошибку при запуске сценария

Msgstr "Copy-Item: доступ запрещён".

$Pclist = Get-Content "D:\pclist.txt"
$username = "adminuser"
$password = "pass"
$FileLocation = 'D:\location.exe'
$Destination = "d$\"
foreach ($_ in $Pclist)
{Copy-Item $FileLocation -Destination \\$_\$Destination -Recurse -PassThru}

1 ответ1

1

Прежде чем делать что-либо еще, убедитесь, что с вашим синтаксисом ничего не происходит, выполнив команду с жестко закодированными значениями:

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).

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