Pregunta

$Computers = Get-QADComputer -sizelimit 5

Devuelve una lista de cinco computadoras.I bucle con

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

para obtener solo el nombre computador de $ computadoras. Pero cuando intento pasarlo al start-trabajo como este:

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

No puedo hacer una computadora $. Nombre dentro de $ ScriptFile.Tengo que pasarlo como $ Computer.Name y llámalo como $ args [0].Pero luego pierdo todas las demás propiedades (estoy usando un grupo dentro de $ ScriptFile).

¿Qué no estoy llegando aquí?¿Cómo llamarías $ computadora?¿Y qué llamarías $ Computer.Name?

SUNE :)

¿Fue útil?

Solución

Debe poder obtener la propiedad Nombre con $ Args [0] .Name.Si desea acceder al parámetro Nombre, así: $ Computer.Name, entonces necesita definir un parámetro en $ ScriptFile:

param(
   $Computer
)

$Computer.name

Por cierto, no puedes hacer esto:

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

PowerShell expande solo el valor $ computadora.Póngalo en una sub-expresión:

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

Otros consejos

Exactamente así, así es como escribiría algo similar:

#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
}

Puede recuperar los trabajos como este:

#Retrieve Jobs
Get-Job | Receive-Job

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top