2015-07-31 13 views
15

Sto provando a scrivere uno script PowerShell per rimuovere l'icona del desktop per Chrome dopo l'installazione tramite sccm. Tuttavia, alcuni utenti della rete hanno il desktop diretto a diverse cartelle sulla rete. Esiste una variabile in PowerShell che memorizza la posizione del desktop?Variabile desktop PowerShell

Ho cercato online e cercato utilizzando Get-Variable | Out-String, ma non ho trovato nulla. Il codice finale dovrebbe essere simile:

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

risposta

29

È possibile utilizzare il Environment.GetFolderPath() method per ottenere il percorso completo cartelle speciali:

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

Questo può essere ridotto a:

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

È anche possibile ottenere la cartella del desktop condivisa "AllUsers" (se il file di scelta rapida è condiviso tra tutti gli utenti):

[Environment]::GetFolderPath("CommonDesktopDirectory") 

controllare la lista completa dei valori per l'SpecialFolder Enum on MSDN.

+0

Grazie, opere perfettamente – bgregor

0

È possibile ottenere le variabili di ambiente in questo modo:

Join-Path $Env:USERPROFILE Desktop 
+1

Perché downvotare una risposta perfettamente buona? Si prega di fare un commento se si pensa che qualcosa non va. Come mi piacerebbe sapere perché ho degli script in produzione che formano percorsi come questo – Cole9350

+2

non ho fatto downvotare questa risposta, ma mentre la tua risposta funziona per un desktop locale, non funziona per un desktop reindirizzato come nel mio scenario. I computer sulla mia rete non hanno nemmeno una cartella denominata Desktop nel loro $ Env: USERPROFILE. – bgregor

1

Quello che state cercando è conosciuta come la variabile $home. È uno dei componenti integrati di PowerShell automatic variables.

Il valore predefinito è il percorso di profilo utente, in modo drill-down per il desktop come questo:

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

Funziona per un desktop locale, ma non per un desktop reindirizzato come nel mio scenario. – bgregor

3

Se avete bisogno di $ Desktop \ a.txt, utilizzare questo

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