ファイルをリモートPCリストにコピーするPowerShellスクリプト


0

自分のPCからリモートPCのリストにファイルをコピーしようとしました。このPowerShellスクリプトを作成しましたが、スクリプトの実行時にフォローエラーが表示されます

「コピー項目:アクセスが拒否されました」。

$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}

Powershell ISE /コマンドプロンプトのインスタンスを管理者に昇格させます。時間をかけて質問を編集し、コードを適切にフォーマットしてください。
ラムハウンド

回答:


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)でパスワードをそこから引き出すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.