Powershell中的直接非缓冲写入

时间:2012-08-23 01:37:50

标签: powershell

目前我正在尝试运行一个测试,在写入文件时会突然关闭机器。当发生掉电时,最后一部分数据不存在,因为它在掉电之前从未刷新到磁盘。

Perl(在Linux中)允许在以下列方式打开文件时直接进行非缓冲写入。

sysopen(F, $file, O_WRONLY|O_DIRECT) or die "Couldn't direct open file $file\n";

这允许数据被写入,直到最后一个字符由于某种原因机器崩溃。同样,对于Windows,当使用“FILE_FLAG_NO_BUFFERING”标志打开文件进行写入时,C ++允许直接写入。

如何使用PowerShell允许直接/非缓冲写入磁盘?

1 个答案:

答案 0 :(得分:1)

您可以下载到.NET并使用FileStream对象来编写文件。使用带有FileOptions和try the FileOptions.WriteThrough枚举值的构造函数,例如:

$fileStream = New-Object System.IO.FileStream($file,
    [System.IO.FileMode]::Create, 
    [System.Security.AccessControl.FileSystemRights]::Modify,
    [System.IO.FileShare]::None,
    1,
    [System.IO.FileOptions]::WriteThrough)