2017-02-06 5 views
0

Ich arbeite an einer GUI in Powershell. Ich brauche Hilfe beim Schreiben einer foreach Schleife, die die Informationen in einem DataGrid betrachtet und 2 Variablen basierend auf der Eingabe in den 2 Spalten jeder Zeile erstellt.PowerShell foreach Schleife mit Datagrid Zeilen

so etwas wie

for each row 
    v1 = column1 
    v2 = column2 

    do something 

then repeat. 

Actual Code

Function RenameComputers{ 
foreach ($item in $DataGrid.Items){ 
     $OName = $item.OldName 
     $NName = $item.NewName 

     write-host "$OName and $NName" 
     netdom renamecomputer $OName /newName:$NName /uD:$Username /passwordD:$Password /force /reboot 
    } 
    } 
+3

Klingt wie ein großer Plan, Ihre Pseudo Code macht Sinn - was hast du eigentlich probiert? –

Antwort

1
foreach ($item in $dataGrid.Items) { 
    $oldname = $item.oldname 
    $newname = $item.newname 

    //Do stuff, you don't even need to create those variables you can just call $item.attribute 
} 

Dann können Sie die "Spalten" nennen, mit $item.oldname oder $item.newname usw.

+0

Danke. Ich hatte nicht viel versucht. Das ist wirklich nur eine Lernerfahrung, also suche ich nach Beispielen und wie ich mit verschiedenen Objekten interagieren kann. Ich habe etwas Erfahrung mit Java. Also verstehe ich die Grundlagen der Programmierung/Scripting und ihre Logik. Dies erfasst die Informationen so, wie ich es brauche, scheint aber nicht den Befehl auszuführen, zu dem ich es brauche. Ich werde die vollständige Funktion in den ursprünglichen Beitrag kopieren. Ich kann nicht scheinen, dass die Kommentare korrekt formatiert werden. Wenn Sie irgendwelche Ideen oder Vorschläge haben, die großartig wären! Danke noch einmal. Du warst schon eine große Hilfe. –

+0

Ich glaube nicht, dass write-host jemals funktionieren wird. Es wäre einfacher, eine vorhandene Datei anzuhängen oder ein Textfeld zu erstellen und in das Textfeld zu schreiben. Ich glaube es liegt daran, dass die Konsole in einem anderen Run-Bereich ist? – Goldn123

+0

Der Befehl write host dient nur zu Testzwecken. Ich habe es verwendet, um zu sehen, ob die Funktion die Namen aus der Datentabelle korrekt übernommen hat. Der Befehl netdom funktioniert nicht. Ich habe versucht, Invoke-Expression auch ohne Glück zu verwenden. Nach dem Write-Host-Befehl werden keine weiteren Ausgaben oder Fehler von der Konsole gemeldet, und die Maschine wird nicht umbenannt. –

Verwandte Themen