none
Powershell сравнение и замена строчки в файле RRS feed

  • Вопрос

  • Подскажите, как реализовать примерный алгоритм

    Имеется ini файл, с содержанием вида parameter=key. Необходимо считать из файла определенную строку, сравнить два key, если значения не совпадают то изменить в файле этот ключ и сохранить.

    $ADUser = ([AdsiSearcher]"(&(objectCategory=person)(objectClass=User)(samAccountName=$($ENV:UserName)))").FindAll()
    $ADUserIpphone = $ADUser.Properties.ipphone
    
    #Есть папка?
    $programpath = "C:\Program Files (x86)\program" 
    $isprogrampath = Test-Path $programpath
    
    if ($isprogrampath -eq "True") {
        #Есть файлы конфига?
        $programconfigserver = "$env:APPDATA\cx\client\data\logon.dat"
        $isprogramserver = Test-Path $programconfigserver
        $programconfiguser = "$env:USERPROFILE\AppData\Local\program.ini"        
        $isprogramuser = Test-Path $programconfiguser
    
        if ($isprogramserver -eq "True" -AND $isprogramuser -eq "True")  {
            #Хватаем конфиг
            $content = get-content -Path $programconfiguser | Select-String -Pattern "paramenter=*"
            if ($content -eq 'paramenter=$ADUserIpphone') {
            $content
                    
            }
    
        }
        
    }

    3 марта 2017 г. 12:25

Ответы

  • if ($isprogramserver -eq "True" -AND $isprogramuser -eq "True")  {
        #Хватаем конфиг
        $content = get-content -Path $programconfiguser
        if ($content -notcontains "paramenter=$ADUserIpphone") {
    		$content -replace "paramenter=.+","paramenter=$ADUserIpphone" | Out-File $programconfiguser
        }
    }

    • Предложено в качестве ответа Vector BCOModerator 6 марта 2017 г. 9:34
    • Помечено в качестве ответа Dirty Sanche4 6 марта 2017 г. 10:40
    3 марта 2017 г. 13:43
    Отвечающий
  • if ($isprogramserver -eq "True" -AND $isprogramuser -eq "True")  {
        #Хватаем конфиг
        $content = get-content -Path $programconfiguser
    	$update = $false
        if ($content -notcontains "paramenter=$ADUserIpphone") {
    		$content = $content -replace "paramenter=.+","paramenter=$ADUserIpphone"
    		$update=$true
        }
    	 if ($content -notcontains "paramenter1=1") {
    		$content = $content -replace "paramenter1=.+","paramenter1=2"
    		$update=$true
        }
    	if($update) {
    		$content | Out-File $programconfiguser
    	}
    }

    • Помечено в качестве ответа Dirty Sanche4 6 марта 2017 г. 10:40
    6 марта 2017 г. 9:36
    Отвечающий

Все ответы

  • if ($isprogramserver -eq "True" -AND $isprogramuser -eq "True")  {
        #Хватаем конфиг
        $content = get-content -Path $programconfiguser
        if ($content -notcontains "paramenter=$ADUserIpphone") {
    		$content -replace "paramenter=.+","paramenter=$ADUserIpphone" | Out-File $programconfiguser
        }
    }

    • Предложено в качестве ответа Vector BCOModerator 6 марта 2017 г. 9:34
    • Помечено в качестве ответа Dirty Sanche4 6 марта 2017 г. 10:40
    3 марта 2017 г. 13:43
    Отвечающий
  • Спасибо,работает. А если этих параметров несколько? 
    6 марта 2017 г. 9:14
  • if ($isprogramserver -eq "True" -AND $isprogramuser -eq "True")  {
        #Хватаем конфиг
        $content = get-content -Path $programconfiguser
    	$update = $false
        if ($content -notcontains "paramenter=$ADUserIpphone") {
    		$content = $content -replace "paramenter=.+","paramenter=$ADUserIpphone"
    		$update=$true
        }
    	 if ($content -notcontains "paramenter1=1") {
    		$content = $content -replace "paramenter1=.+","paramenter1=2"
    		$update=$true
        }
    	if($update) {
    		$content | Out-File $programconfiguser
    	}
    }

    • Помечено в качестве ответа Dirty Sanche4 6 марта 2017 г. 10:40
    6 марта 2017 г. 9:36
    Отвечающий