我正在解析 Windows 系统 ($system) 的所有登录信息。我正在尝试获取域、用户、会话 ID 的元组/数组。
$logged_on_users = Get-WmiObject Win32_LoggedOnUser -ComputerName $system
Run Code Online (Sandbox Code Playgroud)
然后我调用类型的函数来提取每个值中的两个变量(Antecedent 和 Depedent):
$all_user_sessions = @()
foreach ($x in $logged_on_users){
$t = @()
$t += $x.GetPropertyValue("Antecedent").tostring()
$t += $x.GetPropertyValue("Dependent").tostring()
$all_user_sessions += $t
}
Run Code Online (Sandbox Code Playgroud)
单行数组理解的语法是什么(如果可能的话)?我有:
$all_user_sessions = ($logged_on_users | % { @($_.GetPropertyValue("Antecedent").tostring(), $_.GetPropertyValue("Dependent").tostring() ) })
Run Code Online (Sandbox Code Playgroud)
当我添加
foreach ($s in $all_user_sessions){
echo $s.GetType().FullName
}
Run Code Online (Sandbox Code Playgroud)
类型是字符串,而不是数组。
这听起来有点奇怪,但您需要在ForEach-Object循环中的数组之前添加一个逗号:
$all_user_sessions = ($logged_on_users | % { ,@($_.GetPropertyValue("Antecedent").tostring(), $_.GetPropertyValue("Dependent").tostring() ) })
Run Code Online (Sandbox Code Playgroud)
在编写代码时,您将所有内容添加到单个数组中。像这样放置逗号将创建每个索引的数组(实际上是一个对象)。
| 归档时间: |
|
| 查看次数: |
2150 次 |
| 最近记录: |