2017-08-09 86 views
1

现在我正在使用一个按钮为其创建的每个用户生成唯一的XML代码。现在我的XML看起来是这样的:PowerShell中自动生成的XML代码

<NewUser> 
    <ActiveDirectory> 
     <User> 
      <GivenName></GivenName> 
      <Surname></Surname> 
      <Title></Title> 
      <Department></Department> 
      <Company></Company> 
      <OU></OU> 
      <Office></Office> 
      <Management></Management> 
      <Groups> 
       <Group=""/> 
      </Groups> 
      <Location></Location> 
     </User> 
    </ActiveDirectory> 
    <Exchange> 
     <Database></Database> 
    </Exchange> 
    <TMW> 
     <SysAdmin></SysAdmin> 
     <Supervisor></Supervisor> 
     <CanDeletePay></CanDeletePay> 
     <UseDateCalender></UseDateCalender> 
    </TMW> 
    <DriverRecruitment> 
     <Admin></Admin> 
     <ManageNews></ManageNews> 
     <ManageEmployers></ManageEmployers> 
     <ManageWorkflows></ManageWorkflows> 
     <ManageCustomQuestions></ManageCustomQuestions> 
    </DriverRecruitment> 
</NewUser> 

我所试图做的就是多<Group>标签下的Groups;一个用于用户从CheckedListBox中选择的每个组。

我需要的是这样的:

<Groups> 
    <Group name="Group1"/> 
    <Group name="Group2"/> 
    <!-- Create the rest dynamically as they are checked --> 
</Groups> 

这些复选框中的每一个填充了我直接拉从Active Directory资源组。我假设我将需要编写某种foreach循环来设置所有内容,但我似乎无法弄清楚。以下是我迄今为止:

# generates the xml 
    $XML_Path = "\\papertransport.com\files\UserDocuments\mneis\Code\XML\New User GUI XML Files\" 
    $GeneratedXML = " 
<NewUser> 
    <ActiveDirectory> 
     <User> 
      <GivenName>$firstname</GivenName> 
      <Surname>$lastname</Surname> 
      <Title>$title</Title> 
      <Department>$department</Department> 
      <Company>$company</Company> 
      <OU>$OU</OU> 
      <Office>$office</Office> 
      <Management>$management</Management> 
      <Groups> 
       <Group></Group> <!-- Here is where I need to loop --> 
      </Groups> 
      <Location>$location</Location> 
     </User> 
    </ActiveDirectory> 
    <Exchange> 
     <Database>$database</Database> 
    </Exchange> 
    <TMW> 
     <SysAdmin></SysAdmin> 
     <Supervisor></Supervisor> 
     <CanDeletePay></CanDeletePay> 
     <UseDateCalender></UseDateCalender> 
    </TMW> 
    <DriverRecruitment> 
     <Admin></Admin> 
     <ManageNews></ManageNews> 
     <ManageEmployers></ManageEmployers> 
     <ManageWorkflows></ManageWorkflows> 
     <ManageCustomQuestions></ManageCustomQuestions> 
    </DriverRecruitment> 
</NewUser>" 

    # Create file 
    $GeneratedXML | Out-File "\\papertransport.com\files\UserDocuments\mneis\Code\XML\New User GUI XML Files\NewUser-$firstname$lastname.xml" 

这里是我填充与Active Directory资源组CheckedListBox:

$formPTINewUserCreation_Load={ 
    Import-Module ActiveDirectory 

    # read in the XML files 
    [xml]$NewUserTest = Get-Content -LiteralPath \\papertransport.com\files\UserDocuments\mneis\Code\XML\NewUserTest.xml 

    # popoulate the checklist with the groups from active directory 
    $AD_ResourceGroups = Get-ADGroup -filter * -SearchBase "OU=Resource Groups,OU=Groups,OU=Paper Transport,DC=papertransport,DC=com" 
    $AD_ResourceGroups | ForEach-Object { $chklistGroups.Items.Add($_.name) } 
} 

回答

2

假设$SelectedGroups填充了组由清单中选择一个数组在01中的适当位置

$Groups = $SelectedGroups | ForEach-Object { 
    "    <Group>$_</Group>" 
} 

就用$Groups:(或不过你得到的数据替换此),你可以这样做。

+1

这工作得很好,谢谢。只需要使用格式化一点点,但那是有效的。 – Matt