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

Powershell 如何在文件夹路径中放置变量?,powershell,Powershell,我正在编写一个脚本,将文件复制到当前登录的用户。我认为下面的代码可以工作,但我需要将username替换为变量$CurrentLoggedinUser C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\security 像这样的事情 C:\Users\$CurrentLoggedinUser\AppData\LocalLow\Sun\Java\Deployment\security 你知道我该怎么做吗?短暂性脑缺血发作 $Current

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

C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\security 像这样的事情 C:\Users\$CurrentLoggedinUser\AppData\LocalLow\Sun\Java\Deployment\security

你知道我该怎么做吗?短暂性脑缺血发作

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

您的问题通常是关于如何将变量引用合并到命令参数/字符串中:

在最简单的情况下,只需将文字部分替换为$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"

$env:UserProfile+'\AppData\LocalLow\Sun\Java\Deployment\security'尝试获取ChildItem$MyInvocation.MyCommand.Path-目录请参见@AluanHaddad:也许您的意思是拆分路径-父级$MyInvocation.MyCommand.Path以获取脚本文件夹?或者,在PSv3+中,$PSScriptRoot?可能我不是一个非常高级的Powershell用户。我建议的命令在我测试时起作用,但可能我误解了什么。
"$env:USERPROFILE\AppData\LocalLow\Sun\Java\Deployment\security"