2009-05-21 34 views

回答

130

您可以使用Set-ItemProperty

Set-ItemProperty file.txt -name IsReadOnly -value $false 

或更短:

sp file.txt IsReadOnly $false 
+2

Set-Property是唯一可以在管道中干净地完成并使用通配符的内置方式:{sp * .txt IsReadOnly $ false}或{ls。 -recurse -include * .cs | sp -name IsReadOnly -value $ false} – Jaykul 2009-05-27 14:45:29

+0

使用PowerShell v2我看到了难以使用的CmdLet绑定sp。 PSCX Set-Writable和Set-ReadOnly没有这些问题。我会将我看到的问题发布到博客上,并在稍后与其链接。我建议Keith回答PowerShell v2(现代PowerShell)。 – yzorg 2011-04-21 22:39:33

+3

@yzorg:那你究竟在这里告诉我什么?至于Keith的回答,他正在使用PSCX。并非所有人都安装了这些软件,这并不是真正的PowerShell v1与v2版本。 – Joey 2011-04-22 09:28:00

15
$file = Get-Item "C:\Temp\Test.txt" 

if ($file.attributes -band [system.IO.FileAttributes]::ReadOnly) 
{ 
    $file.attributes = $file.attributes -bxor [system.IO.FileAttributes]::ReadOnly  
} 

上面的代码片段摘自该article

UPDATE 从注释中使用Keith Hill's实现(我已经测试了这一点,它的工作),这将成为:

$file = Get-Item "C:\Temp\Test.txt" 

if ($file.IsReadOnly -eq $true) 
{ 
    $file.IsReadOnly = $false 
} 
+6

实现比这个更简单:$ file.IsReadOnly = $ false – 2009-05-21 15:04:05

7

如果您碰巧使用的是PowerShell Community Extensions

PS> Set-Writable test.txt 
PS> dir . -r *.cs | Set-Writable 
# Using alias swr 
PS> dir . -r *.cs | swr 

你可以做相反的事情,像这样:

PS> dir . -r *.cs | Set-ReadOnly 
# Using alias sro 
PS> dir . -r *.cs | sro 
15

即使它不是本地 PowerShell中,仍然可以使用简单的这10个命令:

attrib -R file.txt 
2
Shell("net share sharefolder=c:\sharefolder/GRANT:Everyone,FULL") 
Shell("net share sharefolder= c:\sharefolder/G:Everyone:F /SPEC B") 
Shell("Icacls C:\sharefolder/grant Everyone:F /inheritance:e /T") 
Shell("attrib -r +s C:\\sharefolder\*.* /s /d", AppWinStyle.Hide) 

感谢任何人谁是帮助解决了一些问题......并帮助这个代码

此代码为我工作。要共享一个文件夹,以每一个具有读写权限 您可以在.NET

4

使用,或者你可以简单地使用:

get-childitem *.cs -Recurse -File | % { $_.IsReadOnly=$false } 

以上将适用于当前文件夹的子树中的所有.cs文件。如果您需要其他类型,只需调整“* .cs”以满足您的需求。