मेरे पास एक txt फ़ाइल है जिसमें बहुत सारे पीसी नाम हैं। मुझे स्थानीय समूह "उपयोगकर्ताओं" -> पढ़ने और लिखने के लिए प्रत्येक पीसी पर एक विशिष्ट फ़ोल्डर की फ़ोल्डर अनुमतियों को बदलने की जरूरत है। फ़ोल्डर हमेशा समान होता है।

मेरे पास निम्नलिखित है। अगर मैं केवल एक कंप्यूटर नाम txt फ़ाइल में डालता हूं तो यह अच्छी तरह से काम करता है लेकिन अगर मैं दो या अधिक डालता हूं, तो यह काम नहीं करता है।

यह वही है जो मेरे पास है

$file = get-content -path "C:\pcnames.txt"

$acl = get-acl -path "$file\C$\testfolder1" 
$new = "users","write, read","ContainerInherit,ObjectInherit","None","Allow" 
$accessRule = new-object System.Security.AccessControl.FileSystemAccessRule $new 
$acl.SetAccessRule($accessRule) 
$acl | Set-Acl "$file\C$\testfolder1"
0
chkdsk 16 अक्टूबर 2020, 11:32

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा इसलिए है क्योंकि Get-Content एक से अधिक पंक्तियाँ होने पर एक सरणी लौटाएगा। इसके लिए आपको $file सरणी में प्रत्येक तत्व के माध्यम से लूप करने की आवश्यकता है।

आपका कोड कुछ इस तरह दिखेगा:

$file = get-content -path "C:\pcnames.txt"

foreach($pc in $file) {
    $acl = get-acl -path "$pc\C$\testfolder1" 
    $new = "users","write, read","ContainerInherit,ObjectInherit","None","Allow" 
    $accessRule = new-object System.Security.AccessControl.FileSystemAccessRule $new 
    $acl.SetAccessRule($accessRule) 
    $acl | Set-Acl "$pc\C$\testfolder1"
}
0
Tobias KKS 16 अक्टूबर 2020, 11:50