J'essaie de créer un script PS simple à utiliser sur Solarwinds qui appuiera ce script et exécutera sur un tas d'ordinateurs. J'en ai essentiellement besoin pour exporter le nom de la machine et dites-moi une version logicielle particulière installée sur l'ordinateur. Pensez audit logiciel. Donc, par exemple, j'ai 5 ordinateurs. Je souhaite que ce script fonctionne sur les 5 machines et appendez des données sur un fichier CSV montrant leurs noms de machine, leur nom de l'application et la version de l'application pour uniquement les applications contenant «Office» dans le nom.
$Results =
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object $env:computername, displayName, DisplayVersion |
where-object {$_.DisplayName -match 'office'}
$Results | Export-CSV -Append -Path \\filepath\office.csv -NoTypeInformation
3 Réponses :
meilleure pour utiliser la commande invoke pour obtenir des données distantes.
$export = @()
$computers = Get-Content Machines.txt
foreach($computer in $computers){
$Results = @()
$Results = Invoke-Command -ComputerName $computer -ScriptBlock { Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall* | Select-Object $computer, displayName, DisplayVersion | where-object {$_.DisplayName -match 'office' } }
$Results += $export
}
$export | Export-CSV -Append -Path \filepath\office.csv -NoTypeInformation
Je ne pense pas que cela fonctionnera exactement depuis que je ne tire pas les noms de la machine à partir d'un fichier texte, mais cela l'exécute plutôt sur toutes les machines à l'aide de SolarWinds. Si ça a du sens? Cependant, je pense que c'est proche de ce dont j'ai besoin.
$ résultats + = $ exporter code> devrait être vice versa. $ export + = $ résultats code>. Mieux vaut assigner le tout pour acheter à l'exportation de consommer toutes les sorties, aucun résultat intermédiaire $ nécessaire alors.
Selon mon commentaire: rendements ici (court-circuité): p>
Modifiez votre
Select-Object CODE> Pour insérer une propriété calculée =>Select-objet @ {étiquette = 'nom informatique'; expression = {$ env: ordinateur informatique}}, déplacement Ayname, DisplayVersion Code>Est-ce le script exact? Parce que $ env: ComputerName n'est pas membre de l'objet que vous collectez.
@Lotpings qui travaillent juste pour moi. Merci