2017-01-25 2 views
0

У меня есть сценарий, который я использую его для нескольких задач, таких какНесколько объявлений переменных

  1. Создать папку в Vsphere
  2. Создать ResourcePools
  3. Создание виртуальной машины (VMware)
  4. Настройка IP/DNS
  5. Добавьте его в домен, & hellip;

Для этого мне нужно несколько входов, таких как имя виртуальной машины, имя сервера vCenter, имя пользователя, пароль и т. Д. Как объявить входные переменные извне (отдельно от основного сценария), а также сделать их универсальными в образе.

Я пробовал использовать процедуру ниже, но это дает мне ошибку переполнения глубины звонка.

VARIABLE_DECLARATION.ps1:

VariableDeclaration = @{ 
    [CmdletBinding()] 
    Param (
    [Parameter(Mandatory=$True)] 
    [Parameter(ValueFromPipeline=$true)] 
    [int]$CustomerCID = '10000'; 
    [string]$CustomerName = "ABCcorp"; 
    [string]$vCenterName = "vCenter.ABCcorp.com"; 
    [string]$vCenterUserName = "[email protected]"; 
    [string]$vCenterPassword = "ABCcorp123!"; 
    [string]$CustomerPODLocation = "VW1"; 
    [string]$DatacenterName = "ABCcorpDC"; 
    [string]$ClusterName = "ABCcorpcluster"; 
    [string]$InfraResourcePoolName = ($CustomerCID + "-" + $CustomerName + "-" + "Infrastructure"); 
    [string]$DesktopResourcePoolName = ($CustomerCID + "-" + $CustomerName + "-" + "Desktop"); 
    [string]$CustomerFolderName = ($CustomerCID + "-" + $CustomerName); 
    [string]$ConnectionType = "xConnect"; 
    [int]$VLANID = '237'; 
    [string]$CustomerDVPortGroupName = ($CustomerPODLocation + "-" + $ConnectionType + "-" + $CustomerCID + "-" + $CustomerName + "-" + $VLANID); 
    [int]$NumberofPorts = '1024'; 
    [string]$AD1computername = ($CustomerCID + "-RADSVR01-v" + $CustomerName + ".vdi"); 
    [string]$AD2computername = ($CustomerCID + "-RADSVR02-v" + $CustomerName + ".vdi"); 
    [string]$sourcetemplate = "BaseWin2012R2"; 
    [string]$description = "ABCcorp Infra Systems"; 
    [string]$OSCustomizationspec = "ABCcorp"; 
    [string]$AD1IP = "10.0.0.10"; 
    [string]$AD2IP = "10.0.0.11"; 
    [string]$SNM = "255.255.255.0"; 
    [string]$DG = "10.0.0.1"; 
    [string]$DNS = "10.0.0.2"; 
    [string]$HostUsername = "root"; 
    [string]$HostPassword = (ConvertTo-SecureString -String "ABCcorp123" -AsPlainText -Force); 
    [string]$HostCredential = (New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $HostUsername, $HostPassword) 
) 
} 
+0

Не могли бы вы помочь мне с небольшим примером? –

ответ

0

определение параметров PowerShell не работает таким образом. Создайте функцию для каждой из ваших задач с параметрами, необходимыми для этой конкретной функции/задачи. Чтобы сделать доступными функции, поместите их в сценарий и dot-source, или поместите их в module и load that module.

Пример для дота-поиск сценария PowerShell:

vm-functions.ps1:

function New-VSphereFolder { 
    Param(
     [Parameter(Mandatory=$true, ValueFromPipeline=$true)] 
     [string]$FolderName, 

     [Parameter(Mandatory=$false, ValueFromPipeline=$true)] 
     [string]$vCenterName = "vCenter.ABCcorp.com", 

     [Parameter(Mandatory=$false, ValueFromPipeline=$true)] 
     [string]$Username = "[email protected]", 

     [Parameter(Mandatory=$false, ValueFromPipeline=$true)] 
     [string]$Password = "ABCcorp123!", 

     ... 
    ) 

    ... 
} 

function New-ResourcePool { 
    ... 
} 

Dot-исток сценарий сценарий, чтобы сделать функции доступными в текущем контексте, а затем использовать любую функцию необходимо:

PS C:\>. C:\path\to\vm-functions.ps1 
PS C:\>New-VSphereFolder -FolderName ... 
...

Для получения дополнительной информации о параметрах в сценариях PowerShell/функции см here и here.

+0

Спасибо большое, и в чем я хочу включить Try-Catch для обработки ошибок/исключений? Как и где я могу включить это? –

+0

Пожалуйста, разместите новый вопрос, описывающий, какие ошибки вы хотите обработать. Включите [mcve] кода, который у вас есть в настоящее время, и опишите, что с кодом не работает, как вы ожидали. Если вы ищете учебник PowerShell, проконсультируйтесь с предпочтительной поисковой системой. –

Смежные вопросы