●仮想マシンファイルを別サーバにコピーする

<概要>
仮想マシンが停止していることを確認後に、
仮想マシンファイルを、別サーバにRobocopyコマンドでコピーする。
batファイルを実行することにより、ps1ファイルを呼び出して、処理を実行する。
ps1ファイル内の処理の実行結果は、batファイルでエラーレベルとして取得できるようにする。

<CopyVmFile.bat ファイル>
@echo off

powershell.exe -Command "Set-ExecutionPolicy RemoteSigned; "C:\Users\Administrator\Desktop\CopyVmFile.ps1"; exit $LASTEXITCODE"

echo %errorlevel%

pause


<CopyVmFile.ps1 ファイル>

$myVar_CopySourceVmName= "testVM1"
$myVar_CopyDestVmHostName= "vmhost1"
$myVar_CopyDestVmHostIP= "192.168.20.10"

$myVar_logfile= "C:\Users\Administrator\Desktop\Log\CopyVmFile.log"
$myVar_CopySourceFolder= "D:\VM\" + $myVar_CopySourceVmName
$myVar_CopyDestFolder= "\\" + $myVar_CopyDestVmHostIP + "\D$\VM_CopyData\" + $myVar_CopySourceVmName


##################################################
#ファイルのコピーが成功した時用の関数(ここから)
#<処理概要>
#ps1ファイルを呼び出したBATファイルに、戻り値として0を返す用。

function myFunc_return0 {
  exit 0
}
#ファイルのコピーが成功した時用の関数(ここまで)
##################################################

##################################################
#ファイルのコピーが失敗した時用の関数(ここから)
#<処理概要>
#ps1ファイルを呼び出したBATファイルに、戻り値として1を返す用。

function myFunc_return1 {
  exit 1
}
#ファイルのコピーが失敗した時用の関数(ここまで)
##################################################


function Start-Executable {
  param(
    [String] $FilePath,
    [String[]] $ArgumentList
  )
  $OFS = " "
  $process = New-Object System.Diagnostics.Process
  $process.StartInfo.FileName = $FilePath
  $process.StartInfo.Arguments = $ArgumentList
  $process.StartInfo.UseShellExecute = $false
  $process.StartInfo.RedirectStandardOutput = $true
  if ( $process.Start() ) {
    $output = $process.StandardOutput.ReadToEnd() -replace "\r\n$",""
    if ( $output ) {
      if ( $output.Contains("`r`n") ) {
        $output -split "`r`n"
      }
      elseif ( $output.Contains("`n") ) {
        $output -split "`n"
      }
      else {
        $output
      }
    }
    $process.WaitForExit()
#    & "$Env:SystemRoot\system32\cmd.exe" /c exit $process.ExitCode
  }

#return $process.ExitCode


$Global:ReturnCode=$process.ExitCode

}




#ログファイルの存在有無調査&存在しなければ作成する。
if(-not(Test-Path -path $myVar_logfile)) { 
  New-Item -Path $myVar_logfile -ItemType file -Value $(Get-Date) -force 
} else {
}



#戻り値を0で初期化。
$Global:ReturnCode=0



$Nowtime = Get-Date -Format yyyy/MM/dd_HH:mm:ss
$msg = $NowTime + " " + "▽仮想マシンのコピー処理を実施します。"
Write-Host $msg
Write-Output $msg | Out-File $myVar_logfile -append -encoding Default

##################################################
#仮想マシンの電源状態調査(ここから)
#<処理概要>
#PowerShellを10秒停止後、仮想マシンの電源状態を調査し、
#電源状態がOFFでない場合、かつ、指定回数(=intCount)に達しない場合は、
#DoWhile文を抜けずに、電源状態を調査する。
#


$Nowtime = Get-Date -Format yyyy/MM/dd_HH:mm:ss
$msg = $NowTime + " " + "-電源状態の調査を開始します。"
Write-Host $msg
Write-Output $msg | Out-File $myVar_logfile -append -encoding Default


