我有一个脚本,我经常在工作中使用该脚本来显示用户帐户上的所有活动同步设备。我需要一个启用Activesnc或残疾用户的列表,因此我编辑了第一个脚本。但是,现在它循环多次,如果我放置 - hidetableheadders,它甚至会循环更多。在此导致循环的代码中,我有什么错?我将将我需要帮助的代码放在首位,然后将我从下面复制的工作代码放置。
我相信这个问题在于" foreach"块,但是无论我更改它,甚至将其删除,文件都是空的。
启用ActiveSync代码:
#Settings for file ouput
$fLocation = "D:Exchange Reports"
#Read OU imput from console:
$OU = Read-Host -Prompt "Input the OU name to search: (0202 - Dev Bank)"
#lookup users based on the OU
$Ulist = Get-CASMailbox -organizationalunit "OU=$OU,OU=Hosted Exchange Customers,DC=CSIDMZ,DC=local" -ResultSize Unlimited
foreach ($user in $Ulist)
{
$aSyncUser = Get-CASMailbox -organizationalunit "OU=$OU,OU=Hosted Exchange Customers,DC=ThisIsMyDC,DC=local" | where { $_.ActiveSyncEnabled -eq 'True'} | ft name, activesyncenabled -autosize
if ($aSyncUser -ne $null)
{
$deviceID = $aSyncUser | out-string
$Content = "User: $user $deviceID"
Add-Content $fName $Content
}
}
write-host "The script completed successfully! The output file can be found at $fName" -ForeGroundColor Yellow
原始代码:
#Settings for file ouput
$fLocation = "D:Exchange Reports"
#Read OU imput from console:
$OU = Read-Host -Prompt "Input the OU name to search: (0202 - Dev Bank)"
#lookup users based on the OU
$Ulist = get-mailbox -OrganizationalUnit "OU=$OU,OU=Hosted Exchange Customers,DC=ThisIsMyDC,DC=local" -ResultSize Unlimited
foreach ($user in $Ulist)
{
$aSyncUser = get-activesyncdevice -mailbox $user.SAMAccountName -ErrorAction SilentlyContinue |ft DeviceID -HideTableHeaders
if ($aSyncUser -ne $null)
{
$deviceID = $aSyncUser | out-string
$Content = "User: $user $deviceID"
Add-Content $fName $Content
}
}
write-host "The script completed successfully! The output file can be found at $fName" -ForeGroundColor Yellow
这是文件的输出,例如Matt的示例。我缩短了第一组,但包括第二组的全部回报。我运行命令时获得的日志,从我能告诉的,不仅是此列表中的那些用户,返回OU中的每个用户的完整列表。这是由于命令中两次OU选择吗?
User: Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
Name ActiveSyncEnabled
---- -----------------
Judy X Langford True
User: Microsoft.PowerShell.Commands.Internal.Format.GroupStartData
Name ActiveSyncEnabled
---- -----------------
Judy X Langford True
我编辑了命令,并得到了此返回,这就是让我失望的是,它正在为每个用户返回结果一次,我只需要一次结果即可。我包括要显示的整个结果设置,用户Sharla不在其下方的返回列表中。
User: Domain.local/Hosted Exchange Customers/This is my OU/Sharla x Ryan
Name ActiveSyncEnabled
---- -----------------
Judy X Langford True
Sandy X Stuckey True
0718 test True
Shelby D Hansche True
Toni X Brooks True
Katie X Strain True
Monica Minter True
Chloe X Mims True
Jay X Davis True
Aaron Calvit True
Joe Nichols True
Sherry X Rice True
Tracey X Wardlaw True
Brad X Davis True
Chris X Lannom True
Haley X Burleson True
Cody X Deal True
Cris X Day True
Mitch X Stone True
User: Domain.local/Hosted Exchange Customers/This is my OU/Judy X Langford
Name ActiveSyncEnabled
---- -----------------
Judy X Langford True
根据Matt的建议,我在$ user.samaccountname的行中添加了我的建议。这打破了输出,所以我必须这样做,但是现在它激发了我的需要。
#lookup users based on the OU
Get-CASMailbox -OrganizationalUnit "OU=$OU,OU=Hosted Exchange Customers,DC=CSIDMZ,DC=local" -ResultSize unlimited | select name,activesyncenabled >>$fLocation+$OU+"_ActiveSyncEnabled.txt"
foreach ($user in $Ulist)
{
$aSyncUser = get-activesyncdevice -mailbox $user.SAMAccountName -ErrorAction SilentlyContinue |ft name, activesyncenabled -HideTableHeaders
if ($aSyncUser -ne $null)
{
$deviceID = $aSyncUser | out-string
$Content = "User: $user $deviceID"
Add-Content $fName $Content
}
}
这可能不是整个问题,但它肯定是其中的很大一部分
$aSyncUser = Get-CASMailbox -organizationalunit "OU=$OU,OU=Hosted Exchange Customers,DC=ThisIsMyDC,DC=local" | where { $_.ActiveSyncEnabled -eq 'True'} | ft name, activesyncenabled -autosize
- 您没有获得一个用户。您在每次通过时都会在该OU中获得所有用户。我无法想象这就是您想要的。
- 您对格式表的使用只是在要求解决问题。在这里查看我对该主题的答案,我如何存储格式桌的输出以供以后使用
我需要一个启用或禁用的用户的ActiveSync列表
那么所有用户?不确定为什么您在循环外搜索Cas-Mailbox,以在循环中的任何一个OU中再次搜索。