2015-07-31 1 views
15

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

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

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

ответ

29

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

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

Это может быть сокращено до:

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

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

[Environment]::GetFolderPath("CommonDesktopDirectory") 

Проверьте полный список значений для SpecialFolder Enum on MSDN.

+0

Благодарность, работу отлично – bgregor

0

Вы можете получить переменные окружения, как это:

Join-Path $Env:USERPROFILE Desktop 
+1

Почему downvote отличный ответ? Пожалуйста, сделайте комментарий, если вы считаете, что что-то не так. Как я хотел бы знать, потому что у меня есть сценарии на пути формирования производственной структуры, подобные этому – Cole9350

+2

. Я не ответил на этот вопрос, но пока ваш ответ работает на локальном рабочем столе, он не работает для перенаправленного рабочего стола, как в моем сценарии. Компьютеры в моей сети даже не имеют папки под названием Desktop в их $ Env: USERPROFILE. – bgregor

1

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

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

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

Это работает для локального рабочего стола, но не для перенаправленного рабочего стола, как в моем сценарии. – bgregor

3

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

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