$intCount=0
do {
  #PowerShellを10秒間停止。
  start-sleep -s 10
  $intCount++
  #PowerShellを10秒間停止 ×1セット 待機した後の結果処理。
  if ( $intCount -gt 1) {

    $Nowtime = Get-Date -Format yyyy/MM/dd_HH:mm:ss
    $msg = $NowTime + " " + "-仮想マシンの電源状態がOFFでありません。処理を中止します。"
    Write-Host $msg
    Write-Output $msg | Out-File $myVar_logfile -append -encoding Default

    myFunc_return1

  }
}
while ( Get-VM -name $myVar_CopySourceVmName | Where-Object { $_.state -ne 'Off' } )

$Nowtime = Get-Date -Format yyyy/MM/dd_HH:mm:ss
$msg = $NowTime + " " + "-電源状態の調査が完了しました。"
Write-Host $msg
Write-Output $msg | Out-File $myVar_logfile -append -encoding Default

#仮想マシンの電源状態調査(ここまで)
#######################################################


#######################################################
#仮想マシンファイルのコピー処理。(ここから)


$Nowtime = Get-Date -Format yyyy/MM/dd_HH:mm:ss
$msg = $NowTime + " " + "別仮想サーバ( " + $myVar_CopyDestVmHostName + " )上へ、仮想マシン( " + $myVar_CopySourceVmName + " )ファイルのコピーを開始します。"
Write-Host $msg
Write-Output $msg | Out-File $myVar_logfile -append -encoding Default



#$result = robocopy.exe $myVar_CopySourceFolder $myVar_CopyDestFolder /Copy:DAT /PURGE /E /R:3 /NP

$result =(Start-Executable robocopy.exe $myVar_CopySourceFolder,$myVar_CopyDestFolder,"/Copy:DAT /PURGE /E /R:3 /W:10 /NP" )



Write-Host "aaaaaaaaaaaaaaaaaa"
#Write-Output $result

Write-Output $Global:ReturnCode

switch($Global:ReturnCode){
  16      {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( ***FATAL ERROR*** )";$Global:ReturnCode=1}
  15      {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( FAIL MISM XTRA COPY)";$Global:ReturnCode=1}
  14      {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( FAIL MISM XTRA     )";$Global:ReturnCode=1}
  13      {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( FAIL MISM      COPY)";$Global:ReturnCode=1}
  12      {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( FAIL MISM          )";$Global:ReturnCode=1}
  11      {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( FAIL      XTRA COPY)";$Global:ReturnCode=1}
  10      {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( FAIL      XTRA     )";$Global:ReturnCode=1}
  9       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( FAIL           COPY)";$Global:ReturnCode=1}
  8       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( FAIL               )";$Global:ReturnCode=1}
  7       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "(      MISM XTRA COPY)";$Global:ReturnCode=0}
  6       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "(      MISM XTRA     )";$Global:ReturnCode=0}
  5       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "(      MISM      COPY)";$Global:ReturnCode=0}
  4       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "(      MISM          )";$Global:ReturnCode=0}
  3       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "(           XTRA COPY)";$Global:ReturnCode=0}
  2       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "(           XTRA     )";$Global:ReturnCode=0}
  1       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "(                COPY)";$Global:ReturnCode=0}
  0       {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "(    --no change--   )";$Global:ReturnCode=0}
  default {Write-Host "RobocopyReturnCode:" $Global:ReturnCode "( 該当エラーコード不明。)";$Global:ReturnCode=1}
}


Write-Host "bbbbbbbbbbbbbbbbbb"

#Robocopyコマンドの結果判定処理。
if ( $Global:ReturnCode -eq 0) {

  $Nowtime = Get-Date -Format yyyy/MM/dd_HH:mm:ss
  $msg = $NowTime + " " + "別仮想サーバ( " + $myVar_CopyDestVmHostName + " )上へ、仮想マシン( " + $myVar_CopySourceVmName + " )ファイルのコピーが成功しました。"
  Write-Host $msg
  Write-Output $msg | Out-File $myVar_logfile -append -encoding Default

  myFunc_return0

} else {

  $Nowtime = Get-Date -Format yyyy/MM/dd_HH:mm:ss
  $msg = $NowTime + " " + "別仮想サーバ( " + $myVar_CopyDestVmHostName + " )上へ、仮想マシン( " + $myVar_CopySourceVmName + " )ファイルのコピーが失敗しました。"
  Write-Host $msg
  Write-Output $msg | Out-File $myVar_logfile -append -encoding Default

  myFunc_return1

}

