0

我目前正在运行下面的 PowerShell 脚本来捕获错误:

# Declare Variables
$Information = Import-Csv "c:\scripts\GUIDIssue\UPNList.csv"

# Connect to O365 Tenant
Connect-MsolService

foreach ($Info in $Information) {
(Get-MsolUser -UserPrincipalName $Info.UPN).errors.errordetail.objecterrors.errorrecord| fl > "C:\scripts\GUIDIssue\error.txt"

}

输出如下: ErrorCode : ExA77C31 ErrorParameters : ErrorParameters ErrorDescription : 无法启用邮箱 b306e73d-4fdc-43e5-af00-518b13e962ab 的新云存档 00000000-0000-0000-0000-000000000000,因为不同的存档 852910fe-b7ed -9e1a-ef70289d4c36 存在。要启用新存档,请首先禁用本地存档。在下一个 Dirsync 同步周期之后,再次启用本地存档。

在“ErrorDescription:”中,我需要获取 852910fe-67ed-4b7b-9e1a-ef70289d4c36 并将其分配为变量。我怎样才能做到这一点?

4

2 回答 2

0

怎么样:

echo "ErrorCode : ExA77C31 ErrorParameters : ErrorParameters ErrorDescription : Failed to enable the new cloud archive 00000000-0000-0000-0000-000000000000 of mailbox b306e73d-4fdc-43e5-af00-518b13e962ab because a different archive 852910fe-67ed-4b7b-9e1a-ef70289d4c36 exists. To enable the new archive, first disable the archive on-premises. After the next Dirsync sync cycle, enable the archive on-premises again." >test.txt

gc test.txt | `
    where { $_ -match "because a different archive (?<id>.*) exists" } | `
    %{ $matches.id }
于 2018-09-27T19:41:40.130 回答
0

以下对我有用。

# Split the error message on spaces so we can compare each word to our regex
$SplitErrorMessage = ((Get-Content -Path 'C:\scripts\GUIDIssue\error.txt') -split "\s")
# Assign the output from within our loop to the $ErrorMatches variable
$ErrorMatches = foreach ($Word in $SplitErrormessage) {

    if ($Word -match '\w{8}-\w{4}-\w{4}-\w{4}-\w{12}') {
        # Write-Output inside the loop adds the output to our loop variable $ErrorMatches
        Write-Output $Word
    }
}
#Return the last item in the $ErrorMatches variable as this should be the GUID you are targeting
$ErrorMatches[-1]

'852910fe-67ed-4b7b-9e1a-ef70289d4c36'

这使用了一个简单的正则表达式匹配和 PowerShell 的一个很酷的功能。将循环分配给变量会将写入 stdout 的任何内容保存到循环变量中。

然后我们返回该数组中的最后一个索引,因为您想要的值始终是最后一个与我们的正则表达式匹配的值。希望这能满足您的需求。

于 2018-09-27T19:48:47.123 回答