Вы можете использовать блок param
и определить идентификатор по умолчанию как подстроку имени компьютера.
param (
$ID = (@($ENV:computername) | ForEach-Object {$_.Substring($_.length - 3,3)})
)
$filePath = "c:\users\Ara\Desktop\parameters.csv"
$machineParams = Import-CSV $filePath | Where-Object {$_.branch -eq $ID}
$info = if ($machineParams) {
$machineParams
} else {
# Use a throw to error out when invalid csv
throw "no params for $ID"
}
$info
Start-Process -FilePath "c:\users\Ara\Desktop\setup.msi" -ArgumentList “/qf”, "DATABASE_ID=$($info.param1)" , "ODBC_DATABASE_NAME=$($info.ODBC_param2)" , "ODBC_ENGINE_NAME=$($info.param3)" -wait
Затем вы можете вызвать свой скрипт, и когда вы определите параметр ID, он переопределит схему по умолчанию, а при вызове без будет использовать схему имени компьютера.
# Use computername scheme
install.ps1
# Use defined ID
install.ps1 -ID 188
Редактировать:Обновлено с помощью предложений @LotPings для фильтрации ранее