PowerShell GUI csv导入ListView

时间:2017-02-01 13:26:37

标签: powershell

我有一个脚本来重命名域名中的计算机。现在我正在尝试创建我的第一个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>

GUI enter image description here

1 个答案:

答案 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中的标题名称相同