将照片导入Linux虚拟机,用于将配置文件上载至 Linux 虚拟机的示例脚本

Upload the configuration files config and viewagent-custom.conf to Linux VMs

#>

#------------------------- Functions -------------------------

function GetInput

{

Param($prompt, $IsPassword = $false)

$prompt = $prompt + ": "

Write-Host $prompt -NoNewLine

[Console]::ForegroundColor = "Blue"

if ($IsPassword)

{

$input = Read-Host -AsSecureString

$input = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($input))

}

else

{

$input = Read-Host

}

[Console]::ResetColor()

return $input

}

#------------------------- Handle Input -------------------------

"-----------------------------------------------------"

write-host -ForeGroundColor Blue 'Please ensure your config file and viewagent-custom.conf file are in current working directory'

$vcAddress = GetInput -prompt "Your vCenter address" -IsPassword $false

$vcAdmin = GetInput -prompt "Your vCenter admin user name" -IsPassword $false

$vcPassword = GetInput -prompt "Your vCenter admin user password" -IsPassword $true

"-----------------------------------------------------"

$hostAdmin = GetInput -prompt 'Your ESXi host admin user name, such as root' -IsPassword $false

$hostPassword = GetInput -prompt "Your ESXi admin user password" -IsPassword $true

"-----------------------------------------------------"

$guestUser = GetInput -prompt 'Your VM guest OS user name' -IsPassword $false

$guestPassword = GetInput -prompt 'Your VM guest OS user password' -IsPassword $true

"-----------------------------------------------------"

$csvFile = '.\CloneVMs.csv'

$setConfig = $false

$setCustomConf = $false

$config_File = "config"

$customConf_File = "viewagent-custom.conf"

#check if config file exists

if(Test-Path $config_File)

{

$setConfig = $true

write-host -ForeGroundColor Yellow '"config" file found'

}

else

{

write-host -ForeGroundColor Yellow '"config" file not found, skip it'

}

if(Test-Path $customConf_File)

{

$setCustomConf = $true

write-host -ForeGroundColor Yellow '"viewagent-custom.conf" file found'

}

else

{

write-host -ForeGroundColor Yellow '"viewagent-custom.conf" file not found, skip it'

}

if (($setConfig -eq $false)-AND ($setCustomConf -eq $false))

{

write-host -ForeGroundColor Red 'Both file not found, exit'

exit

}

#Connect to vCenter

$VC_Conn_State = Connect-VIServer $vcAddress -user $vcAdmin -password $vcPassword

if([string]::IsNullOrEmpty($VC_Conn_State))

{

Write-Host 'Exit since failed to login vCenter'

exit

}

else

{

Write-Host 'vCenter is connected'

}

#Read input CSV file

$csvData = Import-CSV $csvFile

$destFolder = "/home/$guestUser/"

#Handle VMs one by one

foreach ($line in $csvData)

{

"`n-----------------------------------------------------"

$VMName = $line.VMName

write-host -ForeGroundColor Yellow "VM: $VMName`n"

#Try to delete the configuration file from home folder on destination VM

$cmd = "rm -rf config viewagent-custom.conf"

Write-Host "Run cmd '$cmd' in VM '$VMName' with user '$guestUser'"

Invoke-VMScript -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -ScriptType Bash -ScriptText $cmd

if ($setConfig)

{

Write-Host "Upload File '$config_File' to '$destFolder' of VM '$VMName' with user '$guestUser'"

Copy-VMGuestFile -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -LocalToGuest -Destination $destFolder -Source $config_File

$cmd = "sudo mv ./$config_File /etc/vmware/";

Write-Host "Move configuraton file: $cmd"

Invoke-VMScript -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -ScriptType Bash -ScriptText $cmd

}

if ($setCustomConf)

{

Write-Host "Upload File '$customConf_File' to '$destFolder' of VM '$VMName' with user '$guestUser'"

Copy-VMGuestFile -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -LocalToGuest -Destination $destFolder -Source $customConf_File

$cmd = "sudo mv ./$customConf_File /etc/vmware/";

Write-Host "Move configuraton file: $cmd"

Invoke-VMScript -HostUser $hostAdmin -HostPassword $hostPassword -VM $VMName -GuestUser $guestUser -GuestPassword $guestPassword -Confirm:$false -ScriptType Bash -ScriptText $cmd

}

}

Disconnect-VIServer $vcAddress -Confirm:$false

exit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值