2009-05-21 23 views

Respuesta

130

Puede utilizar Set-ItemProperty:

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

o más corto:

sp file.txt IsReadOnly $false 
+2

Set-Property es la única manera incorporada en la que puede hacerlo limpiamente en la canalización, y usar comodines: {sp * .txt IsReadOnly $ false} O {ls. -recurse -include * .cs | sp -name IsReadOnly -value $ false} – Jaykul

+0

Uso de PowerShell v2 Estoy viendo enlaces de CmdLet difíciles de usar para sp. PSCX Set-Writable y Set-ReadOnly no tienen esos problemas. Voy a bloguear los problemas que estoy viendo y lo enlazaré más tarde. Recomiendo la respuesta de Keith para PowerShell v2 (Modern PowerShell). – yzorg

+3

@yzorg: Entonces, ¿qué es exactamente lo que me estás diciendo aquí? En cuanto a la respuesta de Keith, él está usando PSCX. No todos tienen esos instalados y ese no es realmente el caso de PowerShell v1 vs. v2. – Joey

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  
} 

El fragmento de código anterior se ha tomado de este article

ACTUALIZACIÓN Usando Keith Hill's aplicación de los comentarios (He probado esto, y funciona), esto se convierte en:

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

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

La implementación es más simple que eso: $ file.IsReadOnly = $ false –

7

Si está usando el PowerShell Community Extensions:

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

Puede hacer lo contrario de este modo:

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

A pesar de que no es nativo PowerShell, uno todavía puede usar el simple Attrib comandos para esto:

attrib -R file.txt 
+0

¡Gracias! Esto funcionó para mí: dir. -r * .cs | % {$ _. fullname} | % {attrib -r $ _} –

+1

Podría haberse saltado un paso: dir. -r * .cs | % {attrib -r $ _. FullName} –

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) 

gracias por cualquier persona que están ayudando a resolver algún problema ... y ayudar a este código

este código está trabajando para mí .. para compartir una carpeta para cada uno con lectura y escritura permiso puede utilizar esto en .net

4

o simplemente puede usar:

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

Above funcionará para todos los archivos .cs en el subárbol de la carpeta actual. Si necesita otros tipos incluidos, simplemente ajuste "* .cs" a sus necesidades.

+2

Ajuste el comando (agregar -File) para que solo funcione con archivos. Los directorios no tienen la propiedad. –

Cuestiones relacionadas