web-dev-qa-db-fra.com

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

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

96
MagicAndi

Vous pouvez utiliser Set-ItemProperty:

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

ou plus court:

sp file.txt IsReadOnly $false
141
Joey
$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 cette article

[~ # ~] mise à jour [~ # ~] Utilisation de l'implémentation Keith Hill's dans les commentaires (j'ai testé cela, et ça marche), cela devient:

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

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

Même si ce n'est pas PowerShell natif , on peut toujours utiliser la simple commande Attrib pour cela:

attrib -R file.txt
15
Scott Saad

ou vous pouvez simplement utiliser:

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

Ci-dessus fonctionnera pour tous les fichiers .cs dans la sous-arborescence du dossier actuel. Si vous avez besoin d'autres types inclus, ajustez simplement "* .cs" à vos besoins.

8
Mariusz Gorzoch

S'il vous arrive d'utiliser les PowerShell Community Extensions :

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

Vous pouvez faire le contraire comme ceci:

PS> dir . -r *.cs | Set-ReadOnly
# Using alias sro
PS> dir . -r *.cs | sro
7
Keith Hill
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 pour tous ceux qui aident à résoudre un problème ... et aident ce code

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

2
redz