Ask questions about creating Graphical User Interfaces (GUI) in PowerShell and using WinForms controls.
Forum rules
Do not post any licensing information in this forum.
Any code longer than three lines should be added as code using the 'Select Code' dropdown menu or attached as a file.
This topic is 5 years and 5 months old and has exceeded the time allowed for comments. Please begin a new topic or use the search feature to find a similar but newer topic.
Locked
lontru
Posts: 103
Last visit: Sun Apr 14, 2024 11:13 pm
Post
by lontru » Fri Nov 02, 2018 7:00 am
Hi all
PowerShell Studio 2018 v5.5.154
Trying to build af tool for SCCM.
Why do i get this "System.String[]" i want the macaddr "{00:0A:E4:1E:8F:6E}" in the cell.
Code: Select all
[Codebox=powershell file=Untitled.ps1]
$button_search_Click={
$textbox_devicename.Text
$combo_item = Get-CMDevice -Name "*$($textbox_devicename.Text)*" -ForceWildcardHandling | Select-Object -Property Name, MACAddresses, CreationDate
Update-DataGridView -DataGridView $datagridview_device -Item $combo_item
}
[/Codebox]
ISE Code
Powershell Studio
jvierra
Posts: 15439
Last visit: Tue Nov 21, 2023 6:37 pm
Answers: 30
Has voted: 4 times
Been upvoted: 33 times
Post
by jvierra » Fri Nov 02, 2018 7:09 am
MacAddresses is an array of MAC addresses. You need to subscript it to get the address. You can also use "-join" to concatenate the array. Use a computed property to display the addresses.
lontru
Posts: 103
Last visit: Sun Apr 14, 2024 11:13 pm
Post
by lontru » Fri Nov 02, 2018 10:11 am
could you provide a sample on how to do that?
jvierra
Posts: 15439
Last visit: Tue Nov 21, 2023 6:37 pm
Answers: 30
Has voted: 4 times
Been upvoted: 33 times
Post
by jvierra » Fri Nov 02, 2018 2:02 pm
The following will help you understand how to use computed parameters. See Ex #4
help select-object -Examples
lontru
Posts: 103
Last visit: Sun Apr 14, 2024 11:13 pm
Post
by lontru » Fri Nov 02, 2018 2:46 pm
[/Codebox]
$button_search_Click = {
$CMDevices = Get- CMDevice -Name "*$($textbox_devicename.Text)*" - ForceWildcardHandling - Fast | Select-Object -Property ResourceId
$CMDeviceObjects = @ ( )
foreach ( $CMDevice in $CMDevices )
{
$CMResource = Get- CMResource - ResourceId "$($CMDevice.ResourceId)" - Fast | Select-Object -Property Name, MACAddresses, CreationDate, LastLogonUserName
$CMResource .Name
$CMDeviceObject = New-Object -TypeName psobject
$CMDeviceObject | Add-Member -MemberType NoteProperty -Name Name -Value $CMResource .Name
$CMDeviceObject | Add-Member -MemberType NoteProperty -Name MACAddresses -Value $( $CMResource .MACAddresses - join ", " )
$CMDeviceObject | Add-Member -MemberType NoteProperty -Name CreationDate -Value $CMResource .CreationDate
$CMDeviceObject | Add-Member -MemberType NoteProperty -Name LastLogonUserName -Value $CMResource .LastLogonUserName
$CMDeviceObjects += $CMDeviceObject
}
Update- DataGridView - DataGridView $datagridview_device - Item $CMDeviceObjects
}
lontru
Posts: 103
Last visit: Sun Apr 14, 2024 11:13 pm
Post
by lontru » Fri Nov 02, 2018 3:05 pm
jvierra wrote: ↑ Fri Nov 02, 2018 2:02 pm
The following will help you understand how to use computed parameters. See Ex #4
help select-object -Examples
With above i came to this solution.
Get- CMDevice -Name * 9999 * - ForceWildcardHandling | foreach { ( Get- CMResource - ResourceId "$($PSItem.ResourceId)" - Fast | Select-Object -Property Name, CreationDate,@ { Name= "MACAddresses" ; Expression = { $( $_ .MACAddresses) - join ", " } } ) }
lontru
Posts: 103
Last visit: Sun Apr 14, 2024 11:13 pm
Post
by lontru » Fri Nov 02, 2018 3:10 pm
$button_search_Click = {
$CMDevices = Get- CMDevice -Name "*$($textbox_devicename.Text)*" - ForceWildcardHandling - fast | foreach { ( Get- CMResource - ResourceId "$($PSItem.ResourceId)" - Fast | Select-Object -Property Name, CreationDate, LastLogonUserName,@ { Name = "MACAddresses" ; Expression = { $( $_ .MACAddresses) - join ", " } } ) }
Update- DataGridView - DataGridView $datagridview_device - Item $CMDevices
}
Thank you. Think above code is the best solution. Learned about the -join and 'Name and Expression keys'
lontru
Posts: 103
Last visit: Sun Apr 14, 2024 11:13 pm
Post
by lontru » Fri Nov 02, 2018 3:27 pm
How do i autosize to the whole macaddress is visible? and the name space is smaller?
jvierra
Posts: 15439
Last visit: Tue Nov 21, 2023 6:37 pm
Answers: 30
Has voted: 4 times
Been upvoted: 33 times
Post
by jvierra » Fri Nov 02, 2018 3:28 pm
Ok. Now lets simplify you code and make it readable and easier to maintain:
Code: Select all
$button_search_Click={
$properties = @(
'Name',
'CreationDate',
'LastLogonUserName',
@{ n='MACAddresses'; e = {$_.MACAddresses -join ', '}}
)
$CMDevices = Get-CMDevice -Name "*$($textbox_devicename.Text)*" -ForceWildcardHandling -fast |
ForEach-Object{
Get-CMResource -ResourceId $PSItem.ResourceId -Fast
} |
Select-Object $properties
Update-DataGridView -DataGridView $datagridview_device -Item $CMDevices
}
Avoid long code lines by using PowerShell's capability to use advanced arguments and syntax formatting.
jvierra
Posts: 15439
Last visit: Tue Nov 21, 2023 6:37 pm
Answers: 30
Has voted: 4 times
Been upvoted: 33 times
Post
by jvierra » Fri Nov 02, 2018 3:32 pm
lontru wrote: ↑ Fri Nov 02, 2018 3:27 pm
How do i autosize to the whole macaddress is visible? and the name space is smaller?
Set the autosize property of the grid.
This topic is 5 years and 5 months old and has exceeded the time allowed for comments. Please begin a new topic or use the search feature to find a similar but newer topic.
Locked