我有一个脚本来重命名域名中的计算机。现在我正在尝试创建我的第一个GUI并合并该脚本。我使用visual studio WPF项目创建了一个GUI。目标是可以选择通过两个文本框手动输入计算机及其新名称,或者能够导入csv文件。这两个选项都应该填充Listview。然后单击“运行”,它将重命名列表视图中的所有计算机。我正在寻找有关导入按钮功能的帮助。如果我有不同的方式这样做,我绝对愿意接受建议。
当前代码
#LoadForm
./LoadDialog.ps1 -XamlPath 'C:\Forms\ReNamer.xaml'
#EVENT Handler
$oldname = $CurrentNameBox
$newName = $NewNameBox
##$renameBtn.Add_Click({$Form.Close()})
$csvPath = $csvBox
$csvBtn.Add_Click({GetCompList})
#Launch the window
$xamGUI.ShowDialog() | out-null
#Csv import button
Function GetCompList{
Write-Host "Importing Computers from CSV file"
$csvfile = "C:\Sysinternals\rename.csv"
Import-Csv $csvfile | foreach {
$oldName = $_.OldName;
$newName = $_.NewName;
}
}
Function RenameComputers{
Write-Host "Renaming computer from: $o to: $n"
netdom renamecomputer $o /newName:$n /uD:sdirc\clarkj8 /passwordD:$p /force /reboot
}
ListView xaml
<ListView Name="listView" HorizontalAlignment="Left" Height="194" Margin="10,101,0,0" VerticalAlignment="Top" Width="350" Grid.Column="1">
<ListView.View>
<GridView>
<GridViewColumn Header="Old Computer Name" Width="175"/>
<GridViewColumn Header="New Computer Name" Width="175"/>
</GridView>
</ListView.View>
</ListView>
答案 0 :(得分:1)
我会使用数据网格并使用类似于此的代码:
$csv = import-csv C:\csv.csv | Select-Object @{Name=‘OldName‘;Expression={$_.OldName}},`
@{Name=‘NewName’;Expression={$_.NewName}}
$csv | % { $datagrid.AddChild($_) }
我在我使用的PowerShell GUI项目中使用了与此类似的代码。 Csv必须有像OldName,NewName这样的标题。
编辑:数据网格中的标题名称必须与$ csv中的标题名称相同