私はすでにこれを検索しており、多くの回答が見つかりました。しかし、そのうちどれもうまくいかないようです。powershellを使用してリモートシステムにファイル/フォルダが存在するかどうか確認してください。
ローカルマシンからリモートサーバーにファイルをコピーするために使用されるスクリプトを作成しています。ファイルをコピーする前に、ファイル/フォルダが既に存在するかどうかを確認する必要があります。フォルダが存在しない場合は、新しいフォルダを作成し、ファイルをコピーします。ファイルが指定された場所に既に存在する場合は、ファイルを上書きします。
私はこれを行う方法についての論理を得ました。しかし、何らかの理由でTest-Pathが機能していないようです。
$server = #list of servers
$username = #username
$password = #password
$files = #list of files path to be copied
foreach($server in $servers) {
$pw = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object Management.Automation.PSCredential ($username, $pw)
$s = New-PSSession -computerName $server -credential $cred
foreach($item in $files){
$regex = $item | Select-String -Pattern '(^.*)\\(.*)$'
$destinationPath = $regex.matches.groups[1]
$filename = $regex.matches.groups[2]
#check if the file exists on local system
if(Test-Path $item){
#check if the path/file already exists on remote machine
#First convert the path to UNC format before checking it
$regex = $item | Select-String -Pattern '(^.*)\\(.*)$'
$filename = $regex.matches.groups[2]
$fullPath = $regex.matches.groups[1]
$fullPath = $fullPath -replace '(.):', '$1$'
$unc = '\\' + $server + '\' + $fullPath
Write-Host $unc
Test-Path $unC#This always returns false even if file/path exists
if(#path exists){
Write-Host "Copying $filename to server $server"
Copy-Item -ToSession $s -Path $item -Destination $destinationPath
}
else{
#create the directory and then copy the files
}
}
else{
Write-Host "$filename does not exists at the local machine. Skipping this file"
}
}
Remove-PSSession -Session $s
}
リモートマシン上にファイル/パスが存在するかどうかを確認する条件は、常に失敗します。理由は分かりません。
私はpowershellで以下のコマンドを手動で試してみました。コマンドはリモートマシンでtrueを返し、ローカルマシンでfalseを返します。ローカルマシン上の
:リモートマシン上
Test-Path '\\10.207.xxx.XXX\C$\TEST'
False
:
Test-Path '\\10.207.xxx.xxx\C$\TEST'
True
Test-Path '\\localhost\C$\TEST'
True
だから、コマンドが、私は手動またはスクリプトを使用してみてください場合でも、失敗したことは明らかです。しかし、リモートのシステムやサーバーからコマンドを実行しようとすると、コマンドは成功します。
しかし、ファイルがローカルシステムのリモートマシンに存在するかどうかを確認する必要があります。
何か不足していますか?誰かがここで何が起こっているのか理解できるように助けることができますか?
ありがとうございます!
Robocopyでコピーを扱うのはなぜですか? – Snak3d0c
私はこの問題を見ると思いますが、 '$ Files'からいくつかの行がどのように見えるか教えてください。 – FoxDeploy