使用下面的代码,我试图创建一个空白的文本文件
$fileSizeInKB = $File_size_for_warning / 1KB
$filePath = "C:\Testfile.txt"
New-Item -Path $filePath -ItemType File -Value ([char]0) * $fileSizeInKB
字符串
$File_size_for_warning的字节值为45883181261
我得到下面的错误,而执行代码
New-Item : A positional parameter cannot be found that accepts argument '*'.
At E:\Monitoring_Test.ps1:126 char:1
+ New-Item -Path $filePath -ItemType File -Value ([char]0) * $fileSizeI ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-Item], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.NewItemCommand
型
请让我知道这里出了什么问题,还有其他方法吗
1条答案
按热度按时间gjmwrych1#
由于文件大小为large(~43 GiB),您应该使用不同的方法。您当前的方法将在将其写入文件之前完全在内存中创建此大小的字符串。这甚至是不可能的,因为maxium size of a string要小得多。即使可能,您也不想浪费这么多内存。
使用.NET file system API可以更有效地创建任何大小的空白文件,而不会产生内存开销:
字符串
关于您当前的方法,它通常适用于小型到中型文件(最多约1 GiB),但有几个错误需要修复:
$File_size_for_warning
。当LHS参数是字符串或数组时,乘法运算符需要int
。char
转换为string
或直接在字符串中指定空字节,如下面的示例所示。型