Все еще новичок в powershell, но мне было поручено выяснить, как создать и запустить скрипт powershell на каждой рабочей станции в нашем домене, чтобы он получал статус Bitlocker и затем записывал информацию в файл csv. Мы используем labtech в качестве нашей удаленной системы, поэтому мы хотим запускать скрипт на каждой машине, так как наш инженер не хочет, чтобы что-либо запускалось на самом DC (изначально он собирался извлечь все имена рабочих станций из OU и затем проверить состояние каждой из них. ). Проблема в том, что кажется, что первый компьютер, на котором выполняется сценарий, создает файл, а затем вступает во владение, эффективно блокируя все другие машины для записи в файл. Любые предложения направить меня в правильном направлении приветствуются. Благодарю.
$Computer = hostname
Write-Host "Getting Bitlocker Status..." -ForegroundColor Green
function ErrorLog {
$ErrorMessage = $_.Exception.Message
$Date = Get-Date
$Date ERROR: "$ErrorMessage" | out-file *path* -Append
exit
}
try
{
$Status = manage-bde C: -cn $Computer -status | Select-String "Conversion Status:", "Percentage Encrypted:", "Protection Status:", "Lock Status:"
}
catch
{
ErrorLog
}
finally
{
$Date = Get-Date
"$Date Successful BitLocker Check" | out-file *path* -Append
}
Write-Host "Sending info to CSV file..." -ForegroundColor Green
try{
$ConvStatus = $Status.line | Select-String "Conversion Status:"
$Percentage = $Status.line | Select-String "Percentage Encrypted:"
$LockStatus = $Status.line | Select-String "Lock Status:"
$Object = New-Object PSObject -Property @{
ComputerName = $Computer
ConversionStatus = $ConvStatus.ToString().trim("Conversion Status:")
PercentageEncrypted = $Percentage.ToString().trim("Percentage Encrypted:")
LockStatus = $LockStatus.ToString().trim("Lock Status:")
}
$Object | Select-Object ComputerName, ConversionStatus, PercentageEncrypted, LockStatus | Export-CSV *path* -NoTypeInformation -Append -Force
}
catch {
ErrorLog
}
finally
{
$Date = Get-Date
"$Date CSV written to $Path" | out-file *path* -Append
}