我必须创建一个脚本,该脚本在给定的文件夹中执行一些操作,但是在开始操作之前,它必须包括事先检查是否还有足够的空间。文件夹名称是UNC路径,例如\\example-server\share1\folder\subfolder\
。如何获得文件夹中的可用空间?
到目前为止我尝试过的事情:
•我读到可以使用gwmi
,Get-CimInstance
,Get-Volume
和Get-PSDrive
来获取有关卷的信息,但是我不知道如何确定文件夹的存储卷。
•我将this interesting looking function复制到了脚本中,但遗憾的是它返回了Success = false和“ Free”为空值。
答案 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
建立的驱动器则没有。
为简洁起见,我省略了错误处理。