【发布时间】:2022-06-15 03:51:41
【问题描述】:
我正在为我们的 HR 环境创建一个用于 AD 目的的小型用户表单,但我希望能够单击复选框以将用户添加到所需的组。
他们要求表格也应包括所需的组。
整个脚本脚本工作正常,除了我使用复选框和 if 语句的部分。
编辑 --- 添加了 $grpbx.isChecked 但仍然无法正常工作
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[xml]$XAML = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="New User Creation" Height="450" Width="637" ResizeMode="NoResize">
<Grid>
<Label Name="fnlabel" Content="First Name" HorizontalAlignment="Left" Margin="23,24,0,0" VerticalAlignment="Top"/>
<Label Name="lnlabel" Content="Last Name" HorizontalAlignment="Left" Margin="179,24,0,0" VerticalAlignment="Top"/>
<TextBox Name="fntxt" HorizontalAlignment="Left" Margin="27,50,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<TextBox Name="lntxt" HorizontalAlignment="Left" Margin="183,50,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Label Name="samlabel" Content="Logon Name" HorizontalAlignment="Left" Margin="23,70,0,0" VerticalAlignment="Top"/>
<TextBox Name="samtxt" HorizontalAlignment="Left" Margin="27,96,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Label Name="tllabel" Content="Title" HorizontalAlignment="Left" Margin="23,114,0,0" VerticalAlignment="Top"/>
<TextBox Name="tltxt" HorizontalAlignment="Left" Margin="27,140,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Label Name="mblabel" Content="Mobile" HorizontalAlignment="Left" Margin="23,160,0,0" VerticalAlignment="Top"/>
<TextBox Name="mbtxt" HorizontalAlignment="Left" Margin="27,187,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Button Name="Submit" Content="Submit" HorizontalAlignment="Left" Margin="318,393,0,0" VerticalAlignment="Top"/>
<Button Name="Close" Content="Close" HorizontalAlignment="Left" Margin="270,393,0,0" VerticalAlignment="Top"/>
<TextBox Name="pwtxt" HorizontalAlignment="Left" Margin="183,96,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Label Name="pwlabel" Content="Password" HorizontalAlignment="Left" Margin="179,70,0,0" VerticalAlignment="Top"/>
<Label Name="dplabel" Content="Display Name" HorizontalAlignment="Left" Margin="179,114,0,0" VerticalAlignment="Top"/>
<TextBox Name="dptxt" HorizontalAlignment="Left" Margin="183,140,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Label Name="emlabel" Content="Email Address" HorizontalAlignment="Left" Margin="23,207,0,0" VerticalAlignment="Top"/>
<TextBox Name="emtxt" HorizontalAlignment="Left" Margin="27,233,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="200"/>
<CheckBox Name="grpbx" Content="GroupA" HorizontalAlignment="Left" Margin="27,267,0,0" VerticalAlignment="Top"/>
</Grid>
</Window>
"@
#Read XAML
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
try{$Form=[Windows.Markup.XamlReader]::Load( $reader )}
catch{Write-Host "Unable to load Windows.Markup.XamlReader"; exit}
# Store Form Objects In PowerShell
$xaml.SelectNodes("//*[@Name]") | ForEach-Object {Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)}
Import-Module ActiveDirectory
$Close.Add_Click({$Form.Close()})
$Submit.Add_Click({
New-ADUser `
-Name $dptxt.Text`
-EmailAddress $emtxt.text `
-DisplayName $dptxt.Text`
-SamAccountName $samtxt.text `
-UserPrincipalName $emtxt.text `
-GivenName $fntxt.text `
-Surname $lntxt.Text `
-Description $tltxt.text `
-MobilePhone $mbtxt.text `
if ($grpbx.Checked){
Add-ADGroupMember -Identity ADGroupA -Members $samtxt.text
}
})
#Show Form
$Form.ShowDialog() | out-null
【问题讨论】:
-
应该是
$grpbx.isChecked