Kevin
Kevin

Reputation: 3

powershell use CSV to create variables

I am a total novice when it comes to powershell. I would like to create a little script to save me a lot of time and after a little research, I am sure it can be achieved using Import-CSV command.

Basically I need to run a command on multiple PC's but the variable is different for each command. I wish to pull that variable from a comparision in a CSV file. So find current Hostname, then use that hostname to find the corresponding asset number in the CSV and then use that asset number as a variable in the final comamnd.

Looking at other examples on here, I have this so far:

$Asset = @()
$Host = @()

Import-Csv -Path "C:\hostnametoasset.csv" |`
ForEach-Object {
    $Asset += $_.Asset
    $Host += $_.Host
}

$Hostname = (Get-WmiObject -Class Win32_ComputerSystem -Property Name).Name

if ($Host -contains $Hostname)
{
C:\BiosConfigUtility64.exe /setvalue:"Asset Tracking Number","$Asset"
}

Section of the CSV:

Asset,Host
10756,PCD001
10324,PCD002
10620,PCD003

Any help would be greatly appreciated.

Upvotes: 0

Views: 858

Answers (1)

WayneA
WayneA

Reputation: 339

Couple of different points... Importing a CSV results in an array of objects that you can filter on.

$Lines = Import-Csv -Path "C:\hostnametoasset.csv"
$Line = $Lines | ?{$_.host -match $ENV:COMPUTERNAME}

You can then use the filter results directly by accessing the member you need.

C:\BiosConfigUtility64.exe /setvalue:"Asset Tracking Number","$($Line.Asset)"

NOTE: I cannot test this directly right now so hopefully I got the syntax right.

Upvotes: 3

Related Questions