2016-04-07 11 views
0

arasındayken dizeler arasındaki bir dizeyi nasıl düzenlerim Birkaç bilgisayardaki bir metin dosyasındaki bazı satırları değiştirecek bir powershell komut dosyası oluşturmaya çalışıyorum. Şu anda şifre, her metin dosyası için farklı olan bir rastgele sayı ve harf grubudur, ancak yeni şifre aynı olacaktır. Ben PowerShell v2 ve kullanıyorumPowershell: Bu dize rasgele bir sayı kümesi

3.

Recap:

1) örneğin "şifre" ve "SERIAL_NUMBER"

2) dize "/ * 57575757hsdhdh" arasındaki dizesini değiştirin Her metin dosyası için farklı rastgele sayılar ve harfler bir gruptur. Tüm metin dosyaları için istediğim "/ * 123456" olarak değiştirildi.

{ 
    "http_proxy_password" : "/*21126D837687BDE38B4A85A9D6977E0243246C194934A564DE653DAFF556D5A1", 
    "http_proxy_username" : "", 
    "password" : "/*57575775hsdhdh", 
    "serial_number" : "65456N", 
    "socks_password" : "/*5C1F18F57883BC94FE3B82DFD1957973A422E1BFD1BFB5F0938AC2B726A53858", 
    "socks_username" : "", 
    "username" : "ABC" 

cevap

0

Eh, bu:

3) Ayrıca, metnin sonunda ben İÇİN "DEF" "ABC"

4) İşte gelen kullanıcı adını değiştirmek için Metin dosyası olduğunu istiyorum Muhtemelen unuttuğunuz eksik } hariç, benim için bir json dosya gibi görünüyor.

Dosyayı okumak için Get-Content cmdlet'ini kullanabilirsiniz. ConvertFrom-Json cmdlet ile dizeyi json nesnesine dönüştürebilirsiniz. Sonra ConvertTo-Json kullanarak erişebilir ve istenilen özelliklerini değiştirmek ve son olarak bir json dizeye geri dönüştürebilirsiniz:

$contennt = Get-Content 'Your_file_path_here' 

$object = $contennt | ConvertFrom-Json 
$object.password = '/*123456' 
$object.username = 'DEF' 
$object | ConvertTo-Json 

Çıktı:

{ 
    "http_proxy_password": "/*21126D837687BDE38B4A85A9D6977E0243246C194934A564DE653DAFF556D5A1", 
    "http_proxy_username": "", 
    "password": "/*123456", 
    "serial_number": "65456N", 
    "socks_password": "/*5C1F18F57883BC94FE3B82DFD1957973A422E1BFD1BFB5F0938AC2B726A53858", 
    "socks_username": "", 
    "username": "DEF" 
} 

Not: Eğer json yazmak istiyorsanız dosyaya geri dönün, Set-Content cmdlet'ini kullanabilirsiniz.