Forum » Programiranje » Powershell xml
Powershell xml
chrush ::
Pozdravljeni,
 
potreboval bi skripto, ki bi uredila xml.file.
 
xml zgleda tako:
  
 
Urediti bi morala samo vrstico iz:
  
v
  
pri tem pa je treba vedeti, da je vrednost 'nextUpdateDate="20210625"' na vseh racunalnikih razlicna.
 
Trenutno imam, kar pa ne deluje:
  
potreboval bi skripto, ki bi uredila xml.file.
xml zgleda tako:
<NotepadPlus>
    <ProjectPanels>
        <ProjectPanel id="0" workSpaceFile="" />
        <ProjectPanel id="1" workSpaceFile="" />
        <ProjectPanel id="2" workSpaceFile="" />
    </ProjectPanels>
    <GUIConfigs>
        <GUIConfig name="ToolBar" visible="yes">standard</GUIConfig>
        <GUIConfig name="noUpdate" intervalDays="15" nextUpdateDate="20210625">no</GUIConfig>
        <GUIConfig name="Auto-detection">yes</GUIConfig>
   </GUIConfigs>
<NotepadPlus>Urediti bi morala samo vrstico iz:
<GUIConfig name="noUpdate" intervalDays="15" nextUpdateDate="20210625">no</GUIConfig>
v
<GUIConfig name="noUpdate" intervalDays="15" nextUpdateDate="20210625">yes</GUIConfig>
pri tem pa je treba vedeti, da je vrednost 'nextUpdateDate="20210625"' na vseh racunalnikih razlicna.
Trenutno imam, kar pa ne deluje:
$users = Get-ChildItem C:\Users
foreach ($user in $users)
{
    $folder = "C:\Users\" + $user + "\AppData\Roaming\Notepad++"
    $file = "\config.xml"
    $path = "$folder" + "$file"
    if (Test-Path -Path $path)
    {
        $newValue = '<GUIConfig name="noUpdate" intervalDays="365" nextUpdateDate="20220606">yes</GUIConfig>'
        $xml = [xml](Get-Content $path)
        $xml.NotepadPlus.GUIConfigs.'<GUIConfig name="noUpdate" intervalDays="15" nextUpdateDate="20210708">no</GUIConfig>' = $newValue
        $xml.save($path)
    }
}
 kow ::
Ne rabis parsati xml, saj samo spremenis no v yes. Stream editor (sed) ti bo to naredil z one linerjem.
Je pa res, da ga nimas privzeto na windowsih.
Je pa res, da ga nimas privzeto na windowsih.
Zgodovina sprememb…
- spremenil: kow ()
 
chrush ::
Ne rabis parsati xml, saj samo spremenis no v yes. Stream editor (sed) ti bo to naredil z one linerjem.
Je pa res, da ga nimas privzeto na windowsih.
Zal ne pride v postev, ker ni privzeto na windowsih.
Invictus, tvoj link pa tudi ni v pomoc, ker gre res za enostaven primer, kako zamenjati eno besedo z drugo. In ce jaz zamenjam no v yes, bo to naredilo v celotnem file-u. Jaz pa zelim tocno v doloceni vrstici.

Invictus ::
Naredi boljši filter, a je tako težko? 
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
chrush ::
$users = Get-ChildItem C:\Users
ForEach ($user in $users)
{
    $folder = "C:\Users\" + $user + "\AppData\Roaming\Notepad++"
    $file = "\config.xml"
    $path = "$folder" + "$file"
    if (Test-Path -Path $path)
    {
        [xml]$xml = (Get-Content $path | Out-String) -replace '(.*noUpdate.*)no</GUIConfig>', '$1yes</GUIConfig>'
        $xml.save($path)
    }
}Koncno uspelo. Hvala. :D
chrush ::
Kako bi naredil s powershellom enako, kot naredi ukaz F3 v Registry Editorju? Torej, zelim poiskati vse key, value, data, ki jih je recimo nastlal program draw.io.
Npr.: Ukaz:
Npr.: Ukaz:
get-childitem -path hklm:\ -recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -like "*draw.io*"} mi ne vrne vsega, kar se nahaja v hklm Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | Powershell primerjaj in kopirajOddelek: Programiranje | 1247 (884) | Blisk | 
| » | Batch skripta za brisanje map, starejših od X dniOddelek: Operacijski sistemi | 921 (856) | krneki0001 | 
| » | [c#] savefiledialog, en sfd a več datotekOddelek: Programiranje | 848 (776) | darkkk | 
| » | android črtaOddelek: Programiranje | 2655 (1926) | g333kk | 
| » | Skripte (strani: 1 2 )Oddelek: Programiranje | 9338 (7201) | Microsoft |