CreateTextFile,路径中带有冒号,不返回错误。为什么?

问题描述 投票:0回答:1

这是我尝试过的(C:\ temp确实存在):

$fso = New-Object -ComObject Scripting.FileSystemObject 
$ts = $fso.CreateTextFile("c:\temp:AAAAA.txt")      
$ts.Close() 

没有错误返回。该文件在某处创建(但不在c:\ temp中创建。如果我在其中放入内容,以后可以读取它)但我找不到它。

任何人都可以解释一下为什么这段代码不会产生错误以及文件丢失了吗?

powershell createfile
1个回答
1
投票

没有收到错误的原因可能是调用成功!

[当您调用CreateTextFile并传递文件路径C:\temp:AAAAA.txt时,实际上是在要求创建一个名为C:\temp的备用数据流(ADS)的文件AAAAA.txt

您可以通过Get-Item亲自查看:

PS C:\> Get-Item C:\temp -Stream AAAAA.txt

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\temp:AAAAA.txt
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName   : temp:AAAAA.txt
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\temp
Stream        : AAAAA.txt
Length        : 0

您还可以读写备用数据流(需要PowerShell版本5或更高版本:]

PS C:\> "Hello there!" |Set-Content C:\temp -Stream AAAAA.txt
PS C:\> Get-Content C:\temp -Stream AAAAA.txt
Hello there!

[请注意,these data streams是NTFS固有的,例如,如果您将文件复制到非NTFS文件系统或将其上传到网站,将不会保留。

© www.soinside.com 2019 - 2024. All rights reserved.