Powershell:文件元数据中的 NTFS 路径与 New-ItemProperty、Set-ItemProperty?

标签 powershell properties wmi metadata ntfs

我有兴趣在特定范围内向我的文件添加一个属性,该属性包含它们在我的文件系统中的当前位置,以便跟踪文件移动。我认为这可以使用 New-ItemProperty 完成,使用类似于以下的命令:

Get-ChildItem -recurse | foreach { New-ItemProperty -Path $.FullName -Name "OriginalLocation"-PropertyType string -Value $.FullName }

但是,当我尝试这个时,我收到了以下错误的垃圾邮件:

New-ItemProperty:无法使用接口(interface)。此提供程序未实现 IDynamicPropertyCmdletProvider 接口(interface)。

经过一番搜索,似乎 New-ItemProperty 除了使用注册表之外几乎没有用处。美好的。 Windows 有无数其他文件属性,我应该能够劫持以完成此操作。 “标签”和“标签”浮现在脑海中。因此,让我们尝试通过 Set-ItemProperty 设置它们。

Set-ItemProperty : 属性 System.String Label=D:\test\file.txt 不存在。

看来我毕竟需要创建这些属性。这是 New-ItemProperty 的缺点吗?也许在任意项目上设置诸如此类的属性是我不知道的一些 WMI 事情?

最佳答案

这是我使用重定向('<' & '>')的解决方案,它允许在 CMD.EXE 中操作备用数据流.它在 Powershell 中工作,没有任何扩展

# AlternateDataStream.ps1

$scriptBlockSetStream = {cmd /C `"echo $($Args[0])`>$($Args[1]):$($Args[2])`"}
$scriptBlockGetStream = {cmd /C `"more `<$($Args[0]):$($Args[1])`"}

$streamName = "NativeFilePath"
$File = "C:\Temp\ADSTest\toto.txt"
$streamContent = Split-Path -Path $File -Parent

# Set the data stream
Invoke-Command -ScriptBlock $scriptBlockSetStream  -ArgumentList $streamContent,$File,$streamName
# Get the Data Stream
$res = Invoke-Command -ScriptBlock $scriptBlockGetStream  -ArgumentList $File,$streamName
$res

关于Powershell:文件元数据中的 NTFS 路径与 New-ItemProperty、Set-ItemProperty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10473161/

相关文章:

java - 为 ref bean 创建属性,Spring

python - 在 Windows 上的 python 中获取 CPU 温度

powershell - 如何使用 powershell 检查我的计算机的 Windows 更新是否已过期超过 30 天

regex - 正则表达式无法在Word文档的范围内查找

sql-server - 在 Powershell 中使用 Backup-SqlDatabase 时出现 "Error in TypeData"错误

c# - 为什么列表的副本仍然使用 C# 更改原始列表中的属性

iphone - 在 ViewController.m 中,如何通过字符串访问在 ViewController.h 中声明的属性?

c# - 使用 S.M.A.R.T 和 WMI 加载/卸载循环计数

c#-4.0 - 使用VDS创建UEFI分区

powershell - 用于 SQL 过程执行的 Azure Runbook :Facing Timeout Issues