News:

Ум заключается не только в знании, но и в умении прилагать знание на деле. Аристотель

Main Menu

powershell veeam

Started by salex, 12 January 2017, 21:17

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

salex

Хотелось бы чтоб народ посоветовал куда смотреть
есть 2012 серв, на нем вим бекап стоит
есть скрипт который подключаеться к Вмаверь Вцентру и распаковывает на кластере архивы ВМ
так вот скрипт отлично работает если запустить вручную, если запускать через планировщика родного
не выполняет условие одно в скрипте, а именно брать последний архив, то есть скрипт полностью нормально отрабатывается через планировщик, но все время то ли одну и туже дату архива берет, иногда меняет её но только не последнюю
запускается от админа доменного, пробовал разные учетки, не помогает, если вручную запустить все отлично..


ну и в ту же степь: не получается задать айпи адрес внутри виртуальной машины вмваре, досталось хозяйство а сам пока только начинающий
получаеться вимом распаковываеться архив ВМ, потом идет подключение к вцентру, включаеться ВМ грузиться ОС, и внутри ОС нада поменять айпи, пытался делать через команду netsh,
по примерам делал не получается выкидывает какие то ошибки не пойму шо хочет
 
работал ли кто с таким, есть смысл вылаживать конфиг на посмотреть ?

Уваров А.С.

#1
А скрипт где?

Quote from: salex on 12 January 2017, 21:17и внутри ОС нада поменять айпи, пытался делать через команду netsh,

Я так понял, вы хотите это сделать удаленно? Доступ к ADMIN$ этой машины есть?

salex

да удаленно, доступ есть на шару,
вот листинг конфига

Add-PSSnapin VeeamPSSnapin

$moduleList = @(
   "VMware.VimAutomation.Core",
   "VMware.VimAutomation.Vds",
   "VMware.VimAutomation.Cloud",
   "VMware.VimAutomation.PCloud",
   "VMware.VimAutomation.Cis.Core",
   "VMware.VimAutomation.Storage",
   "VMware.VimAutomation.HA",
   "VMware.VimAutomation.vROps",
   "VMware.VumAutomation",
   "VMware.VimAutomation.License")
$loaded = Get-Module -Name $moduleList -ErrorAction Ignore | % {$_.Name}
$registered = Get-Module -Name $moduleList -ListAvailable -ErrorAction Ignore | % {$_.Name}
$notLoaded = $registered | ? {$loaded -notcontains $_}
 
foreach ($module in $registered) {
   if ($loaded -notcontains $module) {
       Import-Module $module  }  }

$vcenter = "vcenter6"
$VM1 = "vADMS12-1"
$VM2 = "vADMS12-05"
$VM3 = "vADMS12-CC"
$VM4 = "vADMS12-07"
$VM5 = "vADMS12-01"

$IP = "172.17.160.168"
$SNM = "255.255.255.0"
$GW = "172.17.160.1"
$dns1 = "172.17.160.1"
$LN="Подключение по локальной сети"

$syncrep1 = Get-VBRBackupRepository -Name "Backup Repository 1" | Sync-VBRBackupRepository
$syncrep2 = Get-VBRBackupRepository -Name "Backup Repository 2)" | Sync-VBRBackupRepository

$server = Get-VBRServer -Name "vCenter.local.net"
$server1 = Get-VBRServer -Name "172.17.160.5"
$server2 = Get-VBRServer -Name "172.17.160.6"
$respool = Find-VBRViResourcePool -Name "vADMS12" -Server $server
$datastore1 = Find-VBRViDatastore -Name "Disk1" -Server $server1
$datastore2 = Find-VBRViDatastore -Name "Disk2" -Server $server1

$datastore1 = Find-VBRViDatastore -Name "Disk1" -Server $server2
$datastore2 = Find-VBRViDatastore -Name "Disk2" -Server $server2

$restorepoint1 = Get-VBRBackup -Name "vADMS12-1 Backup Job" | Get-VBRRestorePoint | Sort-Object $_.creationtime -Descending | select -Last 1
Start-VBRRestoreVM -RestorePoint $restorepoint1 -Server $server2 -VMName $VM1 -Datastore $datastore2 -ResourcePool $respool

$restorepoint1 = Get-VBRBackup -Name "vADMS12-05 Backup Job" | Get-VBRRestorePoint | Sort-Object $_.creationtime -Descending | select -Last 1
Start-VBRRestoreVM -RestorePoint $restorepoint1 -Server $server2 -VMName $VM2 -Datastore $datastore2 -ResourcePool $respool

