Powershell复制文件带变量

Dan*_*erg 2 variables 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
Run Code Online (Sandbox Code Playgroud)

该剧本似乎不喜欢+ $username +......

Joe*_*oey 7

我认为你的第一线是错误的.目前你正在分配一个空变量(应该是它的值$null)$Env:UserName,从而覆盖用户名,而不是读取它.

我认为应该是

$username = [Environment]::Username
Run Code Online (Sandbox Code Playgroud)

或者,如上所述,您可以通过特殊Env:驱动器访问环境变量:

$username = $Env:Username
Run Code Online (Sandbox Code Playgroud)

与您的问题无关,只需更好的代码:

  1. 您可以将用户名直接放入字符串(您似乎知道,如上图所示 - 在这种情况下您不需要字符串):

    $from = "C:\Users\$username\favourites\*"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您根本不需要获取用户名,您可以使用

    $Env:UserProfile
    
    Run Code Online (Sandbox Code Playgroud)

    要么

    [Environment]::GetFolderPath([Environment+SpecialFolder]::UserProfile)
    
    Run Code Online (Sandbox Code Playgroud)

    甚至

    [Environment]::GetFolderPath([Environment+SpecialFolder]::Favorites)
    
    Run Code Online (Sandbox Code Playgroud)

    这可能最终是你所追求的.