在 Foreach 中加载函数数组/根据环境文件向主机文件添加条目

Load array of functions inside a Foreach / add entry to hostfile based on a environment file

这可能不是一个好标题,但我不知道如何解释。

我正在尝试根据环境文件将主机条目添加到主机文件,我已经将“carbon”框架导入到我的环境中。输出似乎是正确的,但不是 "running"。当我手动尝试输入其中一个条目时,一切正常。

Set-HostsEntry -IPAddress 127.0.0.1 -HostName 'portal.sp2013dev.no' -Description 'Portal'   

问题是它只在控制台写了一行,但它没有执行!

环境。ps1

`####### INSIDE HOSTFILE I GOT A ARRAY THAT I WANT TO PASTE INTO THE OTHER FILE 
 #HostFile
    $hostFileEntry = @("Set-HostsEntry -IPAddress 127.0.0.1 -HostName 'portal.sp2013dev.no' -Description 'Portal'" , 
    "Set-HostsEntry -IPAddress 127.0.0.1 -HostName 'mysite.sp2013dev.no' -Description 'Mysite'" , 
    "Set-HostsEntry -IPAddress 127.0.0.1 -HostName 'tt.dev.no' -Description 'profile'")

主机文件。ps1

###############################################################################
# ADD / REMOVE HOST ENTRYS TO HOST FILE
###############################################################################

Try
{
 . .\Environment.ps1
}
Catch [system.exception]
{
"Problems accessing environment file, check the file location"
"Terminating script"
Break
}

#Reset Host file 
#Reset-HostsFile

#Adding host entry's to host file
Foreach ($entry in $hostFileEntry)
{
   $entry
}

你需要告诉PowerShell需要执行$entry中包含的字符串。简单的答案应该是使用 Invoke-Expression 在本地计算机上运行命令或表达式。

Foreach ($entry in $hostFileEntry)
{
   Invoke-Expression $entry
}

在您将字符串发送到标准输出之前*(* FYI 输出与 ForEach($b in $a) 结构不同)。