我正在尝试从SCCM中获取一些数据,并将此信息放置在datagrid中。我的datagrid的代码如下:
[xml]$xaml = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Window_GuiManagement" Title="SCCM" WindowStartupLocation = "CenterScreen"
Width = "587.000" Height = "500.000" Visibility="Visible" WindowStyle="ToolWindow" ResizeMode="NoResize" Topmost="True">
<Grid>
<DataGrid x:Name="datagrid_result" ItemsSource="{Binding}" Margin="11,10,10,0" VerticalAlignment="Top" Height="299" SelectionMode="Single" AlternationCount="1">
</DataGrid>
</Grid>
</Window>
"@
我捕捉到的SCCM信息如下:
$data = Get-CMDevice | Where-Object {
$_.LastLogonUser -like '*Walker*'
} | Select Name
我尝试了
$datagrid_result.ItemsSource = $data
结果是System.Object
,与您运行例如时得到的相同。 Get-Culture | Select Name
,但会导致错误:
异常设置“ ItemsSource”:“无法转换类型的“ @ {Name = PCName}”值 “ Selected.Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine.WqlResultObject”以键入“ System.Collections.IEnumerable”。”
最后,我希望拥有的是特定用户最近登录的所有计算机的列表。
答案 0 :(得分:1)
将Select Name
更改为Select -Expand Name
,并将$data
的类型更改为[string[]]
:
[string[]]$data = Get-CMDevice | Where-Object {
$_.LastLogonUser -like '*Walker*'
} | Select -Expand Name
通过这种方式,您将分配一个字符串数组作为ItemSource
(它将接受),而不是单个WQL查询结果对象