2015-10-19 6 views
0

Почему переменная $ servername корректно расшифровывается в $servername ниже, но не в следующей строке Get-Process -ComputerName $servername?Переменная Powershell не будет расширяться в команде Get-Process

1) Если я вручную установил $servername="example-server" на примерный сервер в этом списке (копирование/вставка) в цикле, он работает. 2) Если я вставляю строку $servername | Measure-Object -Character в цикле, чтобы попытаться проверить правильность содержимого переменной (скрытое пространство или что-то еще), я не получаю никакого вывода. Однако, если я вручную назначу $servername и запустим, он отобразит правильное количество символов в строке.

$servers = Import-CSV C:\temp\AllServers.csv 
foreach ($servername in $servers) 
    { 
    $servername 
    Get-Process -ComputerName $servername | Where-Object {$_.Handles -gt 1000} | Sort-Object Handles -Descending 
    } 

Есть ли какая-то обработка или форматирование, необходимые с выделенными csv массивами, которые мне не хватает?

Содержание AllServers.csv - это одна колонка, первая строка которой является заголовком столбца servers.

+1

'Get-Process -ComputerName $ servername.servers' – PetSerAl

+0

@PetSerAl Ах, пропустили это, мои извинения. –

+1

Как @PetSerAl указывает на то, что ваша переменная $ servername не является строкой, а скорее объектом строки csv. Вы должны использовать правильное поле в своем вызове. Также -ComputerName может принимать массив строк напрямую. –

ответ

0

Замечания @PetSerAl и @Etan Reisner выше были правильными ... Мне нужно было называть точный объект поля в строке: $servername.server в этом случае работал.

$servers = Import-CSV C:\temp\AllServers.csv 
foreach ($servername in $servers) 
    { 
    $servername.server 
    Get-Process -ComputerName $servername.server | Where-Object {$_.Handles -gt 1000} | Sort-Object Handles -Descending 
    }