使用PowerShell按预设大小创建空白文件报错求解决
错误原因与解决方法
错误原因
- 语法解析问题:PowerShell解析
-Value ([char]0) * $fileSizeInKB时,会把*当作独立的位置参数,而非乘法运算符——因为你没把整个乘法表达式用括号完整包裹,导致参数绑定失败,触发PositionalParameterNotFound错误。 - 内存超限问题:就算修复语法,你要创建的文件约43GB,用
([char]0) * $fileSizeInKB会在内存中生成一个超大字符数组,直接耗尽系统内存,根本无法执行。
可行实现方法
方法1:.NET FileStream直接设置文件大小(推荐,高效无内存压力)
通过.NET的文件流直接分配磁盘空间,无需在内存中存储完整数据,适合大文件:
$filePath = "C:\Testfile.txt" $targetSize = 45883181261 # 目标字节数 $stream = [System.IO.File]::Create($filePath) $stream.SetLength($targetSize) $stream.Dispose()
方法2:使用Windows原生fsutil命令(需管理员权限)
利用系统自带工具直接创建指定大小的空白文件,底层直接分配磁盘空间:
$filePath = "C:\Testfile.txt" $targetSize = 45883181261 # 目标字节数 fsutil file createnew $filePath $targetSize
方法3:修复原代码语法(仅适用于小文件)
如果是小文件测试,可以把乘法表达式用括号包裹,但大文件会直接内存溢出,不推荐:
$File_size_for_warning = 45883181261 $filePath = "C:\Testfile.txt" New-Item -Path $filePath -ItemType File -Value ([char[]]::CreateInstance([char], $File_size_for_warning))
内容的提问来源于stack exchange,提问作者snehasish nandy
相关产品推荐
相关产品推荐

