मैं एक स्क्रिप्ट चला रहा हूं जो कंप्यूटर के नामों को एक फाइल में जोड़ता है, और किसी कारण से यह उन्हें इस तरह दिखना शुरू कर देता है:
सी ओ एम पी यू टी ई आर 1
सी ओ एम पी यू टी ई आर 2
सी ओ एम पी यू टी ई आर 3
यह उन्हें इस तरह संलग्न नहीं करता था। स्क्रिप्ट क्या करती है, सर्वर को छोड़कर, मेरे सभी वर्कस्टेशन को पकड़ लेती है, सफलतापूर्वक बदले गए कंप्यूटरों की सूची में पढ़ती है, वर्कस्टेशन की पूरी सूची के खिलाफ फ़िल्टर के रूप में उपयोग करती है, शेष वर्कस्टेशन पर पासवर्ड बदलने के माध्यम से सफलताओं को जोड़ती है सफलतापूर्वक बदले गए कंप्यूटरों की सूची, फिर अंत में इसे सफलतापूर्वक बदली गई सूची में पढ़ा जाएगा, इसे वर्कस्टेशन की पूरी सूची के लिए फ़िल्टर के रूप में उपयोग किया जाएगा, और शेष वर्कस्टेशनों की एक अद्यतन सूची तैयार की जाएगी। यह सभी त्रुटियों के साथ एक फ़ाइल भी भरता है। अजीब दिखने वाला एकमात्र परिशिष्ट सफल है। अन्य ठीक जोड़ते हैं।
यहाँ मेरी स्क्रिप्ट है:
$time = [datetime]::Today.AddDays(-30)
$AllComputers = Get-adcomputer -filter "OperatingSystem -notlike '*server*'" -properties * |Where-Object {$_.LastLogonDate -gt $time -and ($_.Enabled -eq $true)} |Select -ExpandProperty Name
$PWChanged = @(Get-Content C:\Successful-Administrator.txt)
$RemainingUsers = $AllComputers | Where-Object { $PWChanged -notcontains $_ }
Foreach ($RemainingUser in $RemainingUsers){
Try {
$user = [adsi]"WinNT://$RemainingUser/Administrator,user"
$user.SetPassword("password")
$user.SetInfo()
Write-Host "$RemainingUser Administrator password reset"
$RemainingUser |Out-File C:\Successful-Administrator.txt -Append
}
Catch{
$ErrorMessage = $_.Exception.Message
Write-Host "$RemainingUser received error: $ErrorMessage"
$RemainingUser |Out-File C:\Errors-Administrator.txt -Append
#Write-Output "$computer received error: $ErrorMessage" +$Errors
}
}
$PWChanged = @(Get-Content C:\Successful-Administrator.txt)
$AllComputers | Where-Object { $PWChanged -notcontains $_ } |Out-File C:\Remaining-Administrator.txt
2 जवाब
मैंने जोड़ने के पहले के सुझाव की कोशिश की -Encoding utf8 और इसने कंप्यूटर नामों के बजाय मेरे दस्तावेज़ में अजीब चीनी वर्ण जोड़े, इसलिए मैंने लाइन को बदलने की कोशिश की:
Add-Content -path C:\Successful-Administrator.txt -Value $Remaininguser
और यह काम कर गया, इसने बिना रिक्त स्थान के कंप्यूटर का नाम जोड़ा, और इसने इसे अतिरिक्त वर्णों या अन्य अजीबता के बिना सही ढंग से जोड़ा।
इस समस्या को हल करने के लिए आपको एन्कोडिंग जोड़ने की आवश्यकता है
$RemainingUser | Out-File C:\Successful-Administrator.txt -Append -Encoding utf8