Сценарий Powershell получает версии Платформы.NET от удаленных ПК

У меня есть следующий сценарий.

Get-Content comps.csv | Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | Get-ItemProperty -name Version,Release -EA 0 | Where { $_.PSChildName -match '^(?!S)\p{L}'} | Select PSChildName, Version, Release

Мое comps.csv содержание

Name,Type,Description, ALYTAUS-PC,Computer,, AUGUSTE-PC,Computer,, AUSRA-PC,Computer,, BIRZU-PC,Computer,, VYTAUTO-PC1,Computer,, Я получил то сообщение для каждого объекта в csv:

Get-ChildItem : The input object cannot be bound to any parameters for the command either because the command does n ot take pipeline input or the input and its properties do not match any of the parameters that take pipeline input. At line:1 char:38 + Get-Content comps.csv | Get-ChildItem <<<< 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | + CategoryInfo : InvalidArgument: (VYTAUTO-PC1,Computer,,:PSObject) [Get-ChildItem], ParameterBindingE xception + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.GetChildItemCommand

1
задан 24 July 2015 в 10:18
1 ответ

Get-ChildItem ожидает путь от конвейера, а не имя компьютера. Первое, что вам нужно, это получить компьютерный объект с его атрибутами (имя, тип, описание) из CSV-файла:

Get-Content -Path "c:\temp\servers.csv" | ConvertFrom-Csv | ForEach-Object -Process {
    Write-Host "Server name: " -NoNewline
    Write-Host $_.Name
}

Затем вам нужно выполнить команды удаленно с помощью Invoke-Command:

Invoke-Command -ComputerName $_.Name -ScriptBlock {
    Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP'
}

Наконец:

Get-Content -Path "c:\temp\servers.csv" | ConvertFrom-Csv | ForEach-Object -Process {
    Invoke-Command -ComputerName $_.Name -ScriptBlock {
        Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP'
    }
}

Для запуска блока сценария с указанными учетными данными используйте параметр -Credential в Invoke-Command.

2
ответ дан 3 December 2019 в 20:50

Теги

Похожие вопросы