2012-03-30 2 views
2

Я пытаюсь запустить следующий сценарий, который, как я думал, был довольно прост. Что я делаю скрутить здесь ...Файл с копией Powershell с переменной

[Environment]::UserName = $username 

Write-Host "The user is $username" 
$from = "c:\Users\" + $username + "\favourites\*.*" 
$to = "c:\test" 

Write-Host "This is from dir: $from" 
Write-Host "This is to dir: $to" 

Copy-Item $from $to 

Сценарий, кажется, не нравится + $username + ...

ответ

7

Я думаю, что вы получили свою первую линию неправильный путь вокруг. В настоящее время вы назначаете пустую переменную (значение должно быть $null) до $Env:UserName, таким образом перезаписывая имя пользователя, не читая его.

Я думаю, что это должно быть

$username = [Environment]::Username 

или, как было отмечено выше, вы можете получить доступ к переменным окружения через специальный Env: привод:

$username = $Env:Username 

и не связаны с вашей проблемой, просто более полезный код:

  1. Вы можете поместить имя пользователя непосредственно в строку (которую вы, кажется, знают, как показано на строку выше - где вам не нужна строка в этом случае, хотя):

    $from = "C:\Users\$username\favourites\*" 
    
  2. Вы надеваете» т нужно получить имя пользователя на всех, вы можете использовать

    $Env:UserProfile 
    

    или

    [Environment]::GetFolderPath([Environment+SpecialFolder]::UserProfile) 
    

    или даже

    [Environment]::GetFolderPath([Environment+SpecialFolder]::Favorites) 
    

    который может в конечном итоге быть тем, что вы после, здесь.

Смежные вопросы