$restorepoint1 = Get-VBRBackup -Name "vADMS12-CC  Backup Job" | Get-VBRRestorePoint | Sort-Object $_.creationtime -Descending | select -Last 1
Start-VBRRestoreVM -RestorePoint $restorepoint1 -Server $server2 -VMName $VM3 -Datastore $datastore2 -ResourcePool $respool

$restorepoint1 = Get-VBRBackup -Name "vADMS12-07 Backup Job" | Get-VBRRestorePoint | Sort-Object $_.creationtime -Descending | select -Last 1
Start-VBRRestoreVM -RestorePoint $restorepoint1 -Server $server1 -VMName $VM4 -Datastore $datastore2 -ResourcePool $respool


$restorepoint2 = Get-VBRBackup -Name "vADMS12-01 Backup Job" | Get-VBRRestorePoint | Sort-Object $_.creationtime -Descending | select -Last 1
Start-VBRRestoreVM -RestorePoint $restorepoint2 -Server $server1 -VMName $VM5 -Datastore $datastore1 -ResourcePool $respool

Connect-VIServer $vcenter

Start-VM -VM $VM1
Start-Sleep -Seconds 90
Get-NetworkAdapter -VM $VM1 | Where-Object {$_.Name -eq "Network Adapter 1"} | `
Set-NetworkAdapter -NetworkName "VMNet 160.x" -StartConnected:$true -Connected:$true -Confirm:$false

Start-VM -VM $VM2
Start-Sleep -Seconds 90
Get-NetworkAdapter -VM $VM2 | Where-Object {$_.Name -eq "Network Adapter 1"} | `
Set-NetworkAdapter -NetworkName "VMNet 160.x" -StartConnected:$true -Connected:$true -Confirm:$false

Start-VM -VM $VM3
Start-Sleep -Seconds 90
Get-NetworkAdapter -VM $VM3 | Where-Object {$_.Name -eq "Network Adapter 1"} | `
Set-NetworkAdapter -NetworkName "VMNet 160.x" -StartConnected:$true -Connected:$true -Confirm:$false

Start-VM -VM $VM4
Start-Sleep -Seconds 90
Get-NetworkAdapter -VM $VM4 | Where-Object {$_.Name -eq "Network Adapter 1"} | `
Set-NetworkAdapter -NetworkName "VMNet 160.x" -StartConnected:$true -Connected:$true -Confirm:$false


Start-VM -VM $VM5
Start-Sleep -Seconds 90
Get-NetworkAdapter -VM $VM5 | Where-Object {$_.Name -eq "Network Adapter 1"} | `
Set-NetworkAdapter -NetworkName "VMNet 160.x" -StartConnected:$true -Connected:$true -Confirm:$false




$netsh1 = '"netsh interface ipv4 set address name"подключение по локальной сети" static 172.17.160.168 255.255.255.0 172.17.160.1"'
$netsh2 = "C:\windows\system32\netsh.exe interface ipv4 set dnsservers $LN static $dns1 primary"
Invoke-VMScript -ScriptText $netsh1 -VM vADMS12-16 -GuestUser 'local\localadmin' -GuestPassword 'password' -ScriptType Bat

Disconnect-VIServer -Confirm:$false



все работает если запускать вручную, а если запускать через планировщик  как я описывал выше
этот параметр не работает  select -Last 1 брать последний архив
а вручную все ок
ну и не получаеться удаленно айпи поменять netsh использовал и так и этак пишет какую то неразборчивую билеберду в консоли еще ё и в непонятной кодировке

скрипт писал не я потому как я в этом ноль полный прошу помощи вдруг кто в теме тут

Уваров А.С.

Надо поковыряться в самом модуле PS, посмотреть как вычисляется select -Last 1. А для netsh смените кодировку консоли командой

chcp 1251
и посмотрите на что именно она ругается.

salex

кодировку менял
на ср866 вроде
все равно тузы в сообщении и др пробовал кириллическую нефига :(

Уваров А.С.

А если вывод направить в файл? А потом открыть чем нибудь умным, типа AkelPad.

salex

попробую правда не знаю как

Уваров А.С.

Добавьте в строку запуска скрипта:

Команда_запуска_скрипта | Out-File -filepath C:\logs\FileName.log -Append -NoClobber