web-dev-qa-db-ja.com

ネットワーク上のすべての共有ファイルを閉じる

PowerShellスクリプトを使用して、サーバーの共有フォルダーにある開いているすべてのファイルを閉じようとしています。 1つのドライブ(F :)のファイルのみを閉じる次のスクリプトを見つけましたが、このサーバーには3つのドライブ(F:\、G:\、H :)があり、すべて閉じます。

_net files | 
    where   { $_.Contains( "F:\" ) } |
    foreach { $_.Split( ' ' )[0] }   |
    foreach { net file $_ /close }
_

不足しているドライブをこのスクリプトに追加する方法はありますか、またはドライブごとに同じスクリプトを個別に使用する必要がありますか?

{ $_.Contains( "F:\", "G:\", "H:\" ) }を試しましたが、うまくいきませんでした

ご協力ありがとうございました!

5
eccoripo

使用しているコマンドは、ネイティブのPowerShellコマンドではありません。ただし、PowerShellには、SMB接続と共有を制御するための多くの関数が付属しています。

あなたが探しているのはこれかもしれません:

Get-SMBOpenFile | Close-SMBOpenFile -Force

これにより、ファイル共有を介して開かれたすべてのファイルが閉じます。 SMB接続(Get-SMBConnection)などを管理することもできます。Get-Command *smb*を使用すると、すべてのSMB関連コマンドのリストを取得できます。

8
Tobias