2015-10-19 34 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

'獲取進程-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 
    }