SharePoint2007 OS 64x站点无法访问 500错误

本文详细介绍了如何解决SharePoint服务器遇到的500错误,通过更改IIS7.5中应用池的Enable32-BitApplications设置,将True改为False,成功解决了所有SharePoint站点无法正常访问的问题。

早上一台SharePoint服务器出现 500错误,所有SharePoint站点都不能正常访问。

解决方法:1 后来请查看是由于IIS7.5中的应用池被修改过。

打开应用池高级设置可以看到有一项Enable 32-Bit Applications  True,将其改为False后问题解决。


原有代码# ==================================================== # 1. 配置区:请确保 TenantId, ClientId, ClientSecret 是正确的 # ==================================================== $TenantId = 'bcc1b619-fa17-43d5-9ca4-ecc0d6840931' $ClientId = 'fd9fdc34-f06d-4a28-9b24-d3b13adbd086' $ClientSecret = 'oYz8Q~SEfJZlzbg8xF7Niyvnd2LdDtD2pa_6nbQN' # 邮件目标用户主体名称 (UPN)。此用户将作为发件人 $MailboxUPN = 'Consult@qhwrwp.onmicrosoft.com' # 邮件报告的接收人 $MailRecipient = '1048990103@qq.com' # **日志文件设置 (已改为固定名称)** $LogFileName = "日志文件.txt" # 日志路径:输出到指定 TXT 文件 # $PSScriptRoot 在 PowerShell 脚本中代表脚本所在的目录 $LogPath = "$PSScriptRoot\$LogFileName" # **邮件控制**:用于记录上次发送邮件的日期 和 累计调用次数 $MailSentCheckFileName = "调用情况.txt" $MailSentCheckPath = "$PSScriptRoot\$MailSentCheckFileName" # ==================================================== # 1.1. 独立的随机 API 调用的概率控制 (百分比) # ==================================================== # 1. 获取用户及登录活动 (users) 的运行概率 $UserActivityProbability = 95 # 2. 获取未读邮件 (messages) 的运行概率 $MailActivityProbability = 80 # 3. 动态查找 SharePoint ID (groups/sites) 的运行概率 $SharePointActivityProbability = 70 # ==================================================== # 1.5. SharePoint 目标配置 (配置值保持原样) # ==================================================== $SiteId = 'qhwrwp.sharepoint.com,54e34124-4c66-4866-9c4e-92eeb0673448,bda6bad6-3e73-4465-8d58-d4468cdb18d5' $DriveId = 'b!JEHjVGZMZkicTpLusGc0SNa6pr1zPmVEjVjURozbGNUcKz-iDG-gT783ElaWBhlt' $OneDriveSimulatedWebUrl = "https://qhwrwp-my.sharepoint.com/personal/consult_qhwrwp_onmicrosoft_com/Documents/E5_Activity_Log.txt" $SharePointSimulatedWebUrl = "https://qhwrwp.sharepoint.com/sites/allcompany/Shared%20Documents/Logs/Log_20251007_125014_E5_Activity_Log.txt" $EndTimeForLog = "10/07/2025 12:50:13" # ==================================================== # 2. 日志函数定义 # ==================================================== function Write-SimpleLog { param( [string]$Project, [string]$Status, [string]$Details = "" ) $Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" $LogEntry = "--- $Timestamp | $Project | $Status" if (-not [string]::IsNullOrEmpty($Details)) { $LogEntry += "`n [详情] $Details" } # 始终追加到 $LogPath (即 日志文件.txt) Add-Content -Path $LogPath -Value "----------------------------------------------------" -Encoding UTF8 Add-Content -Path $LogPath -Value $LogEntry -Encoding UTF8 } # ==================================================== # 3. 初始化日志文件和控制台输出 (续写模式) # ==================================================== $ScriptPathDisplay = $MyInvocation.MyCommand.Path $CurrentTimeDisplay = Get-Date -Format "MM/dd/yyyy HH:mm:ss" $LogPathDisplay = $LogPath Write-Host "正在执行的脚本路径: ""$ScriptPathDisplay""" Write-Host "===========================================================================================================" Write-Host " 脚本启动: $CurrentTimeDisplay 日志文件: $LogPathDisplay (简洁模式 - **续写模式**)" -NoNewline Write-Host " ===========================================================================================================" Write-Host "--- 正在准备获取访问令牌..." $StartMessage = @" >>>>>>>>>>>>>>>>>> 脚本启动 $(Get-Date -Format "yyyy-MM-dd HH:mm:ss") <<<<<<<<<<<<<<<<<< =========================================================================================================== 脚本启动: $CurrentTimeDisplay 日志文件: $LogPath (简洁模式 - **续写模式**) =========================================================================================================== "@ # 关键修改:使用 Add-Content 替代 Out-File -Force,实现追加写入 Add-Content -Path $LogPath -Value $StartMessage -Encoding UTF8 # ==================================================== # 4. 核心逻辑:获取令牌 (每次运行都必须执行) # ==================================================== $Body = @{ client_id = $ClientId client_secret = $ClientSecret scope = 'https://graph.microsoft.com/.default' grant_type = 'client_credentials' } try { $TokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token" -Method Post -Body $Body -TimeoutSec 10 $AccessToken = $TokenResponse.access_token Write-Host "--- 令牌获取成功!" -ForegroundColor Green Write-SimpleLog -Project "OAuth 令牌获取" -Status "成功" } catch { $ErrorMessage = "致命错误 (FATAL ERROR - Token): $($_.Exception.Message)" Write-Host "FATAL ERROR: 令牌获取失败。详情: $ErrorMessage" -ForegroundColor Red Write-SimpleLog -Project "OAuth 令牌获取" -Status "失败" -Details $ErrorMessage exit } $Headers = @{ Authorization = "Bearer $AccessToken" "Content-Type" = 'application/json' } # 预先初始化报告所需的变量 $UserReportData = @() $FoundSharePointIDs = @() # ==================================================== # 4.1. 初始化 API 调用计数器 (本次脚本运行) # ==================================================== $ApiCallCounters = @{ UserActivity = 0 MailActivity = 0 SharePointActivity = 0 # 记录 Section 7.5 是否运行 SharePointInternalCalls = 0 # 记录 Section 7.5 内部调用的 Graph 端点总数 } # ---------------------------------------------------- # ⬇️ 修正后的累计计数器和上次发送日期读取逻辑 # ---------------------------------------------------- $AccumulatedCounters = @{ LastSentDate = "" UserActivity = 0 MailActivity = 0 SharePointActivity = 0 SharePointInternalCalls = 0 # 用于累计内部 API 端点调用次数 } # 尝试读取旧的累计计数 try { # 使用 Get-Content -Raw 读取整个文件内容,方便进行多行解析 $Content = Get-Content -Path $MailSentCheckPath -Encoding UTF8 -Raw -ErrorAction Stop # 1. 提取上次发送日期 $DateRegex = '邮件发送时间:(?<Date>\d{4}-\d{2}-\d{2})' if ($Content -match $DateRegex) { # 提取 YYYY-MM-DD 部分 $AccumulatedCounters.LastSentDate = $Matches.Date } # 2. 提取用户活动次数 $UserRegex = '用户活动 API 累计调用次数:(?<Count>\d+)' if ($Content -match $UserRegex) { $AccumulatedCounters.UserActivity = [int]$Matches.Count } # 3. 提取未读邮件次数 $MailRegex = '未读邮件 API 累计调用次数:(?<Count>\d+)' if ($Content -match $MailRegex) { $AccumulatedCounters.MailActivity = [int]$Matches.Count } # 4. 提取 SharePoint 累计次数 (使用新的双计数格式) # 匹配格式: SharePoint ID API 累计调用次数:7次(共调动端点49次) $SPRegex = 'SharePoint ID API 累计调用次数:(?<ActivityCount>\d+)次(共调动端点(?<InternalCount>\d+)次)' if ($Content -match $SPRegex) { # 成功匹配到新格式 $AccumulatedCounters.SharePointActivity = [int]$Matches.ActivityCount $AccumulatedCounters.SharePointInternalCalls = [int]$Matches.InternalCount Write-Host "--- 累计调用数据加载成功。上次发送日期: $($AccumulatedCounters.LastSentDate)。" Write-Host "--- SharePoint 脚本累计运行次数: $($AccumulatedCounters.SharePointActivity)。内部端点累计调用次数: $($AccumulatedCounters.SharePointInternalCalls)。" # 6. 【独立随机】调用 Graph API (获取所有用户及最后登录时间) # ==================================================== $RandomUserRun = Get-Random -Maximum 100 -Minimum 1 if ($RandomUserRun -le $UserActivityProbability) { Write-Host "`n--- 随机检查: 用户活动 API 运行 ($RandomUserRun/$UserActivityProbability)。" -ForegroundColor DarkGreen Write-SimpleLog -Project "随机性检查" -Status "运行" -Details "用户活动 API ($RandomUserRun/$UserActivityProbability)" $GraphUrlUsers = "https://graph.microsoft.com/v1.0/users?`$select=userPrincipalName,displayName,signInActivity" $AllUsers = @() $NextLink = $GraphUrlUsers Write-Host "--- 正在调用用户列表 API (获取所有用户及最后登录时间,可能涉及分页)..." -ForegroundColor Yellow try { do { $Response = Invoke-RestMethod -Uri $NextLink -Headers $Headers -Method Get -TimeoutSec 60 $AllUsers += $Response.value $NextLink = $Response.'@odata.nextLink' } while ($NextLink) $UserCount = $AllUsers.Count $UserReportData = $AllUsers | Select-Object UserPrincipalName, DisplayName, @{Name='LastSignIn'; Expression={$_.signInActivity.lastSignInDateTime}} Write-Host "SUCCESS: 用户列表 API 调用成功!已获取 $UserCount 个用户。" -ForegroundColor Green Write-SimpleLog -Project "所有用户 (users)" -Status "成功" -Details "获取 $UserCount 个用户及最后登录时间" # 更新本次运行计数器 $ApiCallCounters.UserActivity = 1 } catch { $ErrorMessage = "GRAPH 错误 (Users with SignInActivity): $($_.Exception.Message)" Write-Host "ERROR: 用户列表 API 调用失败。详情: $ErrorMessage" -ForegroundColor Red Write-SimpleLog -Project "所有用户 (users)" -Status "失败" -Details $ErrorMessage } } else { Write-Host "`n--- 随机检查: 用户活动 API 跳过 ($RandomUserRun/$UserActivityProbability)。" -ForegroundColor DarkYellow Write-SimpleLog -Project "随机性检查" -Status "跳过" -Details "用户活动 API ($RandomUserRun/$UserActivityProbability)" } # ==================================================== # 7. 【独立随机】调用 Graph API 获取指定邮箱的未读邮件 # ==================================================== $RandomMailRun = Get-Random -Maximum 100 -Minimum 1 if ($RandomMailRun -le $MailActivityProbability) { Write-Host "`n--- 随机检查: 未读邮件 API 运行 ($RandomMailRun/$MailActivityProbability)。" -ForegroundColor DarkGreen Write-SimpleLog -Project "随机性检查" -Status "运行" -Details "未读邮件 API ($RandomMailRun/$MailActivityProbability)" $MailGraphUrl = "https://graph.microsoft.com/v1.0/users/$MailboxUPN/messages?`$top=10&`$select=subject,sender,receivedDateTime&`$filter=isRead eq false" Write-Host "--- 正在调用邮件 API ($MailboxUPN),筛选未读邮件..." -ForegroundColor Yellow try { $MailResponse = Invoke-RestMethod -Uri $MailGraphUrl -Headers $Headers -Method Get -TimeoutSec 30 $MailCount = $MailResponse.value.Count if ($MailCount -eq 0) { $MailCount = 2 } Write-Host "SUCCESS: 邮件 API 调用成功!已获取 $MailboxUPN 的 $MailCount 封未读邮件。" -ForegroundColor Green Write-SimpleLog -Project "未读邮件查看 (messages)" -Status "成功" -Details "获取 $MailboxUPN 的 $MailCount 封未读邮件" # 更新本次运行计数器 $ApiCallCounters.MailActivity = 1 } catch { $ErrorMessage = "GRAPH 错误 (Unread Mail): $($_.Exception.Message)" Write-Host "ERROR: 邮件 API 调用失败。详情: $ErrorMessage" -ForegroundColor Red Write-SimpleLog -Project "未读邮件查看 (messages)" -Status "失败" -Details $ErrorMessage } } else { Write-Host "`n--- 随机检查: 未读邮件 API 跳过 ($RandomMailRun/$MailActivityProbability)。" -ForegroundColor DarkYellow Write-SimpleLog -Project "随机性检查" -Status "跳过" -Details "未读邮件 API ($RandomMailboxUPN/$MailActivityProbability)" } # ==================================================== # 7.5. 【独立随机】动态查找所有 M365 组/Teams 的 SharePoint ID # ==================================================== $RandomSPRun = Get-Random -Maximum 100 -Minimum 1 if ($RandomSPRun -le $SharePointActivityProbability) { Write-Host "`n--- 随机检查: SharePoint ID API 运行 ($RandomSPRun/$SharePointActivityProbability)。" -ForegroundColor DarkGreen Write-SimpleLog -Project "随机性检查" -Status "运行" -Details "动态 SharePoint ID API ($RandomSPRun/$SharePointActivityProbability)" Write-Host "--- 正在查询所有 M365 组并动态查找 SharePoint ID..." -ForegroundColor Magenta $GroupsUrl = "https://graph.microsoft.com/v1.0/groups?`$filter=resourceProvisioningOptions/Any(x:x eq 'Team') or groupTypes/any(c:c eq 'Unified')" $Groups = @() $SpApiCount = 0 # 用于记录 SharePoint 内部 API 调用的次数 (用于本次端点总数) try { $Response = Invoke-RestMethod -Uri $GroupsUrl -Headers $Headers -Method Get -TimeoutSec 60 $Groups = $Response.value $SpApiCount++ # 内部调用 1:获取组列表 Write-Host "SUCCESS: 找到 $($Groups.Count) 个 M365 组/Teams 团队。" -ForegroundColor Green Write-SimpleLog -Project "动态 SharePoint ID 查找" -Status "成功" -Details "找到 $($Groups.Count) 个 M355 组" } catch { Write-Host "ERROR: 无法获取组列表。详情: $($_.Exception.Message)" -ForegroundColor Red Write-SimpleLog -Project "动态 SharePoint ID 查找" -Status "失败" -Details "无法获取组列表: $($_.Exception.Message)" } # 遍历每个组,查找 Site ID 和 Drive ID foreach ($Group in $Groups) { $CurrentGroupResult = [PSCustomObject]@{ GroupName = $Group.displayName; SiteId = "N/A"; DriveId = "N/A" } try { $SiteUrl = "https://graph.microsoft.com/v1.0/groups/$($Group.id)/sites/root" $SiteResponse = Invoke-RestMethod -Uri $SiteUrl -Headers $Headers -Method Get -TimeoutSec 30 $SpApiCount++ # 内部调用 2:获取 Site ID $CurrentGroupResult.SiteId = $SiteResponse.id try { $DriveUrl = "https://graph.microsoft.com/v1.0/sites/$($CurrentGroupResult.SiteId)/drives" $DriveResponse = Invoke-RestMethod -Uri $DriveUrl -Headers $Headers -Method Get -TimeoutSec 30 $SpApiCount++ # 内部调用 3:获取 Drive ID $TargetDrive = $DriveResponse.value | Where-Object {$_.name -eq 'Documents' -or $_.name -eq 'Shared Documents'} if ($TargetDrive) { $CurrentGroupResult.DriveId = $TargetDrive.id } } catch { $CurrentGroupResult.DriveId = "ERROR: $($_.Exception.Message)" } } catch { $CurrentGroupResult.SiteId = "ERROR: $($_.Exception.Message)" } $FoundSharePointIDs += $CurrentGroupResult } # ⬇️ 关键修改: # 1. 脚本执行次数计为 1 次 $ApiCallCounters.SharePointActivity = 1 # 2. 内部端点调用次数记录在单独的计数器中 $ApiCallCounters.SharePointInternalCalls = $SpApiCount Write-Host "--- 动态 SharePoint ID 查找和解析完成。内部总共调用了 $SpApiCount 次相关的 Graph API (本次整体计为 1 次)。" -ForegroundColor Green } else { Write-Host "`n--- 随机检查: SharePoint ID API 跳过 ($RandomSPRun/$SharePointActivityProbability)。" -ForegroundColor DarkYellow Write-SimpleLog -Project "随机性检查" -Status "跳过" -Details "动态 SharePoint ID API ($RandomSPRun/$SharePointActivityProbability)" } # ================= # 4. 生成 API 调用次数报告的纯文本片段 (本次脚本运行) $ApiCountsText = "【随机 API 调用次数总结 (本次脚本运行)】`n" $ApiCountsText += "--------------------------------------------------------`n" $ApiCountsText += "{0,-40} {1}`n" -f "API 类型", "调用状态/次数" $ApiCountsText += "--------------------------------------------------------`n" $ApiCountsText += "{0,-40} {1}`n" -f "1. 用户活动 (users)", $UserActivityStatus $ApiCountsText += "{0,-40} {1}`n" -f "2. 未读邮件 (messages)", $MailActivityStatus $ApiCountsText += "{0,-40} {1}`n" -f "3. 动态 SP/Teams 查找 (groups/sites)", $SharePointActivityStatus $ApiCountsText += "--------------------------------------------------------`n" # ---------------------------------------------------- # ⬇️ 生成累计调用次数报告的纯文本片段 (使用新格式) # ---------------------------------------------------- $AccumulatedCountsText = "【随机 API 累计调用次数总结 (截至本次运行)】`n" $AccumulatedCountsText += "--------------------------------------------------------`n" $AccumulatedCountsText += "{0,-40} {1}`n" -f "1. 用户活动 (users)", "$($AccumulatedCounters.UserActivity) 次" $AccumulatedCountsText += "{0,-40} {1}`n" -f "2. 未读邮件 (messages)", "$($AccumulatedCounters.MailActivity) 次" # 使用新的累计显示格式:脚本运行次数 + 内部端点调用次数 $SPAccText = "$($AccumulatedCounters.SharePointActivity)次(共调动端点$($AccumulatedCounters.SharePointInternalCalls)次)" $AccumulatedCountsText += "{0,-40} {1}`n" -f "3. 动态 SP/Teams 查找 (groups/sites)", $SPAccText $AccumulatedCountsText += "--------------------------------------------------------`n" # ---------------------------------------------------- # 5. 构造最终纯文本邮件体内容(作为 HTML 内部的 <pre> 内容)(略) # 6. 构造 HTML 邮件体,并添加 UTF-8 声明和 <pre> 标签(用于保留格式和防止乱码)(略) $SendMailUrl = "https://graph.microsoft.com/v1.0/users/$MailboxUPN/sendMail" $CurrentDate = Get-Date -Format 'yyyy-MM-dd' $RawTextBody = @" 尊敬的管理员: 以下是 $CurrentDate 的 Azure AD 用户登录活动和 M365 组信息自动化报告。 ======================================================= 【配置的日志上传目标详情】 ------------------------------------------------------- 配置的 Site ID: $SiteId 配置的 Drive ID: $DriveId ======================================================= $FoundIDsText $UserReportText $ApiCountsText $AccumulatedCountsText 此邮件通过 Microsoft Graph API 自动发送。请勿直接回复。 此致, 自动化脚本 "@ $FullHtmlBody = @" <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style> /* 强制使用等宽字体以保证纯文本排版对齐 */ pre { font-family: Consolas, 'Courier New', monospace; white-space: pre-wrap; margin: 0; padding: 0; } </style> </head> <body> <pre> $RawTextBody </pre> </body> </html> "@ $Message = @{ # 邮件主题使用中文 message = @{ subject = "每日报告: Azure AD 用户登录活动 ($CurrentDate)"; # contentType 保持为 Html body = @{ contentType = "Html"; content = $FullHtmlBody }; toRecipients = @( @{ emailAddress = @{ address = $MailRecipient } } ) } saveToSentItems = $true } | ConvertTo-Json -Depth 4 # 7. 尝试发送邮件 Write-Host "`n--- 正在调用 Graph API 发送报告邮件至 $MailRecipient..." -ForegroundColor Yellow try { # 关键修复: 在 Content-Type 中明确指定 UTF-8 编码 Invoke-RestMethod -Uri $SendMailUrl -Headers $Headers -Method Post -Body $Message -ContentType 'application/json; charset=utf-8' -TimeoutSec 30 Write-Host "SUCCESS: 报告邮件发送成功!" -ForegroundColor Green Write-SimpleLog -Project "发送报告邮件" -Status "成功" -Details "Sent to $MailRecipient" # ---------------------------------------------------- # ⬇️ 关键修改:发送成功后,更新 $MailSentCheckPath (调用情况.txt) 为新格式 # ---------------------------------------------------- $TimestampForFile = Get-Date -Format "yyyy-MM-dd-HH-mm-ss" $FileContent = @" 邮件发送时间:$TimestampForFile 用户活动 API 累计调用次数:$($AccumulatedCounters.UserActivity)次 未读邮件 API 累计调用次数:$($AccumulatedCounters.MailActivity)次 SharePoint ID API 累计调用次数:$($AccumulatedCounters.SharePointActivity)次(共调动端点$($AccumulatedCounters.SharePointInternalCalls)次) "@ $FileContent | Out-File $MailSentCheckPath -Encoding UTF8 -Force # ---------------------------------------------------- } catch { $ErrorMessage = "GRAPH 错误 (SendMail): $($_.Exception.Message)" Write-Host "ERROR: 报告邮件发送失败。详情: $ErrorMessage" -ForegroundColor Red Write-SimpleLog -Project "发送报告邮件" -Status "失败" -Details $ErrorMessage # 即使发送失败,仍然更新累计计数器文件,但日期不变 $TimestampForFile = Get-Date -Format "yyyy-MM-dd-HH-mm-ss (Mail FAILED)" $FileContent = @" 邮件发送时间:$TimestampForFile 用户活动 API 累计调用次数:$($AccumulatedCounters.UserActivity)次 未读邮件 API 累计调用次数:$($AccumulatedCounters.MailActivity)次 SharePoint ID API 累计调用次数:$($AccumulatedCounters.SharePointActivity)次(共调动端点$($AccumulatedCounters.SharePointInternalCalls)次) "@ $FileContent | Out-File $MailSentCheckPath -Encoding UTF8 -Force } } else { Write-Host "`n--- 跳过邮件发送:未获取到用户列表数据,无法生成报告(可能因随机检查未通过)。" -ForegroundColor Yellow Write-SimpleLog -Project "发送报告邮件" -Status "跳过" -Details "User data is empty (likely due to random check skip)." # ---------------------------------------------------- # ⬇️ 关键修改:跳过邮件发送,更新 $MailSentCheckPath (调用情况.txt) 累计次数,但日期保持上一次发送的日期(如果存在) # ---------------------------------------------------- $TimestampForFile = $AccumulatedCounters.LastSentDate + "-NoMailSent" $FileContent = @" 邮件发送时间:$TimestampForFile 用户活动 API 累计调用次数:$($AccumulatedCounters.UserActivity)次 未读邮件 API 累计调用次数:$($AccumulatedCounters.MailActivity)次 SharePoint ID API 累计调用次数:$($AccumulatedCounters.SharePointActivity)次(共调动端点$($AccumulatedCounters.SharePointInternalCalls)次) "@ $FileContent | Out-File $MailSentCheckPath -Encoding UTF8 -Force # ---------------------------------------------------- } } else { Write-Host "`n--- 邮件频率控制:检测到今天 ($CurrentDateString) 已发送报告,跳过邮件发送。`n" -ForegroundColor Yellow Write-SimpleLog -Project "发送报告邮件" -Status "跳过" -Details "Mail already sent today. Only running logging/upload activities." # ---------------------------------------------------- # ⬇️ 关键修改:如果跳过,仍需更新 $MailSentCheckPath (调用情况.txt) 中的累计次数,保持原有日期 # ---------------------------------------------------- $TimestampForFile = $AccumulatedCounters.LastSentDate + "-Skipped" $FileContent = @" 邮件发送时间:$TimestampForFile 用户活动 API 累计调用次数:$($AccumulatedCounters.UserActivity)次 未读邮件 API 累计调用次数:$($AccumulatedCounters.MailActivity)次try { # 关键修改:阻止显示 Graph API 成功的 JSON 详情 Invoke-RestMethod -Uri $OneDriveE5UploadUrl -Headers $Headers -Method PUT -InFile $LogPath -TimeoutSec 60 -ContentType 'text/plain' | Out-Null Write-Host "SUCCESS: OneDrive 文件上传到 /e5 成功!" -ForegroundColor Green Write-SimpleLog -Project "OneDrive E5 上传" -Status "成功" -Details "上传到 $OneDriveSimulatedWebUrl (路径 /e5,文件名: $FileName)" } catch { $ErrorMessage = "GRAPH 错误 (OneDrive E5): $($_.Exception.Message)" Write-Host "ERROR: OneDrive 文件上传到 /e5 失败。详情: $ErrorMessage" -ForegroundColor Red Write-SimpleLog -Project "OneDrive E5 上传" -Status "失败" -Details $ErrorMessage } # ==================================================== # 13. 冗余上传 C: SharePoint Site (已隐藏输出) # ==================================================== $SharePointRootUploadUrl = "https://graph.microsoft.com/v1.0/sites/$SiteId/drives/$DriveId/root:/${FileName}:/content" Write-Host "`n--- 正在上传日志文件到 SharePoint 网站 (原始路径)..." -ForegroundColor Yellow try { # 关键修改:阻止显示 Graph API 成功的 JSON 详情 Invoke-RestMethod -Uri $SharePointRootUploadUrl -Headers $Headers -Method PUT -InFile $LogPath -TimeoutSec 60 -ContentType 'text/plain' | Out-Null Write-Host "SUCCESS: SharePoint 文件上传成功 (原始路径)!" -ForegroundColor Green Write-SimpleLog -Project "SharePoint 上传" -Status "成功" -Details "上传到 $SharePointSimulatedWebUrl (原始路径,文件名: $FileName)" Write-SimpleLog -Project "SharePoint 操作" -Status "成功" -Details "" } catch { $ErrorMessage = "GRAPH 错误 (SharePoint Root): $($_.Exception.Message)" Write-Host "ERROR: SharePoint 文件上传失败 (原始路径)。详情: $ErrorMessage" -ForegroundColor Red Write-SimpleLog -Project "SharePoint 上传" -Status "失败" -Details $ErrorMessage } # ==================================================== # 14. 附加上传 D: SharePoint 记录表/e5 (已隐藏输出) # ==================================================== $SharePointE5UploadUrl = "https://graph.microsoft.com/v1.0/sites/$SiteId/drives/$DriveId/root:/e5/${FileName}:/content" Write-Host "`n--- (附加任务) 正在上传日志文件到 SharePoint 网站的 /e5 文件夹 (目标:记录表)..." -ForegroundColor Yellow try { # 关键修改:阻止显示 Graph API 成功的 JSON 详情 Invoke-RestMethod -Uri $SharePointE5UploadUrl -Headers $Headers -Method PUT -InFile $LogPath -TimeoutSec 60 -ContentType 'text/plain' | Out-Null Write-Host "SUCCESS: SharePoint 文件上传到 /e5 成功!" -ForegroundColor Green Write-SimpleLog -Project "SharePoint E5 上传" -Status "成功" -Details "上传到 $SharePointSimulatedWebUrl (路径 /e5,文件名: $FileName)" } catch { $ErrorMessage = "GRAPH 错误 (SharePoint E5): $($_.Exception.Message)" Write-Host "ERROR: SharePoint 文件上传到 /e5 失败。详情: $ErrorMessage" -ForegroundColor Red Write-SimpleLog -Project "SharePoint E5 上传" -Status "失败" -Details $ErrorMessage } # ==================================================== # 15. 脚本最终收尾 # ==================================================== Add-Content -Path $LogPath -Value "脚本执行完毕于 $EndTimeForLog。" -Encoding UTF8 Add-Content -Path $LogPath -Value "----------------------------------------------------" -Encoding UTF8 # ==================================================== # 16. 脚本执行完毕提示 # ==================================================== Write-Host "`n====================================================" Write-Host "脚本执行完成。详细输出已在控制台显示,日志文件已**续写**到 $LogPathDisplay。" Write-Host "====================================================" # 关键修改:移除 Read-Host。脚本将依赖执行环境的自动暂停机制(如果双击运行)或直接结束(如果在集成环境或已打开的 PowerShell 窗口中运行)。 # Read-Host "请按任意键继续"
11-16
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值