powershell怎么设置文件只读与隐藏属性

发布时间:2020-03-21编辑:脚本学堂
有关powershell怎么设置文件只读、隐藏属性的方法,powershell操作文档属性的例子,包括系统、存档和无内容索引属性,感兴趣的朋友参考下。

一、文件属性
在windows下,主要使用attrib设置文件只读、隐藏和系统属性。

如何在Powershell中设置文件只读、隐藏和系统属性。

获取一个文件对象可以使用Get-Item这个cmdlet。

命令:
 

复制代码 代码示例:
PS C:Userssplaybow> get-item d:2.txt
Get-Item : 找不到项 D:2.txt。
所在位置 行:1 字符: 9
+ get-item <<<<  d:2.txt
    + CategoryInfo          : ObjectNotFound: (D:2.txt:String) [Get-Item], IO
   Exception
    + FullyQualifiedErrorId : ItemNotFound,Microsoft.powershell.Commands.GetIt
   emCommand
 

提示找不到D:2.txt这个文件。真的没有这个文件吗?不是的!
这个文件之前被我设置了隐藏属性的系统属性,待我把它去掉试试。
 

复制代码 代码示例:
PS C:Userssplaybow> attrib -h -s d:2.txt
PS C:Userssplaybow> get-item d:2.txt
    目录: D:
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-ar--        2013/11/11     20:04          6 2.txt

这下子就找到该文件了。
另外,可以出输出结果中看到Mode这部分,“ar”表示,该文件上还有存档属性和只读属性。
也可以通过下面的命令来查看文件的属性:
 

复制代码 代码示例:
PS C:Userssplaybow> $file = Get-Item d:2.txt
PS C:Userssplaybow> $file.Mode
-ar--

二、设置文件属性
去掉文件上的只读属性,要用到文件对象的Isreadonly属性。
 

复制代码 代码示例:
PS C:Userssplaybow> $file.IsReadOnly = $false
PS C:Userssplaybow> $file.Mode
-a---

从结果上看,是不是r(只读)没有了?!要想重新加回来,再把IsReadOnly设置为$true即可。

隐藏属性是不是可以通过$file对象的IsHidden来控制呢?

要想知道$file对象有哪些属性和方法,可以使用“$file | Get-Member”这个命令来查看。
当然,任何对象,想知道它有哪些方法和属性,都可以通过“<对象变量> | Get-Memeber”的方式去获取。
不要扯远了,如何设置只读外的其它属性呢,那就只能使用Attributes属性了。

例子:
 

复制代码 代码示例:
PS C:Userssplaybow> $file.Attributes = "Readonly","system","notcontentindexed","hidden","archive"
PS C:Userssplaybow> $file.mode
-arhs
PS C:Userssplaybow> $file.Attributes
ReadOnly, Hidden, System, Archive, NotContentIndexed

上面的例子展示如何设置文件的只读属性、隐藏属性、系统属性、存档属性、无内容索引属性等。
注意,Mode属性和Attributes属性有一点区别,那就是Mode中貌似不会显示出无内容存档属性(I)来。

三、修改文件属性
以上介绍了一次性为文件设置一组属性,方法简单而粗暴。

如果只想为文件增加一个ReadOnly属性,其它的原属性不变,怎么操作?
在PowerShell中,可以将文件的属性当作一个二进制数组,使用二进制的按位或(bOR)操作符来运算一下就好了。

例子:
 

复制代码 代码示例:
PS C:Userssplaybow> $file = Get-Item d:2.txt
PS C:Userssplaybow> $file.Attributes="hidden"
PS C:Userssplaybow> $readonly = [System.IO.FileAttributes] "ReadOnly"
PS C:Userssplaybow> $file.Attributes=$file.Attributes -bor $readonly
PS C:Userssplaybow> $file.Attributes
ReadOnly, Hidden

文件本身只有一个隐藏属性,后面给它添加了一个只读属性,结果变更为隐藏、只读双属性。
如果是要去掉其中一个属性?可惜没有按位非的操作符,怎么实现大家研究下。

以上就是PowerShell设置文件只读、隐藏和系统属性的方法,大家做下参考。