路径中带有冒号的 CreateTextFile,不会返回任何错误。为什么?
CreateTextFile with a Colon in the path , no error is returned. Why?
这是我试过的(C:\temp确实存在):
$fso = New-Object -ComObject Scripting.FileSystemObject
$ts = $fso.CreateTextFile("c:\temp:AAAAA.txt")
$ts.Close()
没有返回错误。该文件是在某处创建的(但不在 c:\temp 中...如果我在里面放了一些东西,我以后可以读取它)
但是我找不到它。
谁能解释一下为什么这段代码没有产生错误以及文件去了哪里?
没有报错的原因可能是调用成功了!
当您调用 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 文件系统或将它们上传到网站,例如,它不会持续存在。
这是我试过的(C:\temp确实存在):
$fso = New-Object -ComObject Scripting.FileSystemObject
$ts = $fso.CreateTextFile("c:\temp:AAAAA.txt")
$ts.Close()
没有返回错误。该文件是在某处创建的(但不在 c:\temp 中...如果我在里面放了一些东西,我以后可以读取它) 但是我找不到它。
谁能解释一下为什么这段代码没有产生错误以及文件去了哪里?
没有报错的原因可能是调用成功了!
当您调用 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 文件系统或将它们上传到网站,例如,它不会持续存在。