$computers | Start-RSJob { Invoke-MyCommand -Computer $_ }
Get-RSJob | Receive-RSJob
$csvData = Import-CSV -Path C:\share\FII.csv -Delimiter "," -Encoding UTF8
$csvData[0]."ФамилияИмя"
Get-ADUser -Filter { DisplayName -eq $csvData[0]."ФамилияИмя" }
$csvData[0]
проблема действительно была в кодировке , при запросе выдавались крокозябры
$user = Get-ADUser -identity "i.tsebrenko"
DistinguishedName
Enabled
GivenName
Name
ObjectClass
ObjectGUID
SamAccountName
SID
Surname
UserPrincipalName
$user = Get-ADUser -identity "i.tsebrenko" -Property DisplayName
Write-Host $user.DisplayName
#Фильтруем пользаков по схожему описанию в AD
$User = Get-ADUser -Filter {Description -eq $userDescription}
#Изменяем указанные поля полями из csv файлы , присваиваем значения через $row.значение_из_таблицы
if ($User) {
$lol.IdentityReference
$myArray
$lol.IdentityReference
это для Powershell $lol.IdentityReference | Out-Default
, потому что далее этот вывод никуда не попадает, ни в переменную, ни в потокuserPrincipalName = samAccountName + '@' + $DomainName
$DomainName
при этом может быть как $env:USERDNSDOMAIN
, так и, например, (Get-ADDomain).DNSRoot
$domain = Get-ADDDomain
$DomainName = $domain.Name + $domain.ParentDomain
смотря от кого получаешь данные...[DateTime]$StartDate = '2023-05-11'
[DateTime]$EndDate = '2023-05-12'
$ComputerName= 'targetcomputer'
$params = @{
ComputerName=$ComputerName
FilterXml = '<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[System[(EventID=4647 or EventID=4648) and
TimeCreated[@SystemTime>='''+
$StartDate.ToUniversalTime().ToString('u').Replace(' ','T') + ''' and
@SystemTime<'''+
$EndDate.ToUniversalTime().ToString('u').Replace(' ','T')+ ''']]]
</Select>
</Query>
</QueryList>'
}
$e = Get-WinEvent @params
# Ну и тут потом анализировать $e
Значение нуля означает, что время последнего входа неизвестно.
$referenceUser = Get-ADUser refuser -Property userParameters
Set-ADUser targetUser -Replace @{
userParameters = $referenceUser.userParameters
}
$ar = New-Object System.Security.AccessControl.FileSystemAccessRule($group, @('Read', 'ReadAndExecute'),
'ContainerInherit,ObjectInherit', 'None', 'Allow')
# Получаете список папок
Get-ChildItem -Directory -Recurse $Path | Foreach-Object {
# Получаете по ним ACL
$acl = $_.GetAccessControl('Access')
# Сравниваете с нужным
if (-not ($acl.Access.IdentityReference -eq $group)) {
# Добавляете если надо
$acl.SetAccessRule($ar)
$_.SetAccessControl($acl)
}
}
$u = Get-ADUser iivanov
$u2 = [ADSI]("LDAP://" + $u.DistinguishedName)
$u2.SetPassword('PassWord123')
Get-ADUser IIvanov -prop AccountExpirationDate, accountExpires
AccountExpirationDate : 05.10.2022 0:00:00
accountExpires : 133093908000000000
# Как делаете вы
Get-Date 133093908000000000 -UFormat '%Y.%m.%d'
0422.10.04
# Что там на самом деле вы должны были увидеть
Get-Date 133093908000000000
4 октября 0422 г. 21:00:00
# Как делаю я
[datetime]::FromFileTime(133093908000000000)
5 октября 2022 г. 0:00:00
# Что великолепно совпадает с AccountExpirationDate, который я и рекомендую
$global:log = New-Object System.Collections.ArrayList
$testobj = New-Object -TypeName System.Diagnostics.EventLog
$testobj.Log = "Security"
Register-ObjectEvent -InputObject $testobj -EventName EntryWritten -Action {
param($sender, $e)
[void]$global:log.Add([PSCustomObject]@{Sender = $sender; Args = $e })
}
# Смотреть потом события в переменной
$global:log
$Date1=(Get-Date).Date
$Date2=(Get-Date).Date.AddDays(7)
$NextBirthdays = Get-ADUser -filter "Enabled -eq 'True'" -properties birthday -SearchBase 'DC=firma,DC=local' |
Select-Object birthday, Name |
Where-Object { $_.birthday -ge $Date1 -and $_.birthday -le $Date2 }
# Формируем текст письма
$messagetemplate = " {0}: {1}`r`n"
$message = ""
foreaach ($b in $NextBirthdays) {
$message += $messagetemplate -f $b.Name, $b.birthday
}
# Ну и тут их шлём кому попало
Send-MailMessage ....
| Tee-Object -Variable 'group'
чтобы записать инфу в переменную $group и одновременно показать на экране #классический цикл
foreach ($obj in $list) {
# сделать что-нибудь с переменной $obj
Set-something -name $obj.name -value $obj.value
}
#цикл с использованием pipeline
$list | foreach-object {
# сделать что-нибудь с переменной $_
Set-something -name $_.name -value $_.value
}
Get-Help Get-ADUser -Parameter Identity