3

Hi Friends i want to modify some Text value in <Option Name="Activate">1</Option> to <Option Name="Activate">0</Option>. I am unable to locate node value <Option Name="Activate">1</Option> using powershell. below is the full code section in which i want to modify the Text. Please help.

<User Name="Richard">
        <Option Name="Pass">b56e0b4ea4962283bee762525c2d490f</Option>
        <Option Name="Containers">MasterVal</Option>
        <Option Name="Max Limit Allowed">2</Option>
        <Option Name="Limit Allowed">0</Option>
        <Option Name="User Limit">0</Option>
        <Option Name="Activate">1</Option>
        <Option Name="Feedback"></Option>
        <Option Name="ForceSsl">2</Option>
        <FileAllowed>
            <Disallowed />
            <Allowed />
        </FileAllowed>
        <Authorizations />
        <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="2" UlType="0" UlLimit="10" ServerUlLimitBypass="2">
            <Download />
            <Upload />
        </SpeedLimits>
    </User>

Download XML File Here

So far i have tried Below Code but unable to complete. :(

$xml = New-Object XML
$XML.Load("D:\PSScript\BookStore.xml")
$xml.bookstore.Users.user |
Where-Object { ($_.Name -eq 'Richard')} |
Select-Object -Property Option

**Note : I want to use a condition here for example i want to change 1 Tag text value only for specific user, In short i want to modify text based on user id, Like where name = Richard change its <Option Name="Activate">1</Option> to <Option Name="Activate">0</Option> **

<BookStore> <Settings> <Item name="Admin port" type="numeric">88881</Item> </Settings> <Container> <Containers Name="MasterVal"> <Option Name="Max Limit Allowed">0</Option> <Option Name="Limit Allowed">0</Option> <Option Name="User Limit">0</Option> <Option Name="Activate">1</Option> <Option Name="Feedback"> </Option> <Option Name="ForceSsl">0</Option> <FileAllowed> <Disallowed /> <Allowed /> </FileAllowed> <Authorizations> <Authorization path="E:\BookMaster\RootFolder"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">0</Option> <Option Name="FileDelete">0</Option> <Option Name="FileAppend">0</Option> <Option Name="pathCreate">0</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">1</Option> <Option Name="AutoCreate">0</Option> </Authorization> <Authorization path="E:\BookMaster\RootFolder\MST\reports"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">1</Option> <Option Name="FileDelete">1</Option> <Option Name="FileAppend">1</Option> <Option Name="pathCreate">1</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">0</Option> <Option Name="AutoCreate">0</Option> </Authorization> <Authorization path="E:\BookMaster\RootFolder\MST\NT"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">1</Option> <Option Name="FileDelete">1</Option> <Option Name="FileAppend">1</Option> <Option Name="pathCreate">1</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">0</Option> <Option Name="AutoCreate">0</Option> </Authorization> <Authorization path="E:\BookMaster\RootFolder\MST\WIN"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">1</Option> <Option Name="FileDelete">1</Option> <Option Name="FileAppend">1</Option> <Option Name="pathCreate">1</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">0</Option> <Option Name="AutoCreate">0</Option> </Authorization> <Authorization path="E:\BookMaster\RootFolder\MST\Winsxs"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">1</Option> <Option Name="FileDelete">1</Option> <Option Name="FileAppend">1</Option> <Option Name="pathCreate">1</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">0</Option> <Option Name="AutoCreate">0</Option> </Authorization> <Authorization path="E:\BookMaster\RootFolder\SXS"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">1</Option> <Option Name="FileDelete">1</Option> <Option Name="FileAppend">1</Option> <Option Name="pathCreate">1</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">0</Option> <Option Name="AutoCreate">1</Option> </Authorization> </Authorizations> <SpeedLimits DlType="1" DlLimit="10" ServerDlLimitBypass="0" UlType="1" UlLimit="10" ServerUlLimitBypass="0"> <Download /> <Upload /> </SpeedLimits> </Containers> <Containers Name="DMPL(9990)-D"> <Option Name="Max Limit Allowed">0</Option> <Option Name="Limit Allowed">0</Option> <Option Name="User Limit">0</Option> <Option Name="Activate">1</Option> <Option Name="Feedback"> </Option> <Option Name="ForceSsl">0</Option> <FileAllowed> <Disallowed /> <Allowed /> </FileAllowed> <Authorizations> <Authorization path="E:\BookMaster\RootFolder\MST"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">0</Option> <Option Name="FileDelete">0</Option> <Option Name="FileAppend">0</Option> <Option Name="pathCreate">0</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">1</Option> <Option Name="AutoCreate">0</Option> </Authorization> <Authorization path="E:\BookMaster\RootFolder\MST\NT\Report_9990"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">1</Option> <Option Name="FileDelete">1</Option> <Option Name="FileAppend">1</Option> <Option Name="pathCreate">0</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">0</Option> <Option Name="AutoCreate">0</Option> </Authorization> </Authorizations> <SpeedLimits DlType="1" DlLimit="10" ServerDlLimitBypass="0" UlType="1" UlLimit="10" ServerUlLimitBypass="0"> <Download /> <Upload /> </SpeedLimits> </Containers> </Container> <Users> <User Name="leonardo"> <Option Name="Pass">05538eb07b4dbf66b1da4ea9374ac8f5</Option> <Option Name="Containers">MasterVal</Option> <Option Name="Max Limit Allowed">2</Option> <Option Name="Limit Allowed">0</Option> <Option Name="User Limit">0</Option> <Option Name="Activate">1</Option> <Option Name="Feedback"> </Option> <Option Name="ForceSsl">2</Option> <FileAllowed> <Disallowed /> <Allowed /> </FileAllowed> <Authorizations /> <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="2" UlType="0" UlLimit="10" ServerUlLimitBypass="2"> <Download /> <Upload /> </SpeedLimits> </User> <User Name="repturet"> <Option Name="Pass">e076fc6c4c8a245beec106646719f738</Option> <Option Name="Containers"> </Option> <Option Name="Max Limit Allowed">0</Option> <Option Name="Limit Allowed">0</Option> <Option Name="User Limit">0</Option> <Option Name="Activate">1</Option> <Option Name="Feedback"> </Option> <Option Name="ForceSsl">0</Option> <FileAllowed> <Disallowed /> <Allowed /> </FileAllowed> <Authorizations> <Authorization path="E:\BookMaster\RootFolder\MST\NT"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">1</Option> <Option Name="FileDelete">0</Option> <Option Name="FileAppend">1</Option> <Option Name="pathCreate">0</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">0</Option> <Option Name="AutoCreate">0</Option> </Authorization> <Authorization path="E:\BookMaster\RootFolder\MST"> <Option Name="FileRead">1</Option> <Option Name="FileWrite">0</Option> <Option Name="FileDelete">0</Option> <Option Name="FileAppend">0</Option> <Option Name="pathCreate">0</Option> <Option Name="pathDelete">0</Option> <Option Name="pathList">1</Option> <Option Name="pathSubdirs">1</Option> <Option Name="IsHome">1</Option> <Option Name="AutoCreate">0</Option> </Authorization> </Authorizations> <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0"> <Download /> <Upload /> </SpeedLimits> </User> <User Name="Anuj"> <Option Name="Pass">270a8eaf5877a08bc69bdde947f8e8b6</Option> <Option Name="Containers">DMPL(9990)-D</Option> <Option Name="Max Limit Allowed">2</Option> <Option Name="Limit Allowed">0</Option> <Option Name="User Limit">0</Option> <Option Name="Activate">1</Option> <Option Name="Feedback"> </Option> <Option Name="ForceSsl">2</Option> <FileAllowed> <Disallowed /> <Allowed /> </FileAllowed> <Authorizations /> <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="2" UlType="0" UlLimit="10" ServerUlLimitBypass="2"> <Download /> <Upload /> </SpeedLimits> </User> <User Name="pallavi"> <Option Name="Pass">8d644bb6af9f1822de1d668d0ea6c36a</Option> <Option Name="Containers">MasterVal</Option> <Option Name="Max Limit Allowed">2</Option> <Option Name="Limit Allowed">0</Option> <Option Name="User Limit">0</Option> <Option Name="Activate">1</Option> <Option Name="Feedback"> </Option> <Option Name="ForceSsl">2</Option> <FileAllowed> <Disallowed /> <Allowed /> </FileAllowed> <Authorizations /> <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="2" UlType="0" UlLimit="10" ServerUlLimitBypass="2"> <Download /> <Upload /> </SpeedLimits> </User> <User Name="piyush"> <Option Name="Pass">db699a999e4a6c8bd867720850d3007c</Option> <Option Name="Containers">MasterVal</Option> <Option Name="Max Limit Allowed">2</Option> <Option Name="Limit Allowed">0</Option> <Option Name="User Limit">0</Option> <Option Name="Activate">1</Option> <Option Name="Feedback"> </Option> <Option Name="ForceSsl">2</Option> <FileAllowed> <Disallowed /> <Allowed /> </FileAllowed> <Authorizations /> <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="2" UlType="0" UlLimit="10" ServerUlLimitBypass="2"> <Download /> <Upload /> </SpeedLimits> </User> <User Name="Richard"> <Option Name="Pass">b56e0b4ea4962283bee762525c2d490f</Option> <Option Name="Containers">MasterVal</Option> <Option Name="Max Limit Allowed">2</Option> <Option Name="Limit Allowed">0</Option> <Option Name="User Limit">0</Option> <Option Name="Activate">1</Option> <Option Name="Feedback"> </Option> <Option Name="ForceSsl">2</Option> <FileAllowed> <Disallowed /> <Allowed /> </FileAllowed> <Authorizations /> <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="2" UlType="0" UlLimit="10" ServerUlLimitBypass="2"> <Download /> <Upload /> </SpeedLimits> </User> </Users> </BookStore>

1 Answer 1

3

Your main problem is you need to treat option elements as arrays. I copied your xml snippet to a file called test.xml and this code works (I'll explain how I parsed through your xml file at each step to show where Option is displaying as an array):

[xml] $info = Get-Content test.xml #Shorthand for New-Object..Load
#This command isn't necessary but is helpful when looking for an attribute
$info | Format-List *

#From above command saw that $info.User is the base document element
$info.User
#showed Attribute in Option
$info.User.Option
#displayed an array element with Attribute as the 5 (6th cause you start at 0) index
$info.User.Option[5]
#displayed Name and #text attributes with #text = 1
$info.User.Option[5].'#text' = "0"
#updated #text attribute to 0

From this you should be able to modify your script to work with the full xml file.

As your still having problems, a better solution would be to adjust your xml so you can access each user as a full object rather then parsing through attributes:

     <User>
         <name>Richard</name>
         <pass>b56e0b4ea4962283bee762525c2d490f</pass>
         <containers>MasterVal</containers>
         <maxLimit>2</maxLimit>
         <minLimit>0</minLimit>
         <userLimit>0</userLimit>
         <activate>1</activate>
         <feedback></feedback>
         <forceSsl>2</forceSsl>
         <FileAllowed>
             <Disallowed />
             <Allowed />
         </FileAllowed>
         <Authorizations />
         <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="2" UlType="0"
     UlLimit="10" ServerUlLimitBypass="2">
             <Download />
             <Upload />
         </SpeedLimits>
     </User>

Then you can access each user as $info.User.Richard and change each activate tags using $info.User.Richard.activate = 0. If you cannot do this you'll need to use foreach:

[xml] $info = Get-Content test.xml
foreach ($i in $info.BookStore.Users.User) {
    if ($i.Name -eq "Richard") {
        foreach ($e in $i.Option) {
            if ($e.Name -eq "Activate") {
                $e.'#text' = "0"
            }
        }
    }
}

Then just write the xml back to the file. Note: Look at the use of select and select-xml if you want to simplify this later

Updated: with full answer given xml file

Sign up to request clarification or add additional context in comments.

8 Comments

Sorry dear but its not working when i am trying this code for XML file which i have attached in the post. link . Could you please help me in this ?
Also i want to use a condition here for example i only wants to change <Option Name="Activate">1</Option> Tag text value only for specific user, In short i want to modify text based on user id
No, because my current firewall (working at school right now) doesn't allow access to filedropper.
is this link is ok please check or suggest any website which you can access, Thanks a lot for giving your precious time :) link
@Harsh I don't know about the link, the firewall blocks the entire site for some reason. Either way I updated my answer: take a look and see if that helps.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.