#仮想マシンファイルのコピー処理。(ここまで)
#######################################################


コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

▼当HP内検索▼

▼メインメニュー▼



管理者用リンク
書籍(技術書)
・利用ソフト一覧
・Ethereal/Wireshark

転送速度




・powershell

・VBA










・Microsoft SQLserver








●CentOS6.9


▼動画サーバ関係

MP3について
DVDからのMP3変換について?
DVDからの動画変換について



▼自転車関係
・Panasonic CRAZY BOY

▼自動車関係
・SUZUKI エブリワゴンDA62W


▼Linux/Unix関係
・Linux基礎(パッケージ)
・Linux基礎(システム構成)
・Linux(Debian)基本コマンド
・Linuxコマンド(テキスト処理)
・Linuxコマンド(未整理)
・Linuxコマンド(ネットワーク系)
・FedoraCore OS メモ
・Debian Linux OS メモ
・Vine Linux OS メモ
・xPUD メモ

・CentOS6.4(minimal)


・solaris9 メモ
・solaris10 メモ

▼CCNA関係


▼ノートPC関連

液晶パネル

Fujitsu FMV-820MT
・Compaq Evo Notebook N110
・Panasonic Let's note CF-S51R
・Toshiba Dynabook Satellite 1800


▼デスクトップPC関連
・AOpen AX3S Pro-U
・ASUS CUSL2
・ASUS CUSL2-M


▼携帯電話
・NTT DoCoMo FOMA M1000
・FOMA P704iμ


▼モデム関連
▼ADSLモデム
・NTT ADSLモデム-NV
・NEC PA-WD605CV
・NEC PA-WD701CV
▼アナログモデム
・GVC F-1156IV/R9

▼ルータ関連
▼ルータ
・OMRON MR504DV
・FON La Fonera FON2100E
・Cisco Cisco2620
・Cisco4500M
・Cisco1601
  Cisco1603-R
  Cisco1605

・Cisco 共通メモ

・BUFFALO BLR3-TX4L
・I・O DATA NP-BBR
・NEC PA-WB7000/B (AtermWB7000H)
・マイクロ総研 NetGenesis OPT
・Persol PBR001

・YAMAHA NetVolante RTA54i
・FUJITSU NetVehicle-I

▼イーサネットコンバータ関連
・LINKSYS WET11

▼TA関連
・NEC AtermIT60D1L(S)

▼ハブ関連
・Cisco Catalyst 2924-XL-EN
・AlliedTelesis CentreCOM8216XL2
・BUFFALO LSW10/100-8
・corega FSW-5PM
・corega HUB-5PM
・CONTEC RT-1216S

▼NIC関連
・BUFFALO WLI-U2-SG54HP
・PLANEX GW-NS54GMX
・NTT-ME MN SS-LAN CARD 11 HQ

▼プリンタサーバ関連
・corega Pserver
・I・O DATA PLANT ET-FPS1E

▼デジカメ関連
・MINOLTA DiMAGE F100

▼携帯電話ケーブル関連
・BUFFALO IGM-UPDC
・OMRON ME64KTID
・OMRON ME96KTI
・SOURCENEXT SUS-USB-02 REV.1
・UP12 USB-PDC Converter
・DAISO D106

