我已閱讀Read a Csv file with powershell and capture corresponding data並已能夠放在一起的一些代碼,但它並沒有給我我想要的,我試圖讓它讀取CSV,找到在列1中的服務器並在Internet Explorer中打開第2列中的IP地址。在powershell中讀取CSV並返回等效數據
function Open-RAC
{
param
(
[Parameter(Mandatory = $true)]
[string]$ComputerName
)
$ServerName = @()
$IMM = @()
Import-Csv C:\Scripts\ComputerList\IMMs.CSV |
ForEach-Object {
$ServerName += $_.ServerName
$IMM += $_.IMM
}
$inputNumber = $ComputerName#Read-Host -Prompt "Short Server Name"
if ($ServerName -contains $inputNumber)
{
Write-Host "DRAC Exist"
Write-Host "Servername : $inputNumber"
$Where = [array]::IndexOf($ServerName, $inputNumber)
Write-Host "Where : $Where"
Write-Host "DRAC IP Address: " $IMM[$Where]
$URL = $IMM[$Where]
Write-Host "$URL"
$IE = new-object -com internetexplorer.application
$IE.navigate2("http:\\$URL")
$IE.visible = $true
}
Else
{
Write-Host " That server does not have a DRAC or you mistyped the server name"
}
但是,這不是給我正確的IP地址回來,但無論在CSV中的最後一個。
任何幫助表示讚賞。
什麼是$計算機名變量在做什麼?如果我使用測試csv將該行更改爲'$ inputNumber =「server1」',它對我來說工作正常,所以您在IF語句中的邏輯很好。你確定你正在按照預期將服務器名變成$ inputNumber嗎?在IF語句之前,添加一行只有'$ inputNumber'的行,以便在變量到達IF語句之前可以看到該變量中的內容。 –
我忘記了部分代碼,它是一個函數,當您調用該函數時$ Computername被設置。並且我一直得到正確的名稱直到最後,但它不會返回我期望的值 – Luke
不確定您想要分配給$ inputNumber的行上 - 用戶輸入或名稱該腳本正在運行的計算機上。爲了獲取用戶輸入: $ inputNumber =讀 - 主機「輸入服務器名稱:」 獲取計算機名稱: $ inputNumber = $ ENV:計算機 這些工作我的是區分大小寫的告誡。看起來IndexOf功能區分大小寫,所以如果輸入「Win7-Laptop」,但是.CSV文件具有「WIN7-LAPTOP」,則IndexOf返回-1,最終得到最後一個IP地址。 –