2016-04-14 11 views
2

Bunu yapmak için PowerShell ve OneDrive API'lerini kullanıyorum. Tüm klasörleri/dosyaları/etc alabilirim ancak belirli bir dosyanın paylaşıldığı tüm kullanıcıları listeleyebileceğim bir yer bulmakta zorlanıyorum. Kapsamım zaten wl.skydrive_contacts içerir ve zaten API'leri kullanarak tüm klasörlerin/dosyaların bir listesini var. Birisi bana biraz fikir verebilir mi?Dış kullanıcılar ile paylaşılan Onedrive API'si listesi dosyaları

+0

numuneyi görebilir? Kodunuzu ve çalıştırdığınızda aldığınız hatayı paylaşabilir misiniz? – TheMadTechnician

+0

Sürücü köküme ulaşmak için bunu kullanıyorum ve farklı klasör kimliklerini çağırarak klasörleri/dosyaları seçebiliyorum. Beni şaşırtan kısım, bu paylaşılan dosyalar için izin alıyor. Bunu çalıştırdığımda, $ _. Shared_with'in Access = Shared olduğunu görebiliyorum. $ Kök = Invoke-RestMethod -Uri "$ ApiUri/me/skydrive? Access_token = $ AccessToken" – jheinikel

+0

Ayrıca, invoke-restmethod -Method GET -URI "$ APIURI/$ FileID/İzinler çalıştırırken aldığım hata? access_token = $ accesstoken, URL'nin geçersiz olan izinleri içerdiğini gösteriyor. – jheinikel

cevap

1

Tüm paylaşılan öğeleri listelemek için OneDrive Rest API'sini kullanabilirsiniz.

Ondan önce, Sonra aşağıdaki kullanacağım kodunu yapabilirsiniz https://dev.onedrive.com/app-registration.htm

göre sizin onedrive uygun erişmek için bir uygulama kayıt gerekir. Talimatların tamamı için

$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 
} 

, size denedi Ne https://gallery.technet.microsoft.com/How-to-use-OneDrive-Rest-5b31cf78

İlgili konular