none
workflow powershell RRS feed

  • Вопрос

  • Написал блок workflow

    workflow rescanhbahost {
        param (
        [string[]]$vmhost1
        )
        foreach -parallel ($vmhost2 in $vmhost1)
        {
        Get-VMHost $vmhost2 | Get-VMHostStorage -RescanAllHba
        Get-VMHost $vmhost2 | Get-VMHostStorage -RescanVmfs
        }
        }

    Дальше запускаю тест:

    PS C:\> rescanhbahost -PSComputerName "vmhost-09" 
    Команда выполнилась, но ничего не произошло.


    Дальше просто выполняю без workflow

    PS C:\> Get-VMHost "vmhost-09" | Get-VMHostStorage -RescanAllHba

    Получаю вывод и операция выполнилась на хосту.

    SoftwareIScsiEnabled          
    --------------------          
    False                         
    PS C:\>

    Что я не так делаю в workflow ?


    • Изменено Sergey O O 1 июня 2017 г. 9:47

Ответы

  • Написал блок workflow

    workflow rescanhbahost {
        param (
        [string[]]$vmhost1
        )
        foreach -parallel ($vmhost2 in $vmhost1)
        {
        Get-VMHost $vmhost2 | Get-VMHostStorage -RescanAllHba
        Get-VMHost $vmhost2 | Get-VMHostStorage -RescanVmfs
        }
        }

    Дальше запускаю тест:

    PS C:\> rescanhbahost -PSComputerName "vmhost-09" 
    Команда выполнилась, но ничего не произошло.


    Дальше просто выполняю без workflow

    PS C:\> Get-VMHost "vmhost-09" | Get-VMHostStorage -RescanAllHba

    Получаю вывод и операция выполнилась на хосту.

    SoftwareIScsiEnabled          
    --------------------          
    False                         
    PS C:\>

    Что я не так делаю в workflow ?


    Ключевые места я выделил

    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа KazunEditor 5 июня 2017 г. 9:54
    Модератор

