2017-02-02 4 views
1

У меня есть сценарий, который я пытаюсь превратить в графический интерфейс.Заполнить DataGrid из WPF TextBox в PowerShell

Существует DataGrid на месте с 2 колонками, и у меня есть два TextBox es, которые я хотел бы, чтобы иметь возможность вводить что-то в это, заполняется DataGrid.

box1 заполняет первую колонку, box2 заполняет вторую колонку.

Мне нужна помощь с KeyDown и части населения.

#LoadForm 
./LoadDialog.ps1 -XamlPath 'C:\Forms\ReNamer.xaml' 

#EVENT Handler 
$NewName 

#Add old name manually 
#################################PLEASE HELP HERE 
$OldName.Add_KeyDown { 
    if ($_.KeyCode -eq 'Enter') { 
     $AddOldName.Invoke() 
     #Suppress sound from unexpected use of enter on keyPress/keyUp 
     $_.SuppressKeyPress = $true 
    } 
} 
$AddOldName.Add_Click({ AddOldName }) 

##$renameBtn.Add_Click({ $Form.Close() }) 

$Import.Add_Click({ GetCompList }) 

#Launch the window 
$xamGUI.ShowDialog() | Out-Null 

#Csv import button 
Function GetCompList { 
    ##File location 
    $csvfile = Import-Csv "C:\Sysinternals\rename.csv" | 
     Select-Object @{ n = "OldName"; e = { $_.OldName } }, @{ n = "NewName"; e = { $_.NewName } } 

    $csvfile | ForEach-Object { $dataGrid.AddChild($_) } 
} 

#Run Button 
Function RenameComputers { 
    Write-Host "Renaming computer from: $o to: $n" 
    netdom renamecomputer $o /newName:$n /uD:sdirc\clarkj8 /passwordD:$p /force /reboot 
} 

#NewName txtbox 

#OldName txtBox 
##############################################PLEASE help here 
Function AddOldName { 
    $row = New-Object PSObject 
    Add-Member -InputObject $row -MemberType NoteProperty -Name "OldName" -Value $OldName.Text 
} 
+0

Привет, зачем откатывать мои правки назад? (Я очистил и исправил ваш код) – sodawillow

+0

Я тоже не имел в виду. Новое на этих форумах и как все это работает. Я вошел, чтобы изменить имя пользователя. и сделал это случайно –

+0

ОК, никаких проблем. Я пытался исправить ситуацию. Пожалуйста, взгляните на код и внесите изменения, если вы хотите что-то изменить. – sodawillow

ответ

1
Function AddOldName { 

    $row = New-Object PSObject 

    Add-Member -InputObject $row -MemberType NoteProperty -Name "OldName" -Value $OldName.Text 

    Add-Member -InputObject $row -MemberType NoteProperty -Name "NewName" -Value $NewName.Text 

    $dataGrid.AddChild($row) 

} 

(предполагается, что ваш новое поле имя называется $newName)

И тогда в этой функции можно также сделать:

netdom renamecomputer $OldName.text /newName:$NewName.text /uD:sdirc\clarkj8 /passwordD:$p /force /reboot 

А на вашем компьютере функции список импорта вы могли бы также:

$csvfile | % { netdom renamecomputer $_.OldName /newName:$_.NewName /uD:sdirc\clarkj8 /passwordD:$p /force /reboot } 

Я еще не пробовал KeyDown s в Powershell раньше.

+0

Спасибо. Это заставило функцию работать выше. Теперь мне просто нужно получить часть KeyDown правильно. –

+0

Это работает и выключается. В основном это просто создает пустую строку. Функция AddName { $ row = New-Object PSObject Add-Member -InputObject $ row -MemberType NoteProperty -Name "Old Computer Name" -Value $ OldName Add-Member -InputObject $ row -MemberType NoteProperty -Name "Новое имя компьютера "-Value $ NewName $ DataGrid.AddChild ($ row) } –

+1

Вы установили привязки как« Старое имя компьютера »и« Новое имя компьютера »в xaml? – Goldn123

Смежные вопросы