Domanda

$Computers = Get-QADComputer -sizelimit 5
.

Restituisce un elenco di cinque computer.Io loop con

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

per ottenere solo il computererName da $ computer. Ma quando provo a passarlo per iniziare-lavoro come questo:

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

Non riesco a eseguire un computer $. Nome all'interno di $ scriptfile.Devo passarlo come $ computer.name e chiamarlo come $ args [0].Ma poi perdo tutte le altre proprietà (sto usando un mucchio all'interno di $ scriptfile.)

Cosa non sto arrivando qui?Cosa chiameresti $ computer?E cosa chiameresti $ computer.name?

SUNE :)

È stato utile?

Soluzione

Dovresti essere in grado di ottenere la proprietà del nome con $ args [0] .name.Se si desidera accedere al parametro Nome come: $ Computer.name, è necessario definire un parametro in $ scriptfile:

param(
   $Computer
)

$Computer.name
.

A proposito 'Non puoi farlo:

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

PowerShell espande solo il valore $ Computer.Mettilo in una sotto-espressione:

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

Altri suggerimenti

Esattamente così, questo è il modo in cui avrei scritto qualcosa di simile:

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

È quindi possibile recuperare i lavori come questo:

#Retrieve Jobs
Get-Job | Receive-Job
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top