2009-05-21 55 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」以滿足您的需求。