在执行脚本时使用$env:USERNAME或其他变量



所以我一直在用powershell写一个脚本,我想做一些修改,让人们可以用最少的努力来使用它。其中一部分包括调整脚本,以便将路径中我的用户名的实例替换为$env:USERNAME

例如:C:Users{username}Downloadsexecutable.exe

变成C:Users$env:USERNAMEDownloadsexecutable.exe

,结果是一样的。

我反复得到错误The term 'C:Users$env:USERNAMEDownloadsexecutable.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

当我调用它作为分配变量的一部分时,我得到The term C:Users{username}Downloadsexecutable.exe is not ...,所以在这种情况下路径被正确处理。

我以前在bash的路径中使用过变量,没有问题,所以我不确定我在哪里出错了。

我试过将它分配给一个变量并调用它,并分配$env:USERNAME并在路径中包含该变量,但都没有工作。

我也试过使用$env:HOMEPATH

我已经尝试将变量分配为字符串(带双引号),并使用Invoke-command $commandInvoke-Expression $command,但没有骰子。

我如何执行一个脚本或可执行文件在路径名中有一个变量?这在powershell中可能吗?


Mathias R. Jensen的回答修复了我的问题,我的代码现在可以工作了。

#Constructed path as advised
$TestPath = Join-Path $env:USERPROFILE Downloadsexecutable.exe
Get-date | Out-File -FilePath $env:USERPROFILEtesttestfile.txt -Append
#Invoked executable
& $TestPath | Out-File -FilePath $env:USERPROFILEtesttestfile.txt -Append

对于构建相对于用户配置文件文件夹的路径,使用$env:USERPROFILE,并将操作分为两个单独的步骤:

  • 构建可执行文件路径
  • 使用&呼叫操作符调用:
# Construct path
$exePath = Join-Path $env:USERPROFILE 'Downloadsexecutable.exe'
# Invoke executable
& $exePath

相关内容

  • 没有找到相关文章

最新更新