Передача переменную со свойствами для AurkList, потере свойства

StackOverflow https://stackoverflow.com//questions/9656175

  •  11-12-2019
  •  | 
  •  

Вопрос

$Computers = Get-QADComputer -sizelimit 5
.

Возвращает список из пяти компьютеров.Я петлю с

foreach($computer in $computers) {
echo "and then I can do this $computer.name"
.

Чтобы получить только компьютерное имя от $ Computers. Но когда я пытаюсь передать его на начать работу, как это:

    Start-Job -FilePath $ScriptFile -Name $Computer.Name -ArgumentList $Computer
.

Я не могу сделать $ computer.name внутри $ scriptfile.Я должен пройти так, как $ Computer.name и называй это как $ args [0].Но тогда я теряю все другие свойства (я использую кучу внутри $ ScriptFile.)

Что я не получаю сюда?Что бы вы назвали $ Computer?И что бы вы позвонили $ Computer. Немайте?

Sune :)

Это было полезно?

Решение

Вы должны быть в состоянии получить свойство имени с $ args [0] .Name.Если вы хотите получить доступ к параметрам имени, как так: $ Computer.name, то вам нужно определить параметр в $ ScriptFile:

param(
   $Computer
)

$Computer.name
.

Кстати «вы не можете сделать это:

echo "and then I can do this $computer.name"
.

PowerShell расширяет только значение $ Computer.Поместите его в подрыв:

echo "and then I can do this $($computer.name)"
.

Другие советы

Точно так, вот как я бы написал что-то подобное:

#Get Services
$Services = Get-Service
#Limit results to the first 5 entries
$Services = $Services[0..4]
#Loop through services
foreach ($Service in $Services)
{
    #For each Service run a basic echo to host to prove that the Service was passed in successfully
    Start-Job -ScriptBlock { param ($Service) Write-Host "Service Name is $($Service.Name)" } -ArgumentList $Service
}
.

Вы можете получить такие задания:

#Retrieve Jobs
Get-Job | Receive-Job
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top