PowerShell get-qadcomputer + WMI query

Por favor, alguém me pode dizer como usar

***Get-QADComputer -LdapFilter "(operatingsystem=*server*)"***

no meu guião abaixo. (Eu posso fazê-lo trabalhar com o arquivo de texto que apenas falha no Bit get-qadcomputer)

***function inventory {
PROCESS {
$os = gwmi win32_operatingsystem -comp $_
$cs = gwmi win32_computersystem -comp $_
$obj = new-object psobject
$obj | add-member noteproperty Name $os.csname
$obj | add-member noteproperty RebootDate $os.ConvertToDateTime($os.LastBootUpTime)
$obj | add-member noteproperty Manufacturer $cs.manufacturer
$obj | add-member noteproperty Model $cs.model
$obj | add-member noteproperty Operating_System $os.caption
$obj | add-member noteproperty Architecture $os.OSArchitecture
$obj | add-member noteproperty Service_Pack $os.ServicePackMajorVersion
write-output $obj
}
}
gc C:\scripts\lastreboot\syn_pc.txt -ErrorAction SilentlyContinue | inventory | Export-Csv c:\scripts\lastreboot\inventory2.csv***
Author: user1767744, 2013-07-24

1 answers

Este problema que está a enfrentar é que a função inventário que escreveu foi desenhada para usar $_ directamente, e está a assumir que a variável $_ será apenas uma cadeia de caracteres. O comando funciona inicialmente porque você está a extrair uma lista de nomes de um ficheiro, que lhe está a dar uma lista de nomes que são do tipo [String], e a passar esta colecção/lista de cadeias para o pipeline para o inventário usar.

Mas ao usar o Get-QADComputer, vai ter objectos do tipo [seleccionados.Busca.ActiveRoles.ArsPowerShellSnapIn.Dado.ArsComputerObject] que é muito mais do que apenas uma lista de nomes. Os objectos têm uma propriedade de nome, que presumo que esteja mesmo atrás, juntamente com outras informações. Tens de retirar apenas a parte do nome e passar isso para o oleoduto.

Então tens duas opções:

  • Alterar a função de inventário para contabilizar a diferença nos tipos de entrada a partir do gasoduto (cadeias simples que contêm os nomes justos, ou objetos que têm uma propriedade de nome e usar apenas a porção de nome)

  • Mudar a forma como você está chamando o script

Aqui está o comando, acho que queres
 Get-QADComputer -LdapFilter "(operatingsystem=*server*)" | Select -ExpandProperty Name | inventory | Export-Csv c:\scripts\lastreboot\inventory2.csv

Anote o nome Select-ExpandProperty, que pega no ADObject e só vai passar o nome ao longo do oleoduto que a sua função de inventário espera

 0
Author: Schlauge, 2013-07-24 03:30:54