【问题标题】:How can I check status of files/folders in OneDrive folder whether it is synced or not using c# or PowerShell?如何使用 c# 或 PowerShell 检查 OneDrive 文件夹中文件/文件夹的状态是否已同步?
【发布时间】:2022-07-04 21:48:43
【问题描述】:

我想使用 C# 或 PowerShell 检查驻留在 OneDrive 文件夹中的文件的状态(在线时可用/在此设备上可用)。我想检查磁盘上的文件是否可用,主要是检查文件或文件夹的同步状态。

有没有办法获得这个状态?

【问题讨论】:

标签: c# windows powershell onedrive


【解决方案1】:

这个answerother answers 可能有助于实现您的目标(抱歉,如果这不是一个真正的答案,我还不能评论帖子......)。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • @Flexan 我尝试了这种方法,但我遇到了异常。 System.ArgumentException: '值不在预期范围内。 (参数'句柄')'
【解决方案2】:

某些安装在尝试使用 byPath 参数时会出现问题。

您可以测试您的安装是否受到影响,以及测试版是否适合您。

当前版本:https://github.com/rodneyviana/ODSyncService/tree/master/Binaries/PowerShell

测试版: https://github.com/rodneyviana/ODSyncService/blob/master/Binaries/Beta/OneDriveLib_OnDemand.zip

Unblock-File -Path "C:\ODTool\OneDriveLib.dll" # change path if necessary
Import-Module "C:\ODTool\OneDriveLib.dll"

Get-ChildItem $env:OneDrive | foreach {
$_ | select *,@{Name="ODStatus";Expression={Get-ODStatus -ByPath $_}}
} | Format-Table ODStatus,FullName 

您可以使用“格式表”来格式化您的输出

如果您经常/总是有“OnDemandOrUnknown”,请在其中添加信息: https://github.com/rodneyviana/ODSyncService/issues/36

【讨论】:

    【解决方案3】:

    这个帖子中提到的dll很好,但我不想把它分发到每个人的机器上,所以我想出了一个替代方案。下面的脚本将检查 OneDrive 中是否有名为 Documents 的文件夹并返回其状态。

    # ID 303 = "Availability status" | The status is generally one of the following...
    # "Always available on this device", "Available on this device", "Available when online"
    $OneDriveDocs = "$env:OneDrive\Documents"
    $Shell = (New-Object -ComObject Shell.Application).NameSpace((Split-Path $OneDriveDocs))
    $Status = $Shell.getDetailsOf(($Shell.ParseName((Split-Path $OneDriveDocs -Leaf))),303)
    

    【讨论】:

      猜你喜欢
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 2013-06-08
      相关资源
      最近更新 更多