ค้นหาเว็บไซต์

SharePoint Online: แก้ไขข้อผิดพลาด "เซิร์ฟเวอร์ระยะไกลส่งคืนข้อผิดพลาด (401) ที่ไม่ได้รับอนุญาต" ใน PowerShell


ปัญหา: ข้อยกเว้นที่เรียก "ExecuteQuery" ด้วยอาร์กิวเมนต์ "0": "เซิร์ฟเวอร์ระยะไกลส่งคืนข้อผิดพลาด (401) ไม่ได้รับอนุญาต" เกิดข้อผิดพลาดในสคริปต์ PowerShell ของ SharePoint Online

รายการตรวจสอบการแก้ปัญหา:

เมื่อทำงานกับ SharePoint Online โดยใช้ PowerShell คุณอาจพบข้อผิดพลาด “เซิร์ฟเวอร์ระยะไกลส่งคืนข้อผิดพลาด (401) ไม่ได้รับอนุญาต” ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อสคริปต์ไม่ได้รับการรับรองความถูกต้องอย่างถูกต้องในการเข้าถึงไซต์ SharePoint Online ในบทช่วยสอนนี้ เราจะพูดถึงวิธีแก้ไขข้อผิดพลาด “เซิร์ฟเวอร์ระยะไกลส่งคืนข้อผิดพลาด (401) ไม่ได้รับอนุญาต”

ต่อไปนี้คือสาเหตุหลักและวิธีแก้ปัญหาต่างๆ สำหรับเซิร์ฟเวอร์ระยะไกลที่ส่งคืนข้อผิดพลาด 401 ที่ไม่ได้รับอนุญาตใน SharePoint Online:

1. URL ของคุณถูกต้องหรือไม่?


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing" 
 
#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
  
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
 
#Get the Web
$Web=$Ctx.Web
$Ctx.Load($Web)
$Ctx.ExecuteQuery()

คุณจะได้รับข้อผิดพลาดเดียวกัน “Connect-SPOService : เซิร์ฟเวอร์ระยะไกลส่งคืนข้อผิดพลาด: (401) ไม่ได้รับอนุญาต” หากคุณพยายามเชื่อมต่อโดยใช้ Connect-SPOService cmdlet


Connect-SPOService -Url "https://crescent-admin.sharepoint.com" -Credential (Get-Credential)

ในสคริปต์นี้ URL ไม่ถูกต้อง! แทนที่จะเป็น “https://tenant.sharepoint.com” เปลี่ยนเป็น “http://tenant.sharepoint.com” URL ของ SharePoint Online ต้องขึ้นต้นด้วย HTTPS เสมอ!

2. คุณได้รับอนุญาตให้เข้าถึงไซต์หรือไม่?

หากคุณไม่ได้รับอนุญาตให้เข้าถึงไซต์เป้าหมายผ่านเบราว์เซอร์ คุณจะไม่สามารถเข้าถึงได้จาก PowerShell (อย่างแน่นอน!) ดังนั้นโปรดตรวจสอบว่าคุณมีสิทธิ์เพียงพอหรือไม่และสามารถเปิดเว็บไซต์ในเว็บเบราว์เซอร์ได้ หากคุณต้องการเชื่อมต่อกับไซต์โดยใช้ Connect-SPOService cmdlet คุณต้องมีบทบาทผู้ดูแลระบบ SharePoint Online ด้วย

3. เปิดใช้งานโปรโตคอลการรับรองความถูกต้องแบบเดิมแล้ว?

ตรวจสอบว่าโปรโตคอลการรับรองความถูกต้องแบบดั้งเดิมเปิดใช้งานอยู่ในผู้เช่าของคุณหรือไม่


Get-SPOTenant -LegacyAuthProtocolsEnabled

ถ้าไม่ ให้เปิดใช้งานโดยทำดังนี้:


Set-SPOTenant -LegacyAuthProtocolsEnabled $True 

4. การตรวจสอบสิทธิ์แอปแบบกำหนดเองถูกปิดใช้งานหรือไม่

หากคุณใช้การตรวจสอบสิทธิ์แอป คุณอาจได้รับข้อความ “เซิร์ฟเวอร์ระยะไกลส่งคืนข้อผิดพลาด: (401) ไม่ได้รับอนุญาต” ข้อความเมื่อพยายามเชื่อมต่อโดยใช้ Connect-PnP Online cmdlet ตรวจสอบว่าการตั้งค่าผู้เช่าของคุณ “DisableCustomAppAuthentication” ถูกตั้งค่าเป็นจริงหรือไม่ ถ้าใช่ก็ทำให้มันเป็นเท็จ


Get-SPOTenant -DisableCustomAppAuthentication

เปิดใช้งานการตรวจสอบสิทธิ์แอปแบบกำหนดเองด้วย:


Set-SPOTenant -DisableCustomAppAuthentication $False

สรุป

โดยสรุป ข้อผิดพลาด “เซิร์ฟเวอร์ระยะไกลส่งคืนข้อผิดพลาด (401) ที่ไม่ได้รับอนุญาต” ใน PowerShell เมื่อทำงานกับ SharePoint Online อาจเกิดจากปัจจัยหลายประการ เช่น ข้อมูลประจำตัวที่ไม่ถูกต้องหรือการขาดสิทธิ์ เพื่อแก้ไขข้อผิดพลาดนี้ คุณสามารถลองหลายวิธีตามที่อธิบายไว้ข้างต้น สิ่งสำคัญคือต้องตรวจสอบให้แน่ใจว่าข้อมูลประจำตัวที่คุณใช้มีสิทธิ์ที่จำเป็นในการเข้าถึงไซต์ SharePoint Online ด้วยการทำตามขั้นตอนเหล่านี้ คุณสามารถแก้ไขข้อผิดพลาด “เซิร์ฟเวอร์ระยะไกลส่งคืนข้อผิดพลาด (401) ไม่ได้รับอนุญาต” ได้สำเร็จ และทำงานกับ SharePoint Online โดยใช้ PowerShell ต่อไปได้

บทความที่เกี่ยวข้อง