系统搜索超时

时间:2018-04-30 15:57:02

标签: powershell

我运行一个简短的脚本,从文本文件中的系统列表中删除几个本地文件。问题在于,当脚本运行时,如果系统在网络上不活动,则脚本会挂起,看起来像是永恒的。有没有办法缩短查询时间,以便脚本可以跳过非活动系统并继续到下一行?

function delete-remotefile {
PROCESS {
            $file = "\\$_\c$\Windows\folderx\filename.txt"
            if (test-path $file)
            {
            echo "$_ filename.txt exists"
            Remove-Item $file -force
            echo "$_ filename.txt file deleted"
            }
            $file = "\\$_\c$\Windows\folderx\filename2.txt"
            if (test-path $file)
            {
            echo "$_ filename2.txt exists"
            Remove-Item $file -force
            echo "$_ filename2.txt file deleted"
            }
        }
}

Get-Content  C:\Users\username\Desktop\systems.txt | delete-remotefile

pause

1 个答案:

答案 0 :(得分:0)

为避免在不可用的系统上执行,只需将命令包装在Test-Connection中即可。只有在系统可用时才会执行此操作。

<强>实施例

function delete-remotefile {
PROCESS {

            if(Test-Connection $_)
            {
                $file = "\\$_\c$\Windows\folderx\filename.txt"
                if (test-path $file)
                {
                echo "$_ filename.txt exists"
                Remove-Item $file -force
                echo "$_ filename.txt file deleted"
                }
                $file = "\\$_\c$\Windows\folderx\filename2.txt"
                if (test-path $file)
                {
                echo "$_ filename2.txt exists"
                Remove-Item $file -force
                echo "$_ filename2.txt file deleted"
                }
            }
        }
}