powershell - Powershell 中的格式化列表问题
问题描述
我想在每台服务器(160+)上执行几行代码。为此,我决定通过 Powercli 获取我的服务器列表并将此列表传递给Enter-PSSession
.
...
Connect-VIServer -Server $VIServer -Credential $creds
$servers = Get-VM |select Name |where Name -Like "SV*"
...
foreach($server in $servers)
{
try{
Enter-PSSession -ComputerName $server -Credential $cred -ErrorAction Stop
Get-NetIPAddress |where AddressFamily -EQ 2 |where InterfaceAlias -Like "Ethernet" |select IPAddress
Exit-PSSession
}catch{
Write-Host "Error on $server"
}
}
问题似乎是,它需要一个数组,因为输出错误如下
Error on @{Name=<$server>}
但我不知道如何正确处理
解决方案
使用New-Pssession
或Invoke-command
进行远程处理。Enter-Pssession
是交互式的,并且您正在执行它的方式,它get-netipaddress
在您的本地计算机上而不是在您的远程计算机上运行。
在你的循环中使用$servers.Name
而不是。$servers
foreach
foreach($server in $servers.Name) #This .name should fix your problem
{
try{
New-PSSession -ComputerName $server -Credential $cred -ErrorAction Stop -Name MySession
Invoke-Command -Session $MySession -ScriptBlock {Get-NetIPAddress |where AddressFamily -EQ 2 |where InterfaceAlias -Like "Ethernet" |select IPAddress}
Remove-PSSession
}catch{
Write-Host "Error on $server"
}
}
推荐阅读
- python - 从同级目录导入 Python
- azure-service-fabric - Azure Service Fabric 中的应用程序和服务部署
- libstdc++ - 无法加载动态库“intl.so”:未定义符号:__cxa_throw_bad_array_new_length)
- bash - 将图像的差异输出到文本文件
- asp.net - 如何在 Azure WebApp 中处理中断图像
- java - 给 Java 本地与方法同名?
- javascript - 反向数组循环 - 超过索引 0 时返回最后一个索引
- c - C 中的 SMTP 客户端在 SSL_read 上阻塞
- python-3.x - 为什么 csv.Dictreader 只读取第一行/列?
- javascript - 向输入字段添加值