如何获取共享文件夹中的剩余存储空间

时间:2019-04-08 19:12:03

标签: powershell

我必须创建一个脚本,该脚本在给定的文件夹中执行一些操作,但是在开始操作之前,它必须包括事先检查是否还有足够的空间。文件夹名称是UNC路径,例如\\example-server\share1\folder\subfolder\。如何获得文件夹中的可用空间?

到目前为止我尝试过的事情:

•我读到可以使用gwmiGet-CimInstanceGet-VolumeGet-PSDrive来获取有关卷的信息,但是我不知道如何确定文件夹的存储卷。

•我将this interesting looking function复制到了脚本中,但遗憾的是它返回了Success = false和“ Free”为空值。

1 个答案:

答案 0 :(得分:1)

以下可能不是最佳解决方案,但它可能会起作用:

# Determine all single-letter drive names.
$takenDriveLetters = (Get-PSDrive).Name -like '?'
# Find the first unused drive letter.
$firstUnusedDriveLetter = [char[]] (0x41..0x5a) | 
  where { $_ -notin $takenDriveLetters } | select -first 1

# Temporarily map the target UNC path to a drive letter...
$null = net use ${firstUnusedDriveLetter}: '\\example-server\share1\folder\subfolder' /persistent:no
# ... and obtain the resulting drive's free space ...
$freeSpace = (Get-PSDrive $firstUnusedDriveLetter).Free
# ... and delete the mapping again.
$null = net use ${firstUnusedDriveLetter}: /delete

$freeSpace # output

貌似,net use映射的驱动器报告其可用空间,而用New-PSDrive建立的驱动器则没有。

为简洁起见,我省略了错误处理。