100 votes

Comment supprimer l'attribut ReadOnly d'un fichier à l'aide de PowerShell ?

Comment supprimer l'attribut ReadOnly d'un fichier, à l'aide d'un script PowerShell (version 1.0) ?

147voto

Joey Points 148544

Vous pouvez utiliser Set-ItemProperty :

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

ou plus court :

sp file.txt IsReadOnly $false

3 votes

Set-Property est la seule façon intégrée de le faire proprement dans le pipeline, et en utilisant des caractères génériques : { sp *.txt IsReadOnly $false } OU { ls . -recurse -include *.cs | sp -name IsReadOnly -value $false }

0 votes

En utilisant PowerShell v2, je vois des bindngs CmdLet difficiles à utiliser pour sp. PSCX Set-Writable et Set-ReadOnly n'ont pas ces problèmes. Je vais écrire un blog sur les problèmes que je rencontre et mettre un lien vers celui-ci plus tard. Je recommande la réponse de Keith pour PowerShell v2 (PowerShell moderne).

3 votes

@yzorg : Alors, qu'est-ce que vous me dites exactement ici ? Quant à la réponse de Keith, il utilise PSCX. Tout le monde ne les a pas installés et ce n'est pas vraiment un cas de PowerShell v1 contre v2.

16voto

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

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

L'extrait de code ci-dessus est tiré de ce qui suit article

UPDATE Utilisation de Keith Hill's mise en œuvre à partir des commentaires (j'ai testé cela, et cela fonctionne), cela devient :

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

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

6 votes

L'implémentation est plus simple que cela : $file.IsReadOnly = $false

15voto

Scott Saad Points 8894

Même si ce n'est pas Native PowerShell, on peut toujours utiliser la simple fonction Attribut pour cela :

attrib -R file.txt

0 votes

Merci ! Cela a fonctionné pour moi : dir . -r *.cs | % { $_.fullname } | % { attrib -r $_ }

1 votes

J'aurais pu sauter une étape : dir . -r *.cs | % { attrib -r $_.FullName }

7voto

Keith Hill Points 73162

Si vous utilisez le Extensions communautaires PowerShell :

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

Vous pouvez faire l'inverse comme ceci :

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

2voto

redz Points 1
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)

merci à tous ceux qui m'ont aidé à résoudre un problème... et qui m'ont aidé avec ce code.

ce code fonctionne pour moi pour partager un dossier à chacun avec la permission de lecture et d'écriture vous pouvez utiliser ceci dans .net

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X