如何将变量放在文件夹路径中?

时间:2018-01-23 20:02:07

标签: powershell

我正在编写一个脚本来将文件复制到当前登录的用户。我认为下面的代码可行,但我需要替换"用户名"使用变量$ CurrentLoggedinUser。

C:\ Users \用户名\应用程序数据\ LocalLow \太阳\爪哇\部署\安全 这样的事情 C:\ Users \ $ CurrentLoggedinUser \ AppData \ LocalLow \ Sun \ Java \ Deployment \ security

知道我怎么能这样做吗? TIA

$CurrentLoggedinUser = $env:UserName
Copy-Item -Path **/*.CERTS -Destination C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\security 

1 个答案:

答案 0 :(得分:1)

您的问题更一般地是关于如何将变量引用合并到命令参数/字符串中

在最简单的情况下,只需用$var引用替换文字部分,其中var是感兴趣的变量的名称:

C:\Users\$CurrentLoggedinUser\AppData\LocalLow\Sun\Java\Deployment\security

为了增加稳健性,请将名称括在{...}中以便随后的字符。不能被误认为是名称的一部分:

C:\Users\${CurrentLoggedinUser}\AppData\LocalLow\Sun\Java\Deployment\security

当然,您也可以直接引用环境变量:

C:\Users\${env:USERNAME}\AppData\LocalLow\Sun\Java\Deployment\security

或者,鉴于当前用户的个人资料目录。可以$env:USERPROFILE访问:

$env:USERPROFILE\AppData\LocalLow\Sun\Java\Deployment\security

以上所有工作都是参数命令,也就是说,在参数模式中进行解析而不是< em>表达模式 - 请参阅Get-Help about_Parsing

表达式模式中,您需要引用字符串,例如上面的字符串;为了合并变量引用(甚至整个命令的输出来自$(...)),你必须 - 引用它们(这使它们成为所谓的可扩展字符串 - 请参阅Get-Help about_Quoting_Rules)。

请注意,引用的字符串也只能在参数模式下工作,对于包含在参数模式中具有特殊含义的字符的字符串,可能需要使用它们,例如&@或{{1 }}

因此,上述内容完全相同:

>