Как ссылаться на несколько строк в CSV для удаления программного обеспечения? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть сценарий, который запрашивает компьютеры AD для установки программного обеспечения в выходных данных в различные файлы .csv в зависимости от того, установлено ли программное обеспечение, удалено или неизвестно (невозможно проверить связь, недоступен RPC-сервер и т. Д.)

Теперь, когда у меня есть csv с компьютерами, на которых установлено программное обеспечение, я пытаюсь использовать Get-WmiObject для удаления программного обеспечения, но я не могу правильно ссылаться на CSV.Что я делаю неправильно?CSV выглядит следующим образом:

Name
comp1
comp2
comp3

Вот скрипт, который я в основном хочу запустить для каждой строки в CSV:

$computers = Import-Csv C:\Users\AaronGDL\Desktop\CompInstalled.csv

foreach ($Name in $computers) {
    Write-Host $_.Name
    $Remove = Get-WmiObject -Class Win32_Product -ComputerName $Name -Filter "Name >like '%Software%'"
    $Remove.Uninstall()
}

1 Ответ

0 голосов
/ 11 декабря 2018

Ваша переменная $computers заполняется из CSV, в котором есть столбец Name, поэтому вы получаете коллекцию объектов PowerShell, каждый из которых имеет свойство Name.Как таковое, это свойство, на которое вы должны ссылаться, чтобы вернуть каждое имя компьютера в вашем цикле ForEach, поэтому -ComputerName $Name должно стать -ComputerName $Name.name:

$computers = Import-Csv C:\Users\AaronGDL\Desktop\CompInstalled.csv

foreach ($Name in $computers) {
    Write-Host $Name.name
    $Remove = Get-WmiObject -Class Win32_Product -ComputerName $Name.name -Filter "Name >like '%Software%'"
    $Remove.Uninstall()
}

В качестве альтернативы вы можете сделать:

foreach ($Name in $computers.name) { .. }

А затем продолжайте ссылаться на $Name в цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...