2010-11-29 143 views
3

Nous essayons actuellement de ranger les répertoires personnels de nos utilisateurs et d'accélérer les performances de Microsoft Office 2007 en déplaçant tous leurs modèles dans un nouveau répertoire sur leur disque utilisateur (U :). Au cours de mes tests initiaux, je peux obtenir le script ci-dessous pour bien fonctionner, mais il a le problème évident de travailler uniquement pour mon nom d'utilisateur. Existe-t-il un moyen d'obtenir l'utilisateur en cours de connexion? Avant cela serait géré par%% nom d'utilisateur et d'une brève analyse de l'Internet apparemment:Insérer le nom d'utilisateur dans le chemin d'accès au fichier Powershell

$[Environment]::UserName 

devrait fonctionner. Cependant, je semble avoir des erreurs. Existe-t-il un meilleur moyen d'obtenir le nom actuel des utilisateurs dans le chemin du fichier?

if (!(Test-Path -path '\\SERVER\PATH\TO FILES\$[Environment]::UserName\Normal\')) 
{ 
New-Item '\\SERVER\PATH\TO FILES\$[Environment]::UserName\Normal\' -type directory 
##Move-Item \\SERVER\PATH\TO FILES\$env:username\Normal.dot \\\SERVER\PATH\TO FILES\$env:username\Normal\ 
## Move-Item \\SERVER\PATH\TO FILES\$env:username\*.dotm \\SERVER\PATH\TO FILES\%username%\Normal\ 
} 
else 
{ 
"No work to do" 
} 
+0

Voir aussi https://stackoverflow.com/questions/2085744/how-to-get-current-username-in-windows-powershell –

Répondre

5

Deux problèmes. Si vous souhaitez que la substitution de variables/expressions ait lieu dans une chaîne, vous devez utiliser des guillemets, et non des apostrophes, pour entourer la chaîne. Dans ce cas, vous devez également ajouter des parenthèses pour indiquer une expression dans la chaîne.

"\\SERVER\PATH\TO FILES\$([Environment]::UserName)\Normal\" 
+3

'$ env: USERNAME' est plus PowerShell-ish, peut-être: '' \\ \ SERVEUR \ CHEMIN \ FICHIERS \ $ env: USERNAME \ Normal \ "' –

+0

ah je vois. merci beaucoup d'avoir signalé cela. (@ OldFart) –