PowerShell Desktop Variable

Я пытаюсь написать PowerShell script, чтобы удалить значок рабочего стола для Chrome после установки через sccm. Однако некоторые пользователи в сети имеют свой рабочий стол, предназначенный для разных папок в сети. Есть ли переменная в PowerShell, которая хранит местоположение рабочего стола?

Я смотрел онлайн и искал с помощью Get-Variable | Out-String, но ничего не нашел. Готовый код должен выглядеть так:

If (Test-Path "$DesktopLocation\Google Chrome.lnk"){
    Remove-Item "$DesltopLocation\Google Chrome.lnk"
}

Ответы

Ответ 1

Вы можете использовать метод Environment.GetFolderPath(), чтобы получить полный путь к специальным папкам:

$DesktopPath = [System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::Desktop)

Это можно сократить до:

$DesktopPath = [Environment]::GetFolderPath("Desktop")

Вы также можете получить общую папку рабочего стола AllUsers (если файл ярлыков является общим для всех пользователей):

[Environment]::GetFolderPath("CommonDesktopDirectory")

Ознакомьтесь с полным списком значений EnableFolder Enum в MSDN.

Ответ 2

Если вам нужен $Desktop\a.txt, используйте этот

echo ([Environment]::GetFolderPath("Desktop")+"\a.txt")

Ответ 3

То, что вы ищете, называется переменной $home. Это одна из встроенных PowerShell автоматических переменных.

По умолчанию используется путь к профилю пользователя, поэтому перейдите на рабочий стол следующим образом:

If (Test-Path "$home\Desktop\Google Chrome.lnk") {
    Remove-Item "$home\Desktop\Google Chrome.lnk"
}

Ответ 4

Вы можете получить переменные среды следующим образом:

Join-Path $Env:USERPROFILE Desktop