【问题标题】:Powershell - Get desktop path for all users [OneDrive Sync on some of them]Powershell - 为所有用户获取桌面路径 [OneDrive Sync on them]
【发布时间】:2020-06-10 20:19:28
【问题描述】:

我正在尝试在所有用户的桌面上搜索特定快捷方式,但我发现难以枚举计算机上不同用户的所有桌面路径,因为其中一些具有 OneDrive 同步和标准路径 c:\Users\%user%\Desktop是找不到的。 我尝试使用 GetFolderPath 获取路径,它只返回当前用户的路径:

[System.Environment]::GetFolderPath("Desktop")

简单地说,路径场景是:

  1. C:\users\username\Desktop
  2. C:\users\username\One Drive - Company\Desktop

如果有人提示如何在这种混合环境中找到所有路径,我会很高兴。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    这是我以前的训练脚本。我不知道它如何(或如果有的话)它与 OneDrive cync 一起使用,因为我已禁用(或什至卸载)OneDrive,因为我发现它非常烦人......

    Remove-Variable path -ErrorAction SilentlyContinue
    Write-Verbose "--- Special Folders ---" -Verbose
    $SpecialFolders = @{}
    $names = [Environment+SpecialFolder]::GetNames( [Environment+SpecialFolder])
    ForEach ($name in $names) {
        # assign and then check
        if( $path = [Environment]::GetFolderPath($name) ){ 
            $SpecialFolders[$name] = $path
        } else {
            Write-Warning $name
            $SpecialFolders[$name] = ''
        }
    }
    $SpecialFolders.GetEnumerator() | 
        Sort-Object -Property name #| Format-Table -AutoSize
    "---"
    
    ###Pause
    $ShellFolders=@{}
    Write-Verbose "--- Shell Folders ---" -Verbose
    [System.Enum]::GetValues([System.Environment+SpecialFolder]) | 
        ForEach-Object {
            $ShellFolders[$_.ToString()] = 
                ($_.value__, [System.Environment]::GetFolderPath($_))
        }
    $ShellFolders.GetEnumerator() | 
        Sort-Object -Property name # | Format-Table -AutoSize
    

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 2018-07-22
      • 2010-10-12
      • 1970-01-01
      • 2014-06-09
      • 2013-07-21
      • 2012-06-15
      • 1970-01-01
      相关资源
      最近更新 更多