- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下功能将使用PingRange 1 254
ping我的子网以检查IP:
function PingRange ($from, $to) {
$from..$to | % {"192.168.0.$($_): $(Test-Connection -BufferSize 2 -TTL 5 -ComputerName 192.168.0.$($_ ) -quiet -count 1)"}
}
function PingRange $from $to {
$from..$to | % {Start-Job { "192.168.0.$($_): $(Test-Connection -BufferSize 2 -TTL 5 -ComputerName 192.168.0.$($_ ) -quiet -count 1)"} }
Wait-Job *some test to check if all jobs are complete*
Receive-Job some way to get each result, discard all failures, then sort and output to screen
}
最佳答案
注意:在Windows PowerShell中,最简单的解决方案是使用Test-Connection -AsJob
,如js2010's answer所示。但是,PowerShell [Core] 6+中不再支持-AsJob
。
此答案侧重于与命令无关的方法,以实现与作业的并发。
在PowerShell v7 + 中,您可以使用 ForEach-Object -Parallel
来,通过使用不同的线程并行运行命令,可以大大简化功能:
function PingRange ($from, $to) {
$from..$to | ForEach-Object -Parallel {
"192.168.0.$_`: $(Test-Connection -BufferSize 2 -TTL 5 -ComputerName 192.168.0.$_ -quiet -count 1)"
} -ThrottleLimit ($to - $from + 1) 2>$null -ErrorVariable err | Sort-Object
}
-ThrottleLimit
默认为5
,这意味着最多可以并行运行5个命令,其他命令会排队等待,直到池中的一个线程再次可用为止。2>$null
使错误输出静音,但是-ErrorVariable err
收集变量$err
中的所有错误以供以后检查:2>$null
可以解决沉默错误;不支持常见的-ErrorAction
参数(-WarningAction
,-InformationAction
和-PipelineVariable
也不支持);请注意,如果2>$null
恰好生效,则$ErrorActionPreference = 'Stop'
可以触发脚本终止错误。 -AsJob
参数,将生成的作业对象与Wait-Job
一起使用,以等待所有线程完成,此时,您可以调用Receive-Job
接收输入顺序的所有输出。 Start-ThreadJob
比Start-Job
更好
,因为线程作业的开销要比基于后台进程的标准后台作业少得多。ThreadJob
模块。在Windows PowerShell中,您可以按需安装它;例如。:Install-Module ThreadJob -Scope CurrentUser
。function PingRange ($from, $to) {
$from..$to | ForEach-Object {
Start-ThreadJob -ThrottleLimit ($to - $from + 1) {
"192.168.0.$using:_`: $(Test-Connection -BufferSize 2 -TTL 5 -ComputerName 192.168.0.$using:_ -quiet -count 1)"
}
} | Receive-Job -Wait -AutoRemove -ErrorAction SilentlyContinue -ErrorVariable err |
Sort-Object
}
$using:_
来引用封闭的ForEach-Object
脚本块的$_
变量。Start-ThreadJob
使用线程(运行空间)运行其作业,但是可以使用标准作业cmdlet(即Wait-Job
,Receive-Job
和Remove-Job
)管理生成的作业对象。Start-ThreadJob
相比,使用Start-Job
的优势:Start-ThreadJob
使用线程(通过PowerShell SDK在进程内的PowerShell运行空间)进行并发,而不是使用Start-Job
的子进程。基于线程的并发速度更快,资源占用更少。Start-ThreadJob
带来的性能提升的示例,请参见this answer。 Start-Job
作业中,输入和输出必须跨越进程边界,这需要在PowerShell远程处理中使用相同类型的基于XML的序列化和反序列化,在这种情况下,除了一些已知类型之外,类型保真度也会丢失:请参阅this answer。 Start-ThreadJob
的唯一一个(主要是假设性的)缺点是,崩溃的线程可能会使整个进程崩溃,但请注意,即使使用Throw
创建的脚本终止错误也只会终止手头的线程(运行空间),而不是调用方。Start-Job
;也就是说,如果您需要确保以下几点:Start-ThreadJob
和Start-Job
作业中,就而言,作业均看不到调用者的状态:$PROFILE
文件添加到调用者 session 中的变量,函数,别名或PSv5 +自定义类-作业不会加载$PROFILE
文件。关于powershell - PowerShell通过作业快速Ping子网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59434579/
因此,AWS 中私有(private)子网的目的是使其实例无法从外部世界直接访问。然而,在某些情况下(成功地抵制了“实例”双关语),实例访问互联网很有用。例如,一种这样的用例可能是下载软件更新。 实现
我已经退出虚拟机,我需要更改该虚拟机的虚拟网络/子网。我没有找到任何可以更改的选项,请帮助我。谢谢..! 最佳答案 据我所知,当在 VNet 中创建 NIC 时,它就无法再移动到另一个 VNet。因此
我想导出一些内容,例如 VNET 中存在的子网 View (如门户中显示的那样)。不幸的是,没有选项可以将其导出为 CSV。我在网上找到了可以导出子网路由表和关联子网的 powershell 脚本。我
我的虚拟网络具有以下子网 10.0.0.0/24,我想添加另一个子网,但每次尝试时都会得到:“您的子网不包含在该虚拟网络的同一地址空间内” 如何添加另一个子网? 最佳答案 您可以在虚拟网络中添加子网,
我有 ip 地址列表作为字符串,但该列表中也有一些子网。例如: ...127.0.0.1(这是ip)127.0.0.1/24(这是子网)... 我想检查哪个是ip,哪个是子网。到目前为止我可以过滤 i
我正在尝试使用 ARM 模板部署 Azure 防火墙。该模板在首次部署期间工作正常,并在现有虚拟网络中创建一个子网(根据需要命名为 AzureFirewallSubnet)以及具有公共(public)
我正在尝试使用 ARM 模板部署 Azure 防火墙。该模板在首次部署期间工作正常,并在现有虚拟网络中创建一个子网(根据需要命名为 AzureFirewallSubnet)以及具有公共(public)
我正在尝试编写一个脚本,将大于(不大于/16)大于/24 的子网分解为/24 子网。例如:10.10.10.0/23 应该给我 10.10.10.0/24 和 10.10.11.0/24 我的逻辑是首
我在 Azure VNet 中有两台虚拟机(IP 地址 10.1.0.4 和 10.1.0.5),以及一台通过 VPN 网关连接到 VNet 的计算机(IP 10.3.0.2)。是否可以在内部负载均衡
错误消息 执行terraform apply时收到以下错误消息: 错误:创建/更新虚拟网络“CTI-NETWORK”(资源组“CTI-RESOURCES”)时出错:network.VirtualNet
我无法从不再使用的 VNet 中删除“默认”子网。错误是:“子网默认值由/subscriptions/{guid}/resourceGroups/mpi-prod-westeurope-rg/prov
我在使用 docker-compose 时遇到问题。目前,我的容器堆栈是在它们自己定制的、基于桥接的隔离网络中创建的。 例如当运行 docker-compose -p client1 up -d 时,
我无法从不再使用的 VNet 中删除“默认”子网。错误是:“子网默认值由/subscriptions/{guid}/resourceGroups/mpi-prod-westeurope-rg/prov
如果文件的一个版本在特定子网中具有接口(interface),我想将其复制到服务器,或者如果在该子网中没有接口(interface),则将文件的一个版本复制到服务器。下面是一个工作,但我认为不是最佳解
我是 terraform 新手,想要更改网络上的子网,但遇到了一个奇怪的错误。谷歌什么也没得到。这是我要输入的内容(更改 main.tf 和运行计划后) terraform apply -replac
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我们有 dbs, basion ..等,总共 10 个东西需要分开。 如果我们将它们中的每一个都放入一个单独的子网中,我们总共有 10 个子网,再加上 1 个用于第二个区域以实现高可用性。因此,我们总
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我们有 dbs, basion ..等,总共 10 个东西需要分开。 如果我们将它们中的每一个都放入一个单独的子网中,我们总共有 10 个子网,再加上 1 个用于第二个区域以实现高可用性。因此,我们总
在 IP 为 145.74.217.109 的机器 A 上运行 ServerSocket 时然后尝试使用 IP 为 145.74.219.103 的机器 B 连接到机器 A,但无法连接。但是当使用 I
我是一名优秀的程序员,十分优秀!