簡體   English   中英

如何使用 Powershell 更改 XML 中的值

[英]How to change values in XML with Powershell

我有一個 xml 文件,我想更改 XML 中的 2 個值

XML:

<INSTALLTYPE Value="Standalone" />  to  <INSTALLTYPE Value="Workstation" />

<ELEVATELICENSE Value="None" />     to  <ELEVATELICENSE Value="Workgroup" />

我測試了這個數據庫中提供的幾個腳本,但我無法更改這些值。

Powershell:

$path = "C:\temp\Kofax.xml"
$xml = [xml](Get-Content -Path $path)
$xml.FileZilla3.VIRTUALRESCAN.INSTALLTYPE
$node = $xml.FileZilla3.VIRTUALRESCAN.INSTALLTYPE| where {$_.Name -eq 'Standalone'}
$node.'#text'= 'Workstation'
$xml.Save($path)

XML:

<?xml version="1.0" encoding="utf-8" ?>
<Registry>
    <HKEY_LOCAL_MACHINE>
        <SOFTWARE>
            <KOFAX>
                <CONDOR Value="0" Type="integer">
                    <OEMCODE Value="FUJITSU" />
                    <OEMSUBCODE Value="fi6670" />
                    <VRSSERVERS Value="0" Type="integer" />
                    <ECLIPSELOGGING Value="0" />
                    <MULTICOREPOLICY Value="0" Type="integer" />
                    <MULTICOREMODE Value="4" Type="integer" />
                    <MULTICOREQUEUESIZE Value="4" Type="integer" />
                    <MULTICOREDUALSIDEIP Value="1" Type="integer" />
                    <INITVIVONSEPTHREAD Value="1" Type="integer" />
                    <VRSELITEDEMO Value="0" Type="integer" />
                    <DISABLETASKWINDOWS Value="0" Type="integer" />
                    <V1.0>
                        <ERRORAPPPATH>
                            <DEFAULT Value="C:\Program Files (x86)\Kofax\Capture\ImgCtls\bin" />
                        </ERRORAPPPATH>
                        <HELPPATH>
                            <DEFAULT Value="C:\ProgramData\Kofax\Vrs\Help" />
                        </HELPPATH>
                        <KFXSCAN.PXW>
                            <DEFAULT_SOURCE Value="Fujitsu fi-6670A with VRS with AIPE" />
                        </KFXSCAN.PXW>
                        <SCANNERID>
                            <SELECTED Value="Fujitsu fi-6670A" />
                        </SCANNERID>
                    </V1.0>
                    <VERSION Value="V5.1.0265" />
                    <KOFAXVERSION Value="5.1.1.13.0.2084" />
                    <PATH Value="C:\Program Files (x86)\Kofax\Capture\ImgCtls\" />
                </CONDOR>
                <VIRTUALRESCAN>
                    <SILENTINSTALL Value="FALSE" />
                    <ADMININFO>
                        <ASCENTINSTALL Value="FALSE" />
                    </ADMININFO>
                    <SHAREDELEMENTFOLDER Value="C:\ProgramData\Kofax\Vrs\Shared" />
                    <SHAREDELEMENTSERVER Value="" />
                    <VRSLANGUAGE Value="" />
                    <VRSLANGUAGEID Value="0" Type="integer" />
                    <KCLANGUAGE Value="" />
                    <PROFILESYNCTIME Value="3" Type="integer" />
                    <SYNCTIMETICKS Value="" />
                    <INSTALLDIRECTORY Value="C:\Program Files (x86)\Kofax\Capture\ImgCtls\" />
                    <INSTALLTYPE Value="Standalone" />
                    <ORIGINALINSTALLTYPE Value="Standalone" />
                </VIRTUALRESCAN>
                <KOFAX_ISIS_SCANNER_SOURCE>
                    <SOURCE_NAME Value="Fujitsu fi-6670A with VRS with AIPE" />
                </KOFAX_ISIS_SCANNER_SOURCE>
                <KOFAX_TWAIN_DATA_SOURCE>
                    <SOURCE_NAME Value="Fujitsu fi-6670A with VRS with AIPE" />
                </KOFAX_TWAIN_DATA_SOURCE>
            </KOFAX>
            <KOFAX_IMAGE_PRODUCTS>
                <VIRTUALRESCAN>
                    <INSTALLDIRECTORY Value="C:\Program Files (x86)\Kofax\Capture\ImgCtls\" />
                    <PRODUCTCODE Value="{12345678-1234-1234-1234-123456789101}" />
                    <ADMININFO>
                        <ACCEPTEDEULA Value="TRUE" />
                        <ACTIVATEREMINDERDAYS Value="1" />
                        <AFFINITYID Value="000000" />
                        <ASCENTINSTALL Value="FALSE" />
                        <COMPANY Value="" />
                        <EMAIL Value="" />
                        <GRACENOTIFIED Value="FALSE" />
                        <INSTALLDIRECTORY Value="C:\Program Files (x86)\Kofax\Capture\ImgCtls" />
                        <LASTACTIVATEREMINDER Value="0x00" />
                        <LICENSEACTION Value="" />
                        <LICENSECODE Value="" />
                        <PARTNUMBER Value="" />
                        <PRODUCTCODE Value="" />
                        <REGISTERED Value="FALSE" />
                        <SENDEMAIL Value="TRUE" />
                        <SERIALNUMBER Value="" />
                        <SILENTINSTALL Value="FALSE" />
                        <SKIPREGISTRATION Value="FALSE" />
                        <STARTMENUFOLDER Value="" />
                        <USERNAME Value="" />
                    </ADMININFO>
                </VIRTUALRESCAN>
            </KOFAX_IMAGE_PRODUCTS>
        </SOFTWARE>
    </HKEY_LOCAL_MACHINE>
    <HKEY_CURRENT_USER>
        <SOFTWARE>
            <KOFAX>
                <CONDOR>
                    <V1.0>
                        <SETTINGS>
                            <HWERRORS Value="1" Type="integer" />
                            <STOPMODE Value="3" Type="integer" />
                            <ELEVATELICENSE Value="None" />
                            <IGNORECAPTURELICENSE Value="0" Type="integer" />
                            <LEGACYBCLICENSE Value="0" Type="integer" />
                            <PERFORMHOSTSMOOTHING Value="0" Type="integer" />
                            <UPGRADECAPTURELICENSE Value="0" Type="integer" />
                        </SETTINGS>
                    </V1.0>
                </CONDOR>
            </KOFAX>
        </SOFTWARE>
    </HKEY_CURRENT_USER>
</Registry>

錯誤信息:

未找到此 object 的屬性“#text”。 確保該屬性存在並且可以設置。 行內:5 個字符:1 + $node.'#text'= 'Workstation' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: PropertyNotFound

使用XPath

select INSTALLTYPE節點與XPath

# Query document for INSTALLTYPE nodes at any level
$installTypeNodes = $xml.SelectNodes('//INSTALLTYPE')

# Iterate over the nodes found
foreach($installTypeNode in $installTypeNodes){
  # Test if `Value` attribute has expected value
  if($installTypeNode.Value -eq 'Standalone'){
    # Overwrite it if so
    $installTypeNode.Value = 'Workstation'
  }
}

在調用$xml.Save()之前對節點重復ELEVATELICENSE :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM