首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我正在寻找附加的windows主机文件获得当前的动态ip并将其映射到主机名

我正在寻找附加的windows主机文件获得当前的动态ip并将其映射到主机名
EN

Stack Overflow用户
提问于 2018-06-23 15:20:36
回答 1查看 1.8K关注 0票数 0

我希望附加windows主机文件,获得当前的动态ip,并将其映射到一个主机名,而不管当前的ip地址。我得到了以下错误

===============================================

Add-Content :找不到接受参数'hostname1‘的位置参数。在C:\Users\Opps\Desktop\power\New Text Document.ps1:6 char:3 + {ac -Encoding UTF8 -value "$($env:windir)\system32\Drivers\etc\hosts ... +~+ CategoryInfo : InvalidArgument:(:) Add-Content,ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Opps

================================================================================

脚本:

代码语言:javascript
复制
$ip=get-WmiObject Win32_NetworkAdapterConfiguration|Where {$_.Ipaddress.length -gt 1} 
$ip.ipaddress[0]
$hst = $env:COMPUTERNAME

Set-ExecutionPolicy -ExecutionPolicy Unrestricted If ((Get-Content "$($env:windir)\system32\Drivers\etc\hosts" ) -notcontains "127.0.0.2 hostname1") 
 {ac -Encoding UTF8 "$($env:windir)\system32\Drivers\etc\hosts" ($ip.ipaddress[0]) ($hst) }
EN

回答 1

Stack Overflow用户

发布于 2018-06-24 08:07:13

Add-Content需要一个字符串作为值,因此要更改我们需要将值封装在引号中的类型。要在引号中访问对象属性,例如$ip.ipaddress[0],为了不从字面上处理文本,我们必须将其括在括号中,前面的美元符号"$(...)"正式称为子表达式运算符(请参阅mklement0's explanaton)。为了确保我们没有复制条目,我们使用if语句对条目运行快速检查,只有在if语句的两个条件都满足的情况下才会进入add-content

代码语言:javascript
复制
$ip = get-WmiObject Win32_NetworkAdapterConfiguration|Where {$_.Ipaddress.length -gt 1} 
$ip.ipaddress[0]
$hst = $env:COMPUTERNAME
$hostfile = Get-Content "$($env:windir)\system32\Drivers\etc\hosts"
Set-ExecutionPolicy -ExecutionPolicy Unrestricted 
if ($hostfile -notcontains "127.0.0.2 hostname1" -and 
    (-not($hostfile -like "$($ip.ipaddress[0]) $hst"))) {
    Add-Content -Encoding UTF8 "$($env:windir)\system32\Drivers\etc\hosts" "$($ip.ipaddress[0]) $hst" 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50998926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档