Все ответы

  • Написал блок workflow

    workflow rescanhbahost {
        param (
        [string[]]$vmhost1
        )
        foreach -parallel ($vmhost2 in $vmhost1)
        {
        Get-VMHost $vmhost2 | Get-VMHostStorage -RescanAllHba
        Get-VMHost $vmhost2 | Get-VMHostStorage -RescanVmfs
        }
        }

    Дальше запускаю тест:

    PS C:\> rescanhbahost -PSComputerName "vmhost-09" 
    Команда выполнилась, но ничего не произошло.


    Дальше просто выполняю без workflow

    PS C:\> Get-VMHost "vmhost-09" | Get-VMHostStorage -RescanAllHba

    Получаю вывод и операция выполнилась на хосту.

    SoftwareIScsiEnabled          
    --------------------          
    False                         
    PS C:\>

    Что я не так делаю в workflow ?


    Ключевые места я выделил

    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа KazunEditor 5 июня 2017 г. 9:54
    Модератор
  • rescanhbahost -vmhost1 "vmhost-09"

    команда выполняется, но ничего не происходит
  • workflow rescanhbahost 
    {
        param (
    		[string[]]$vmhost
        )
        foreach -parallel ($vm in $vmhost)
        {
    		InlineScript 
    		{
    			Get-VMHost $using:vm | Get-VMHostStorage -RescanAllHba
    			Get-VMHost $using:vm | Get-VMHostStorage -RescanVmfs
    		}
        }
    }
    rescanhbahost -vmhost "vmhost-09"

    • Предложено в качестве ответа Vector BCOModerator 6 июня 2017 г. 10:26
    6 июня 2017 г. 10:25
    Отвечающий
  • Get-VMHost : Имя "Get-VMHost" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличи
    е и правильность пути, после чего повторите попытку.
    rescanhbahost:8 знак:8
    +
        + CategoryInfo          : ObjectNotFound: (Get-VMHost:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
        + PSComputerName        : [localhost]
     
    Get-VMHost : Имя "Get-VMHost" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличи
    е и правильность пути, после чего повторите попытку.
    rescanhbahost:8 знак:8
    +
        + CategoryInfo          : ObjectNotFound: (Get-VMHost:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
        + PSComputerName        : [localhost]
  • А если поменять на?

    InlineScript 
    {
    	Add-PSSnapin VMware.VimAutomation.Core
    	Get-VMHost $using:vm | Get-VMHostStorage -RescanAllHba
    	Get-VMHost $using:vm | Get-VMHostStorage -RescanVmfs
    }

    Отвечающий
  • Get-VMHost : 09.06.2017 11:47:56    Get-VMHost        You are not currently connected to any servers. Please connect first using a Connect cmdlet.    
    rescanhbahost:8 знак:8
    +
        + CategoryInfo          : ResourceUnavailable: (:) [Get-VMHost], ViServerConnectionException
        + FullyQualifiedErrorId : Core_BaseCmdlet_NotConnectedError,VMware.VimAutomation.ViCore.Cmdlets.Commands.GetVMHost
        + PSComputerName        : [localhost]
     
    Get-VMHost : 09.06.2017 11:47:57    Get-VMHost        You are not currently connected to any servers. Please connect first using a Connect cmdlet.    
    rescanhbahost:8 знак:8
    +
        + CategoryInfo          : ResourceUnavailable: (:) [Get-VMHost], ViServerConnectionException
        + FullyQualifiedErrorId : Core_BaseCmdlet_NotConnectedError,VMware.VimAutomation.ViCore.Cmdlets.Commands.GetVMHost
        + PSComputerName        : [localhost]
  • InlineScript 
    {
    	Add-PSSnapin VMware.VimAutomation.Core
    	Connect-VIServer 'Server' -User 'UserName' -Password '$password'
    	Get-VMHost $using:vm | Get-VMHostStorage -RescanAllHba
    	Get-VMHost $using:vm | Get-VMHostStorage -RescanVmfs
    }
    Указать Server,UserName,Password.
    • Изменено KazunEditor 9 июня 2017 г. 8:58
    Отвечающий
  • креденшелы использовать текущие не получится? У меня конект через вцентр. А тут я понимаю, будет напрямую к хосту и креденшилами хоста, правильно?
  • креденшелы использовать текущие не получится? У меня конект через вцентр. А тут я понимаю, будет напрямую к хосту и креденшилами хоста, правильно?

    Я не знаком с Vmware. Из документации, следует, что можно указывать Vcenter и если текущие учетные данные позволяют, то можно не указывать UserName & Pass:

    Connect-VIServer -Server vcenter01

    Отвечающий
  • workflow rescanhbahost
    {
        param (
            [string[]]$vmhost
        )
        foreach -parallel ($vm in $vmhost)
        {
            InlineScript
            {
                Add-PSSnapin VMware.VimAutomation.Core
                Connect-VIServer "vcenter01"
                Get-VMHost $using:vm | Get-VMHostStorage -RescanAllHba
                Get-VMHost $using:vm | Get-VMHostStorage -RescanVmfs
            }
        }
    }

    Так работает, но не очень быстро. Теряется время на подключение к хосту, секунд 30. Хочется ускорить процесс выполнения рескана.


    Например у меня есть сценарий, по которому делается рескан по очереди, но это по очереди. Хотелось распаралелить операцию. Почитал, что можно через workflow, но не все так гладко.

    9 июня 2017 г. 10:38
  • Вот я сейчас таким пользуюсь, но повторюсь, он выполняет рескан по очереди, что занимает время:

    $acluster = $null
    $acluster = read-host "Enter Cluster Name"
    $b1 = Get-VMHost -Location $acluster | Sort-Object name
    foreach ($a1 in $b1)
        {
        write-host $a1.Name
        Get-VMHost $a1.Name | Get-VMHostStorage -RescanAllHba
        Get-VMHost $a1.Name | Get-VMHostStorage -RescanVmfs
        
        }




    • Изменено Sergey O O 9 июня 2017 г. 10:42
    9 июня 2017 г. 10:39
  • Использовать Session:

    workflow rescanhbahost
    {
        param (
            [string[]]$vmhost,
    		$s
        )
        foreach -parallel ($vm in $vmhost)
        {
            InlineScript
            {
                Add-PSSnapin VMware.VimAutomation.Core
                Connect-VIServer "vcenter01" -Session $using:s
                Get-VMHost $using:vm | Get-VMHostStorage -RescanAllHba
                Get-VMHost $using:vm | Get-VMHostStorage -RescanVmfs
            }
        }
    }
    
    $s = Connect-VIServer "vcenter01"
    rescanhbahost -vmhost "vm01" $s.SessionId


    • Изменено KazunEditor 9 июня 2017 г. 10:53
    9 июня 2017 г. 10:51
    Отвечающий