我想做我的脚本的进度条,但后来我需要总量的文件夹.
是否存在显着的运行时差异:
Get-ChildItem $path -Directory | ForEach-Object {
#do work
}
Run Code Online (Sandbox Code Playgroud)
和
$folders = Get-ChildItem $path -Directory
foreach($folder in $folders){
#do work
}
Run Code Online (Sandbox Code Playgroud)
然后我可以$folders.Count用作我的文件夹总数.我不知道如何使用foreach-object循环来完成它.
我试图在扫描文件夹时处理错误。假设我有类似的东西:
Get-ChildItem $somepath -Directory | ForEach-Object {
if(error occurred due to too long path) {
skip this folder then
} else {
Write-Host $_.BaseName
}
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我会打印文件夹,$somepath直到其中一个太长,然后循环停止。即使在使用SilentlyContinue. 即使到达太长的文件夹后,我也想打印。
我正在尝试远程调用服务器上的命令并更改其 IP 以及其他设置。我得到以下代码行:
Invoke-Command -ComputerName $currentIP {`
$wmi = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'true'";`
$wmi.SetDNSServerSearchOrder($DNSServers);`
$wmi.SetGateways($Defaultgateway);`
$wmi.EnableStatic($newIP,"255.255.255.0")} -Credential $cred
Run Code Online (Sandbox Code Playgroud)
每个设置都已应用,但在脚本结束时它开始进行:
与 ###.##.###.## 的网络连接已中断。尝试重新连接长达 4 分钟...
并且继续连接失败,显然是因为IP已更改。但是IP更改后我不再发出命令了吗?那么为什么会发生这种情况以及如何阻止它呢?
powershell ×3