使用 Get-SmbOpenFile 执行直到

Do Until with Get-SmbOpenFile

我正在尝试检查是否有任何文件在使用 powershell 的服务器上打开。 我有下面的脚本哪种有效

如果我在没有文件打开时启动它,它会先检查,等待 10 秒,然后打印消息 "No files are opened"。如果我打开任何文件并启动脚本,它会显示 "Files are opened, please wait..." 但是当我关闭所有文件并断开所有会话时,它仍然显示相同的

Clear-Host
$CheckOpenfiles = Get-SmbOpenFile
Do
    {
     "$(get-date) Files are opened, please wait..."
     Start-Sleep 10
     } Until (!$CheckOpenfiles) 
     "No files are opened"

正如 LotPings 在评论中指出的那样,在开始循环之前将您的值分配给 $CheckOpenfiles。这意味着它不会在您的 Until 条件中重新评估。

Do {
    "$(get-date) Files are opened, please wait..."
    Start-Sleep 10
} Until (!(Get-SmbOpenFile)) 
"No files are opened"