私は、仕事中に頻繁に使用するスクリプトを使用して、すべてのアクティブな同期デバイスをユーザーアカウントに表示しています。私はActiveSyncの有効または無効のユーザーの一覧が必要なので、最初のスクリプトを編集しました。しかし、今度は何度もループしています。もし私がヒットセット可能なヘッダーを置くと、それはさらに多く回ります。ループを引き起こしているこのコードで何が間違っていますか?私は最初に助けが必要なコードを入れて、それからコピーした作業コードを下に置きます。Exchange Powershellスクリプトのループ
私はこの問題が "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
はマットのために、たとえば、ファイルの出力です。私は最初のセットを短縮しましたが、2回目のリターン全体を含めました。私がコマンドを実行するときに得られるログは、このリストにあるものだけでなく、OU内のすべてのユーザーの完全なリストを返すことができます。これはコマンドでouの選択が2回あるためですか?
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
}
}
[the SSCCE](http://sscce.org/)のアドバイスに従ってください。 –
申し訳ありませんビル、私はどこに問題が発生していると思うかを付け加えました。なぜ私はそれを最初に述べなかったのか分かりません。 – Tekwhat
問題がどこにあるかを言うだけでは不十分です。最初からやり直して、問題を再現するのに必要な最小限のコードしか含まれていない小さなスクリプトを作成してください。私が投稿したリンクを注意深く読んでください。 –