Копируемый файл Powershell с переменной - PullRequest
2 голосов
/ 30 марта 2012

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

[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 + ...

1 Ответ

7 голосов
/ 30 марта 2012

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

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

$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)
    

    , что в конечном итоге может быть тем, что вы ищете, здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...