2017-02-01 8 views
1

私のドメイン上のコンピュータの名前を変更するスクリプトがあります。今私は最初のGUIを作成し、そのスクリプトを組み込もうとしています。 Visual Studio WPFプロジェクトを使用してGUIを作成しました。目的は、2つのテキストボックスを使用してコンピュータとその新しい名前を手動で入力するか、csvファイルをインポートできるようにすることです。これらのオプションの両方は、Listviewに入力する必要があります。実行をクリックすると、リストビュー内のすべてのコンピュータの名前が変更されます。今すぐインポートボタン機能に関するヘルプを探しています。私はこれを行う必要があります別の方法がある場合は、私は間違いなく提案に開放されています。PowerShell 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> 

私が代わりにデータグリッドを使用して、このようなコードを使用することになり enter image description here

答えて

1

GUI:

$csv = import-csv C:\csv.csv | Select-Object @{Name=‘OldName‘;Expression={$_.OldName}},` 
              @{Name=‘NewName’;Expression={$_.NewName}} 

$csv | % { $datagrid.AddChild($_) } 

私はこれと同じコードを、私が使ったPowerShell GUIプロジェクトで使用しました。 Csvは、OldName、NewNameのようなヘッダーを持つ必要があります。

EDIT:DataGrid内そして、あなたのヘッダ名は、私はそれがちょっと動作するようになったの$ csvファイルと同じ

+0

OKでなければなりません。インポートボタンをクリックすると、正しい量の行が読み込まれます。しかし、それらは空で、私がそれが第2の列を表示していないと言うことができる限り。何か案は? –

+0

xamlの列にバインディングを追加する必要があることを忘れてしまいました。 何らかの理由でこのメッセージを書式設定できませんが、列が$ csvと同じ名前であることを確認します。あなたが必要とするのはバインディングだけです。 – Goldn123