2012-09-11 21 views
11

C: \ test.txt bir metin dosyasını okumak ve belirli bir değeri almak için bir yol var mı?Powershell bir metin dosyasından bir değişken alınıyor

yani dosya şuna benzer:

$MidasServer= (from file midasServer value) 

çizgiyi anlayamayacaksınız:

serverName=serv8496 
midasServer=serv8194 

Bu dosya örneğin bazı şekilde benim komut bir değişkenin değerini ayarlamak istediğiniz referansın olduğu sayı.

Bunu yapmanın herhangi bir yolu var mı?

cevap

15

Evet, dosyayı okumak her satırı bölmek ve Ad ve Değer parametrelerine bölünmüş sonucu atayın: o dosya yani ile gösterilen anahtar değer çiftleri listesi tam olarak nasıl göründüğünü ise

Get-Content file.txt | Foreach-Object{ 
    $var = $_.Split('=') 
    New-Variable -Name $var[0] -Value $var[1] 
} 
+0

Bu benim için çalışıyor, ama boş bir dize olduğu için adı oluşturulamadı belirten bir hata alıyorum. Neden? – Pred

4

Eğer

karma tabloya bir veya birden fazla anahtar ve değer çiftlerini içeren bir dize dönüştüren hangi ConvertFrom-StringData bir göz olmalıdır sonra oturum eşittir. Her bir anahtar/değer çiftinin ayrı bir satırda olması gerektiğinden, burada dizeler genellikle giriş biçimi olarak kullanılır. Bir metin dosyası örnekte sadece veri içeriyorsa

Yani $values.midasServer değer serv8194 olurdu bir hashtable

$Path = "C:\temp\test.txt" 
$values = Get-Content $Path | Out-String | ConvertFrom-StringData 
$values.midasServer 

oluşturmak için bu yapabilirdi. Özelliklerin dosyaya göre nerede olduğunu bilmeye gerek yok. Girdi dosyanız, aynı sonucu verecek olan eşittir işaretinin etrafında değişken öndeki ve sondaki boşluğa sahip olabilir.

kullanımı durumda bağlı olarak o bir adım öteye alabilir ve en az PowerShell v3 veya işlemi kolaylaştırabilirsiniz yüksek varsa o hashtable'a

New-Object -TypeName pscustomobject -Property $values 

gelen özel bir nesnesi oluşturmak (bir istiyorum varsayarak özel psobject)

$values = [pscustomobject](Get-Content $Path -Raw | ConvertFrom-StringData) 
$values.midasServer 
İlgili konular