▼その他PC周辺機器
●キーボード
・Bluetoothキーボード BK3001BA
●ハンディターミナル
・ENSO BHT-6500
●ダウンスキャンコンバータ
・SC-TVEX
●CD-ROMドライブ
・NEC CD-2800D
・BUFFALO CDN-D24EX
・BUFFALO DVM-RDM16IU2
●MOドライブ
・ELECOM LMO-230-S
・FUJITSU MCF3064SS
・FUJITSU SMB-640WL2
●スピーカー
・Justy JSP-10W
●MP3プレーヤ
・SanDisk sansa e130
・NHJ V@mp VP-415
●インタフェースカード
・玄人志向 USB2.0+1394a-CB
・nbj IDE-3525
・Notebook Power Sharing
●ACアダプタ
・Universal AC Adaptor
●マウス
・Logitec Marble Mouse
・needs progres TN-30RFMOSG
●タブレット
・WACOM FAVO(ET-0405-U)
●その他
・IDEAL ME-320X(ME-320U2F)
・KY-05046S-12-H
・LifeView USB CapView
・ハードウェア(その他)
●シリアルレベルコンバータ
・シリアルレベルコンバータ


▼Windows系メモ
・DOS起動ディスク
・Microsoft OS メモ
・Microsoft 系ソフト メモ
・その他 ソフトウェアメモ
・Network Notepad
・Packet Tracerメモ
・パノラマ写真作成ソフト
・トラブル対処履歴


▼プログラミング関連
・言語比較
・VBS
・卒研事前メモ
・卒研メモ
・Windowsプログラミング
・JANコード・ISBNコード相互変換
●C言語
・文字列
・ファイル操作
●アルゴリズム
・再帰アルゴリズム
●JAVA
・Javaプログラミング
●その他
・初心者プログラミング
・ソフトウェア未整理メモ



▼家電関連
●テレビ
・SHARP AQUOS LC-20D10
・FUNAI TV-14CP
・BLUEDOT BTV-900K
・AKART AK-FTV913
・REAL LIFE JAPAN IQ-191LEDTV
AQUOS DZ3シリーズのDLNA機能
Viera V1シリーズのDLNA機能
●プロジェクタ
・crenova XPE470
●AVセレクタ
・DataSystem AVS430
●ビデオ
・FUNAI TV-14CP
●HDD&DVDレコーダ
・Toshiba RD-XS46
・NEC PK-AX10
●DVDプレーヤー
・GREEN HOUSER GH-PDV9AT
・情熱価格 DVDJ-DQ03
●メディアプレーヤー
・MINI HD MEDIA BOX 1080P
・1080P FULL HD Media Player
・1080P HD Media Player Mini 1080
・HD media player

●チューナー
・COMTEC DTW700
・HUMAX CI-S1

●アンテナ
・ADDZEST ZCP107
・マルハマ AGS-590

●ヘッドマウントディスプレイ
・VIRTUAL i/O i-glasses
●電動歯ブラシ
・ブラウン電動歯ブラシ
●電話機
・SHARP DA-C5-B
●コードレス電動ドリル、ドライバ
・BLACK&DECKER CSD300T
・RELIEF 30946?

▼カーナビ関係
Panasonic CN-GP510VD
Panasonic CN-G1100VD
▼カーステレオ関係
Kenwood U585SD

▼おもちゃ関連
●ラジコン
・ラジコンのプロポ改造


▼カー用品関連
●インダッシュTV
・ADDZEST TVS6250


▼DIY関連
・懸垂スタンド
・蓄光塗料


▼電子工作関係
・コネクタピンアサイン
・LANケーブルをAVケーブル化
・LANケーブルをRGBケーブル化
・地上デジタル放送アンテナ
・電子工作 メモ
・乾電池を充電


▼デザイン関連
●腕時計
・腕時計


▼その他

・HP製作関連メモ
・アイデアメモ

・コラム・メモ
・趣味・興味


・ToDo
・ネットインフラ?


▼資格・履歴書・マナー
・資格取得メモ
・工事担任者対策メモ
・履歴書・職務経歴書
・答辞


▼修学旅行 フランス(パリ)


▼掲示板
●掲示板
 意見・苦情・質問用に仮設置。

▼フリーエリア▼

▼おしらせ▼

管理人/副管理人のみ編集できます