Powershell 指定日期范围内没有该用户的用户会话数据

Powershell 指定日期范围内没有该用户的用户会话数据,powershell,Powershell,我正在使用以下查询从o365 skype for business service检索指定日期范围内的用户会话信息 $mbxes = Get-CsOnlineUser | select UserPrincipalName $startTime = "5/1/2018" foreach ($mbx in $mbxes) { Get-CsUserSession -User $mbx -StartTime $startTime } 运行此查询会对我正在检索的所有邮箱发出以下警告: WARNING

我正在使用以下查询从o365 skype for business service检索指定日期范围内的用户会话信息

$mbxes = Get-CsOnlineUser | select UserPrincipalName
$startTime = "5/1/2018"
foreach ($mbx in $mbxes) {
  Get-CsUserSession -User $mbx -StartTime $startTime
}
运行此查询会对我正在检索的所有邮箱发出以下警告:

WARNING: There is no user session data for the user @{UserPrincipalName=account1@companyX.onmicrosoft.com} within the specified date range 01/05/2018 00:00:00 -07:00 to
11/06/2018 05:22:31 -07:00.
但是,当我仅运行此命令时:

$mbxes = "account1@companyX.onmicrosoft.com"
$startTime = "5/1/2018"
foreach ($mbx in $mbxes) {
  Get-CsUserSession -User $mbx -StartTime $startTime
}
我正在获取响应此邮箱的所有会话数据。
我想知道为什么当我创建一个包含所有邮箱地址的变量时,即使会话数据存在,也不返回数据。

用户:
@{UserPrincipalName=account1@companyX.onmicrosoft.com}
不是有效的userPrincipalName

更改此项:

$mbxes = Get-CsOnlineUser | select UserPrincipalName
致:


请参阅:

在第一个命令中包括
|选择UserPrincipalName
。这将把
$mboxes
分配为一个只具有
UserPrincipalName
属性的对象数组

从第二个命令看,似乎
Get CsUserSession
希望
-User
参数是字符串,但您仍在传递一个对象。您可能可以使用以下任一方法解决此问题:

UserPrincipalName
展开为一个字符串,那么就有了一个字符串数组:

$mbxes = Get-CsOnlineUser | select -ExpandProperty UserPrincipalName
$startTime = "5/1/2018"
foreach ($mbx in $mbxes) {
  Get-CsUserSession -User $mbx -StartTime $startTime
}
展开以获取字符串数组的另一种方法:

$mbxes = (Get-CsOnlineUser).UserPrincipalName
$startTime = "5/1/2018"
foreach ($mbx in $mbxes) {
  Get-CsUserSession -User $mbx -StartTime $startTime
}
获取会话时显式选择属性:

$mbxes = Get-CsOnlineUser | select UserPrincipalName
$startTime = "5/1/2018"
foreach ($mbx in $mbxes) {
  Get-CsUserSession -User $mbx.UserPrincipalName -StartTime $startTime
}

或者使用
(Get-CsOnlineUser)。UserPrincipalName
@Avshalom非常感谢您的回答!
$mbxes = Get-CsOnlineUser | select UserPrincipalName
$startTime = "5/1/2018"
foreach ($mbx in $mbxes) {
  Get-CsUserSession -User $mbx.UserPrincipalName -StartTime $startTime
}