Ich verwende PowerShell und die OneDrive-APIs, um dies zu erreichen. Ich kann alle Ordner/Dateien/etc bekommen, aber es fällt mir schwer zu finden, wo ich alle Benutzer auflisten kann, mit denen eine bestimmte Datei geteilt wurde. Mein Bereich enthält bereits wl.skydrive_contacts und ich habe bereits eine Liste aller Ordner/Dateien mit den APIs. Kann mir jemand einen Einblick geben?Onedrive API-Listendateien, die mit externen Benutzern geteilt werden
2
A
Antwort
1
Sie können die OneDrive Rest-API verwenden, um alle freigegebenen Elemente aufzulisten.
Davor müssen Sie eine Anwendung registrieren, um eine ordnungsgemäße Zugriff auf Ihre Microsoft Onedrive zu erhalten nach https://dev.onedrive.com/app-registration.htm
Dann können Sie verwenden Sie den Code unten machen.
$ClientId = "<Your application client id>" # your application clientid
$SecrectKey = "<Your application key>" # the secrect key for your application
$RedirectURI = "<Your web app redirect url>" # the re-direct url of your application
Function List-SharedItem
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true)][String]$ClientId,
[Parameter(Mandatory=$true)][String]$SecrectKey,
[Parameter(Mandatory=$true)][String]$RedirectURI
)
# import the utils module
Import-Module ".\OneDriveAuthentication.psm1"
# get token
$Token = New-AccessTokenAndRefreshToken -ClientId $ClientId -RedirectURI $RedirectURI -SecrectKey $SecrectKey
# you can store the token somewhere for the later usage, however the token will expired
# if the token is expired, please call Update-AccessTokenAndRefreshToken to update token
# e.g.
# $RefreshedToken = Update-AccessTokenAndRefreshToken -ClientId $ClientId -RedirectURI $RedirectURI -RefreshToken $Token.RefreshToken -SecrectKey $SecrectKey
# construct authentication header
$Header = Get-AuthenticateHeader -AccessToken $Token.AccessToken
# api root
$ApiRootUrl = "https://api.onedrive.com/v1.0"
# call api
$Response = Invoke-RestMethod -Headers $Header -Method GET -Uri "$ApiRootUrl/drive/shared"
RETURN $Response.value
}
# call method to do job
$Results = List-SharedItem -ClientId $ClientId -SecrectKey $SecrectKey -RedirectURI $RedirectURI
# print results
$Results | ForEach-Object {
Write-Host "ID: $($_.id)"
Write-Host "Name: $($_.name)"
Write-Host "ParentReference: $($_.parentReference)"
Write-Host "Size: $($_.size)"
Write-Host "WebURL: $($_.webUrl)"
Write-Host
}
Vollständige Anweisungen können Sie die Probe in https://gallery.technet.microsoft.com/How-to-use-OneDrive-Rest-5b31cf78
sehen, was Sie versucht haben? Können Sie Ihren Code und den Fehler teilen, den Sie beim Ausführen erhalten? – TheMadTechnician
Ich benutze dies, um mein Laufwerk Root zu bekommen und kann Ordner/Dateien durch den Aufruf der verschiedenen Ordner IDs auswählen. Der Teil, der mich verwirrt, erhält Berechtigungen für diese freigegebenen Dateien. Wenn ich das ausführe, kann ich $ _ sehen. Shared_with zeigt Access = Shared. $ Root = Invoke-RestMethod-Uri "$ ApiUri/me/skydrive? Access_token = $ AccessToken" – jheinikel
Auch der Fehler, den ich beim Ausführen von invoke-restmethod erhalten -Methode GET -URI "$ APIURI/$ FileID/Berechtigungen? access_token = $ accesstoken ist, dass die URL den Pfad Permissions enthält, der ungültig ist. – jheinikel