เดเตเดฑเดเตเดเต เดตเตผเดทเดเตเดเดณเดพเดฏเดฟ เดเดพเตป เดฏเตเดฃเดฟเดตเตเดดเตเดธเดฟเดฑเตเดฑเดฟเดฏเดฟเตฝ Microsoft Windows 10 เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ 8.1 เดตเตผเดเตเดเตเดธเตเดฑเตเดฑเตเดทเดจเตเดเดณเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจเต. เด
เดเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ, เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธ เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดธเตเดซเตเดฑเตเดฑเตเดตเตเดฏเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดเดฏเตเด เดฎเตเดคเตเดคเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดเดเดจเด เดเดฑเดชเตเดชเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดพเดฃเต เดชเดฟเดจเตเดคเตเดฃ.
เดเดฐเต เดธเตเดฑเตเดฑเตเดทเดจเตเด 2 เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดฃเตเดเต: เด เดกเตเดฎเดฟเดจเดฟเดธเตเดเตเดฐเตเดฑเตเดฑเดฑเตเด เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเดฏเตเด. เด เดกเตเดฎเดฟเดจเดฟเดธเตเดเตเดฐเตเดฑเตเดฑเตผเดเตเดเต เดชเตเตผเดฃเตเดฃ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดฎเตเดฃเตเดเต; เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเดเตเดเต เดธเตเดซเตเดฑเตเดฑเตเดตเตเดฏเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดเดดเดฟเดตเดฟเดฒเตเดฒ. เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดตเตเดคเตเดคเดฟเดฏเดพเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดตเดฟเดทเดฎเดฟเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป, เด เด เดเตเดเตเดฃเตเดเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเดฟ เดชเตเดคเดฟเดฏเดคเดพเดฏเดฟ เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต. เดเดคเต เดเดฐเต เดธเตเดฑเตเดฑเตเดทเดจเดฟเดฒเตเด เดจเดเดคเตเดคเตเดฃเตเด เดเดฟเดฒ เดถเดพเดฐเตเดฐเดฟเด เดเดฒเดจเดเตเดเตพ เดเตพเดเตเดเตเดณเตเดณเตเดจเตเดจเต.
เด เดตเตผเดทเด เดเดพเตป ActiveDirectory เดเดฒเตเดฒเดพเดคเต PowerShell เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเดฟเดเตเด เดเดฒเดจเดเตเดเดณเตเด เดเดเตเดเตเดฎเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต, เดเตเดเดพเดคเต เดเดจเตเดฑเตผเดจเตเดฑเตเดฑเดฟเตฝ เดเดพเตป เดเดฃเตเดเตเดคเตเดคเดฟเดฏ เดเดฟเดฒ เดชเดพเดเดเดเตเดเตเดฑเดฟเดชเตเดชเตเดเตพ เด เดชเตเดธเตเดฑเตเดฑเดฟเตฝ เดถเตเดเดฐเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต.
เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตฝ
เดธเตเดฑเตเดฑเตเดทเดจเตเดเดณเดฟเตฝ PS 4 เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเตเด เดเดฒเตเดฒเดพเด เด เดฑเดฟเดฏเดพเดตเตเดจเตเดจ เดเดจเตเดฑเตผเดจเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฟเดฒ เดเดฆเดพเดนเดฐเดฃเดเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒเตเดจเตเดจเตเด เดเดพเตป เดเดเดจเดเดฟ เดจเตเดฐเดฟเดเตเดเต. เด เดคเดฟเดจเดพเตฝ, เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดเดพเดเตเดจเตเดจ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดจเดฟเดเตเดเตพ เดฐเดฃเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต:
- เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด
เดตเดฟเตปเดกเตเดธเต เดฎเดพเดจเตเดเตเดฎเตเดจเตเดฑเต เดซเตเดฐเตเดฏเดฟเดเดตเตผเดเตเดเต 5.1 - เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด
เดชเดตเตผเดทเตเตฝ
เดฏเดพเดจเตเดคเตเดฐเดฟเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ
- เดเดฐเต เดเดชเดฏเตเดเตเดคเต เด เดเตเดเตเดฃเตเดเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดจเตเดจเต/เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต
- เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโเด เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเดพเดฏเดฟ เดธเตเดตเดฏเดฎเตเดต เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเตเด
- เดเดชเดฏเตเดเตเดคเดพเดตเต เดเดฆเตเดฏเด เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด
เดเดฐเต เดเดชเดฏเตเดเตเดคเต เด เดเตเดเตเดฃเตเดเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดจเตเดจเต/เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต
เดเดพเตป เดธเตเดทเตเดเดฟเดฏเดฟเตฝ เดคเตเดเดเตเดเดฟ. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดจเดฟเดเตเดเตพ 2 เดเดเตเดเดเตเดเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต: เดเดฐเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดธเตเดทเตเดเดฟเดเตเดเตเด (
Function New-User {
<#
.SYNOPSIS
ะกะพะทะดะฐะฝะธะต ะฝะพะฒะพะณะพ ะฟะพะปัะทะพะฒะฐัะตะปั
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ัะพะทะดะฐะตั ะฝะพะฒะพะณะพ ะฟะพะปัะทะพะฒะฐัะตะปั ะธ ะดะพะฑะฐะฒะปัะตั ะตะณะพ ะฒ ะณััะฟะฟั ะะพะปัะทะพะฒะฐัะตะปะธ
.EXAMPLE
#New-User "Student" "Student"
.PARAMETER Name
ะะผั ะฝะพะฒะพะณะพ ะฟะพะปัะทะพะฒะฐัะตะปั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER Password
ะะฐัะพะปั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
#>
[CmdletBinding()]
param (
[PARAMETER(Mandatory=$True)][String]$Name,
[PARAMETER(Mandatory=$True)][String]$Password
)
$Pwd = convertto-securestring $Password -asplaintext -force
$GroupSID = "S-1-5-32-545"
New-LocalUser -User $Name -AccountNeverExpires:$true -FullName $Name -Password $Pwd -PasswordNeverExpires:$true
Add-LocalGroupMember -SID $GroupSID -Member $Name
Write-Host "-- ะกะพะทะดะฐะฝ ะฟะพะปัะทะพะฒะฐัะตะปั $Name ั ะฟะฐัะพะปะตะผ $Password" -foregroundcolor Green
}
เดเดพเตป เดเดคเต SID เดฎเตเดเตเดจ เดเตเดฐเตเดชเตเดชเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดจเตเดจเต, เดเดพเดฐเดฃเด เดเดฐเต เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดชเดฏเตเดเตเดคเต เดเตเดฐเตเดชเตเดชเดฟเดจเตเดฑเต SID เดเดฒเตเดฒเดพเดฏเดฟเดเดคเตเดคเตเด เดเดฐเตเดชเตเดฒเตเดฏเดพเดฃเตเดจเตเดจเต เดเดพเตป เดเดฃเตเดเตเดคเตเดคเดฟ - S-1-5-32-545.
เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดคเดคเตเดตเดฎเดจเตเดธเดฐเดฟเดเตเดเดพเดฃเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเตฝ เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต: เด เดกเตเดฎเดฟเดจเดฟเดธเตเดเตเดฐเตเดฑเตเดฑเตผ เดธเตเดทเตเดเดฟเดเตเด เดเดฒเตเดฒเดพ เด เดเตเดเตเดฃเตเดเตเดเดณเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเด. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, Win32_UserProfile เดเตเดฒเดพเดธเดฟเดจเตเดฑเต WMI เดเดฌเตโเดเดเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเต, เดจเดฟเดฒเดตเดฟเตฝ เดธเดเตเดตเดฎเดฒเตเดฒเดพเดคเตเดคเดคเตเด เดชเตเดฐเดคเตเดฏเตเดเดฎเดฒเตเดฒเดพเดคเตเดคเดคเตเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดเดชเดฏเตเดเตเดคเดพเดเตเดเดณเตเดฏเตเด เดเดพเตป เดจเดฟเตผเดตเตเดตเดเดฟเดเตเดเตเดจเตเดจเต.
Function Remove-Users {
<#
.SYNOPSIS
ะฃะดะฐะปะตะฝะธะต ะฟะพะปัะทะพะฒะฐัะตะปะตะน
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ัะดะฐะปัะตั ะฟะพะปัะทะพะฒะฐัะตะปะตะน, ะบะพัะพััะต ัะตะนัะฐั ะฝะต ะฐะบัะธะฒะฝั ะธ ะฝะต ัะฒะปััััั ัะฟะตัะธะฐะปัะฝัะผะธ
ะฃะดะฐะปััััั ะฒ ัะพะผ ัะธัะปะต ัะฐะฑะพัะธะน ะบะฐัะฐะปะพะณ ะธ ัะตะตััั ะฟะพะปัะทะพะฒะฐัะตะปะตะน
.EXAMPLE
#Remove-Users
#>
[CmdletBinding()]
$UsersProfiles = Get-WMIObject -class Win32_UserProfile -ComputerName $env:COMPUTERNAME | Where {!($_.Loaded) -and !($_.Special)}
foreach($Usr in $UsersProfiles) {
$UsrName = $Usr.LocalPath.Split("")[2]
Write-Host "-- ะฃะดะฐะปะตะฝะธะต ะฟะพะปัะทะพะฒะฐัะตะปั $UsrName ..." -foregroundcolor Green
Remove-LocalUser -Name $UsrName
Remove-WmiObject -Path $Usr.__PATH
Write-Host "-- ะะพะปัะทะพะฒะฐัะตะปั $UsrName ัะดะฐะปะตะฝ" -foregroundcolor Green
}
}
เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต เดเดเตเดเตเดฒเตเดเดฟเตป (เดเดเตเดเตเดฒเตเดเดฟเตป).
เดเดตเดฟเดเต เดเดฒเตเดฒเดพเด HKEY_LOCAL_MACHINE เดฐเดเดฟเดธเตเดเตเดฐเดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเต เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดเดฐเต เดเตเดฑเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฎเดพเดฏเดฟ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเต:
Function Set-AutoLogon {
<#
.SYNOPSIS
ะะบะปััะตะฝะธะต ะฐะฒัะพะฒั
ะพะดะฐ ะดะปั ะฟะพะปัะทะพะฒะฐัะตะปั
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ะฒะบะปััะฐะตั ะฐะฒัะพะฒั
ะพะด ะดะปั ัะบะฐะทะฐะฝะฝะพะณะพ ะฟะพะปัะทะพะฒะฐัะตะปั
.EXAMPLE
#Set-AutoLogon "Student" "Student"
.PARAMETER Name
ะะผั ะฟะพะปัะทะพะฒะฐัะตะปั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER Password
ะะฐัะพะปั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
#>
[CmdletBinding()]
param (
[PARAMETER(Mandatory=$True)][String]$Name,
[PARAMETER(Mandatory=$True)][String]$Password
)
$PathToWinlogon = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon"
New-ItemProperty -Path $PathToWinlogon -Name AutoAdminLogon -Value 1 -PropertyType "String"
New-ItemProperty -Path $PathToWinlogon -Name DefaultUserName -Value $Name -PropertyType "String"
New-ItemProperty -Path $PathToWinlogon -Name DefaultPassword -Value $Password -PropertyType "String"
}
เดเดชเดฏเตเดเตเดคเดพเดตเต เดเดฆเตเดฏเด เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด
เดเดฐเต เดชเตเดคเดฟเดฏ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเตเดฑเต เดเดฆเตเดฏ เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดเดฒเตเดฒเดพเด เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒเตเดจเตเดจเต เดเดคเต เดฎเดพเดฑเดฟ (เด เดคเต เดเดจเตเดจเต เด เตฝเดชเตเดชเด เดเดถเตเดเดฐเตเดฏเดชเตเดชเตเดเตเดคเตเดคเดฟ). เด เดคเดฟเดจเดพเตฝ, เดเดฆเตเดฏ เดฒเตเดเดฟเตป เดเดดเดฟเดเตเดเต เดเดฟเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเดฟเดจเตเดฑเต เดเดตเดถเตเดฏเดเดค เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต:
- เดเดฐเต เดชเตเดฐเตเดเตเดธเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
- เดกเตเดธเตเดเตเดเตเดชเตเดชเดฟเตฝ เดซเดฏเดฒเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดคเดเดฏเตเดจเตเดจเต
- เดเดชเดฏเตเดเตเดคเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดชเดพเดจเตฝ เดเดทเตเดเดพเดจเตเดธเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต
เดเดพเตป เดจเดฟเดฐเดตเดงเดฟ เดฐเตเดคเดฟเดเตพ เดชเดฐเตเดเตเดทเดฟเดเตเดเต, เดชเดเตเดทเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดจเตเดจเต เดเดจเดฟเดเตเดเต เดตเตเดฃเตเดเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเต: เดเดฐเต เดเดพเดธเตเดเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด. เดเดจเตเดจเดพเตฝ PS เดเดชเดฏเตเดเดฟเดเตเดเต เดเดจเดฟเดเตเดเต เดเดฐเต เดเดพเดธเตเดเต เดเดฐเดเดญเดฟเดเตเดเดพเตป เดเดดเดฟเดเตเดเดฟเดฒเตเดฒ. เด เดคเดฟเดจเดพเตฝ เดเดพเตป เดเดฐเต เดจเตเดฃเตเด เดชเดพเดค เดธเตเดตเตเดเดฐเดฟเดเตเดเต:
schtasks /create /tn LogonUserSettings /tr "pwsh C:ScriptsSettings.ps1" /sc onlogon /ru $env:USERDOMAIN$UserName /rp $Password /f
เดเดจเตเดจเดพเตฝ เดเดคเต เดฎเดคเดฟเดฏเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ - เดเดฐเต เดฌเดพเดเตเดเต เดเตเดฒเดฟเดฏเดพเดฏเดฟ เดฒเตเดเดฟเตป เด
เดจเตเดตเดฆเดฟเดเตเดเดพเตป เดตเดฟเตปเดกเตเดธเต เดเดตเดถเตเดฏเดชเตเดชเตเดเตเดเต (SeBatchLogonRight). เดเดคเตเดเตเดเดจเต เดเตเดฏเตเดฏเดพเด เดเดจเตเดจ เดเตเดฆเตเดฏเดคเตเดคเดฟเดจเต เดเดคเตเดคเดฐเด เดคเตเดเดฟเดฏเตเดณเตเดณ เด
เดจเตเดตเตเดทเดฃเดฎเดพเดฃเต เดเดคเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเดคเต
LsaWrapper
$Source = @'
using System;
using System.Collections.Generic;
using System.Text;
namespace MyLsaWrapper
{
using System.Runtime.InteropServices;
using System.Security;
using System.Management;
using System.Runtime.CompilerServices;
using System.ComponentModel;
using LSA_HANDLE = IntPtr;
[StructLayout(LayoutKind.Sequential)]
struct LSA_OBJECT_ATTRIBUTES
{
internal int Length;
internal IntPtr RootDirectory;
internal IntPtr ObjectName;
internal int Attributes;
internal IntPtr SecurityDescriptor;
internal IntPtr SecurityQualityOfService;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
struct LSA_UNICODE_STRING
{
internal ushort Length;
internal ushort MaximumLength;
[MarshalAs(UnmanagedType.LPWStr)]
internal string Buffer;
}
sealed class Win32Sec
{
[DllImport("advapi32", CharSet = CharSet.Unicode, SetLastError = true),
SuppressUnmanagedCodeSecurityAttribute]
internal static extern uint LsaOpenPolicy(
LSA_UNICODE_STRING[] SystemName,
ref LSA_OBJECT_ATTRIBUTES ObjectAttributes,
int AccessMask,
out IntPtr PolicyHandle
);
[DllImport("advapi32", CharSet = CharSet.Unicode, SetLastError = true),
SuppressUnmanagedCodeSecurityAttribute]
internal static extern uint LsaAddAccountRights(
LSA_HANDLE PolicyHandle,
IntPtr pSID,
LSA_UNICODE_STRING[] UserRights,
int CountOfRights
);
[DllImport("advapi32", CharSet = CharSet.Unicode, SetLastError = true),
SuppressUnmanagedCodeSecurityAttribute]
internal static extern int LsaLookupNames2(
LSA_HANDLE PolicyHandle,
uint Flags,
uint Count,
LSA_UNICODE_STRING[] Names,
ref IntPtr ReferencedDomains,
ref IntPtr Sids
);
[DllImport("advapi32")]
internal static extern int LsaNtStatusToWinError(int NTSTATUS);
[DllImport("advapi32")]
internal static extern int LsaClose(IntPtr PolicyHandle);
[DllImport("advapi32")]
internal static extern int LsaFreeMemory(IntPtr Buffer);
}
/// <summary>
/// This class is used to grant "Log on as a service", "Log on as a batchjob", "Log on localy" etc.
/// to a user.
/// </summary>
public sealed class LsaWrapper : IDisposable
{
[StructLayout(LayoutKind.Sequential)]
struct LSA_TRUST_INFORMATION
{
internal LSA_UNICODE_STRING Name;
internal IntPtr Sid;
}
[StructLayout(LayoutKind.Sequential)]
struct LSA_TRANSLATED_SID2
{
internal SidNameUse Use;
internal IntPtr Sid;
internal int DomainIndex;
uint Flags;
}
[StructLayout(LayoutKind.Sequential)]
struct LSA_REFERENCED_DOMAIN_LIST
{
internal uint Entries;
internal LSA_TRUST_INFORMATION Domains;
}
enum SidNameUse : int
{
User = 1,
Group = 2,
Domain = 3,
Alias = 4,
KnownGroup = 5,
DeletedAccount = 6,
Invalid = 7,
Unknown = 8,
Computer = 9
}
enum Access : int
{
POLICY_READ = 0x20006,
POLICY_ALL_ACCESS = 0x00F0FFF,
POLICY_EXECUTE = 0X20801,
POLICY_WRITE = 0X207F8
}
const uint STATUS_ACCESS_DENIED = 0xc0000022;
const uint STATUS_INSUFFICIENT_RESOURCES = 0xc000009a;
const uint STATUS_NO_MEMORY = 0xc0000017;
IntPtr lsaHandle;
public LsaWrapper()
: this(null)
{ }
// // local system if systemName is null
public LsaWrapper(string systemName)
{
LSA_OBJECT_ATTRIBUTES lsaAttr;
lsaAttr.RootDirectory = IntPtr.Zero;
lsaAttr.ObjectName = IntPtr.Zero;
lsaAttr.Attributes = 0;
lsaAttr.SecurityDescriptor = IntPtr.Zero;
lsaAttr.SecurityQualityOfService = IntPtr.Zero;
lsaAttr.Length = Marshal.SizeOf(typeof(LSA_OBJECT_ATTRIBUTES));
lsaHandle = IntPtr.Zero;
LSA_UNICODE_STRING[] system = null;
if (systemName != null)
{
system = new LSA_UNICODE_STRING[1];
system[0] = InitLsaString(systemName);
}
uint ret = Win32Sec.LsaOpenPolicy(system, ref lsaAttr,
(int)Access.POLICY_ALL_ACCESS, out lsaHandle);
if (ret == 0)
return;
if (ret == STATUS_ACCESS_DENIED)
{
throw new UnauthorizedAccessException();
}
if ((ret == STATUS_INSUFFICIENT_RESOURCES) || (ret == STATUS_NO_MEMORY))
{
throw new OutOfMemoryException();
}
throw new Win32Exception(Win32Sec.LsaNtStatusToWinError((int)ret));
}
public void AddPrivileges(string account, string privilege)
{
IntPtr pSid = GetSIDInformation(account);
LSA_UNICODE_STRING[] privileges = new LSA_UNICODE_STRING[1];
privileges[0] = InitLsaString(privilege);
uint ret = Win32Sec.LsaAddAccountRights(lsaHandle, pSid, privileges, 1);
if (ret == 0)
return;
if (ret == STATUS_ACCESS_DENIED)
{
throw new UnauthorizedAccessException();
}
if ((ret == STATUS_INSUFFICIENT_RESOURCES) || (ret == STATUS_NO_MEMORY))
{
throw new OutOfMemoryException();
}
throw new Win32Exception(Win32Sec.LsaNtStatusToWinError((int)ret));
}
public void Dispose()
{
if (lsaHandle != IntPtr.Zero)
{
Win32Sec.LsaClose(lsaHandle);
lsaHandle = IntPtr.Zero;
}
GC.SuppressFinalize(this);
}
~LsaWrapper()
{
Dispose();
}
// helper functions
IntPtr GetSIDInformation(string account)
{
LSA_UNICODE_STRING[] names = new LSA_UNICODE_STRING[1];
LSA_TRANSLATED_SID2 lts;
IntPtr tsids = IntPtr.Zero;
IntPtr tdom = IntPtr.Zero;
names[0] = InitLsaString(account);
lts.Sid = IntPtr.Zero;
//Console.WriteLine("String account: {0}", names[0].Length);
int ret = Win32Sec.LsaLookupNames2(lsaHandle, 0, 1, names, ref tdom, ref tsids);
if (ret != 0)
throw new Win32Exception(Win32Sec.LsaNtStatusToWinError(ret));
lts = (LSA_TRANSLATED_SID2)Marshal.PtrToStructure(tsids,
typeof(LSA_TRANSLATED_SID2));
Win32Sec.LsaFreeMemory(tsids);
Win32Sec.LsaFreeMemory(tdom);
return lts.Sid;
}
static LSA_UNICODE_STRING InitLsaString(string s)
{
// Unicode strings max. 32KB
if (s.Length > 0x7ffe)
throw new ArgumentException("String too long");
LSA_UNICODE_STRING lus = new LSA_UNICODE_STRING();
lus.Buffer = s;
lus.Length = (ushort)(s.Length * sizeof(char));
lus.MaximumLength = (ushort)(lus.Length + sizeof(char));
return lus;
}
}
public class LsaWrapperCaller
{
public static void AddPrivileges(string account, string privilege)
{
using (LsaWrapper lsaWrapper = new LsaWrapper())
{
lsaWrapper.AddPrivileges(account, privilege);
}
}
}
}
'@
Add-Type -TypeDefinition $Source
[MyLsaWrapper.LsaWrapperCaller]::AddPrivileges($Identity, "SeBatchLogonRight")
เดเดฐเต เดฌเดพเดเตเดเต เดเตเดฒเดฟเดฏเดพเดฏเดฟ เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเดพเตป เดเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเดคเต, เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเตเดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดดเตเดคเตเดจเตเดจเดคเดฟเดฒเตเดเตเดเต.
เดเดฐเต เดชเตเดฐเตเดเตเดธเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
เดเดฐเต เดชเตเดฐเตเดเตเดธเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเต.
Function Set-Proxy {
<#
.SYNOPSIS
ะฃััะฐะฝะพะฒะบะฐ ะฟะฐัะฐะผะตััะพะฒ ะฟัะพะบัะธ
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ะทะฐะดะฐะตั ะฟะฐัะฐะผะตััั ะฟัะพะบัะธ ะดะปั ะฟะพะปัะทะพะฒะฐัะตะปั
.EXAMPLE
#Set-Proxy a.cproxy.ru 8080
.PARAMETER Server
ะะดัะตั ะธะปะธ ะดะพะผะตะฝะฝะพะต ะธะผั ัะตัะฒะตัะฐ (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER Port
ะะพัั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
#>
[CmdletBinding()]
param (
[PARAMETER(Mandatory=$True)][String]$Server,
[PARAMETER(Mandatory=$True)][Int]$Port
)
If ((Test-NetConnection -ComputerName $Server -Port $Port).TcpTestSucceeded) {
Set-ItemProperty -Path 'HKCU:SoftwareMicrosoftWindowsCurrentVersionInternet Settings' -name ProxyServer -Value "$($Server):$($Port)"
Set-ItemProperty -Path 'HKCU:SoftwareMicrosoftWindowsCurrentVersionInternet Settings' -name ProxyEnable -Value 1
} Else {
Write-Error -Message "-- Invalid proxy server address or port: $($Server):$($Port)"
}
}
เดกเตเดธเตเดเตเดเตเดชเตเดชเดฟเตฝ เดซเดฏเดฒเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดคเดเดฏเตเดจเตเดจเต
เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดจเต เด เดชเตเดเตเดทเดฟเดเตเดเต เดกเตเดธเตโเดเตโเดเตเดชเตเดชเดฟเตฝ เดซเดฏเดฒเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเดคเต เดจเดฟเดฐเตเดงเดฟเดเตเดเดพเตป เดเตเดเตเดคเตฝ เดธเดฎเดฏเดฎเตเดเตเดคเตเดคเต. เดซเตเตพเดกเดฑเดฟเตฝ เด เดจเตเดฎเดคเดฟเดเตพ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเต *nix เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต เดชเตเดฒเต เดเดณเตเดชเตเดชเดฎเดฒเตเดฒ. เดเดจเตเดจเดพเตฝ เดเดตเดฟเดเตเดฏเตเด เดเดจเดฟเดเตเดเต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเตฝ เดเดพเตป เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเด เดเดคเตเดคเดฐเดเตเดเตพ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต:
Function Set-AccessRule {
<#
.SYNOPSIS
ะฃััะฐะฝะพะฒะบะฐ ะฟัะฐะฒ ะฝะฐ ะฟะฐะฟะบั
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ัััะฐะฝะฐะฒะปะธะฒะฐะตั ะทะฐะดะฐะฝะฝัะต ะฟัะฐะฒะฐ ะฝะฐ ะดะธัะตะบัะพัะธั
.EXAMPLE
#Set-AccessRule -Folder $env:USERPROFILEDesktop -UserName $env:USERNAME -Rules CreateFiles,AppendData -AccessControlType Deny
.PARAMETER Folder
ะะธัะตะบัะพัะธั, ะฝะฐะด ะบะพัะพัะพะน ะฟัะพะธะทะฒะพะดะธััั ะดะตะนััะฒะธะต (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER UserName
ะะผั ััะตัะฝะพะน ะทะฐะฟะธัะธ ะฟะพะปัะทะพะฒะฐัะตะปั, ะดะปั ะบะพะณะพ ะทะฐะดะฐัััั ะฟัะฐะฒะฐ ะดะพัััะฟะฐ (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER Rules
ะัะฐะฒะฐ ะดะพัััะฟะฐ ัะตัะตะท ะทะฐะฟัััั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER AccessControlType
ะะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั, ะบะพัะพััะน ะผะพะถะตั ะฟัะธะฝะธะผะฐัั ะพะดะฝะพ ะธะท ะดะฒัั
ะทะฝะฐัะตะฝะธะน: Allow ะธะปะธ Deny
#>
[CmdletBinding()]
param (
[PARAMETER(Mandatory=$True)][Path]$Folder,
[PARAMETER(Mandatory=$True)][String]$UserName,
[PARAMETER(Mandatory=$True)][String]$Rules,
[PARAMETER(Mandatory=$True)][String]$AccessControlType
)
#ััะธััะฒะฐะตะผ ัะตะบััะธะน ัะฟะธัะพะบ ACL ัะฐะฑะพัะตะณะพ ััะพะปะฐ
$acl = Get-Acl $Folder
#ะกะพะทะดะฐะตะผ ะฟะตัะตะผะตะฝะฝัั ั ะฝัะถะฝัะผะธ ะฟัะฐะฒะฐะผะธ
$fileSystemRights = [System.Security.AccessControl.FileSystemRights]"$Rules"
#Cะพะทะดะฐะตะผ ะฟะตัะตะผะตะฝะฝัั ั ัะบะฐะทะฐะฝะธะตะผ ะฟะพะปัะทะพะฒะฐัะตะปั, ะฟัะฐะฒ ะดะพัััะฟะฐ ะธ ัะธะฟะฐ ัะฐะทัะตัะตะฝะธั
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($UserName, $fileSystemRights, $AccessControlType)
#ะะตัะตะดะฐะตะผ ะฟะตัะตะผะตะฝะฝัั ะฒ ะบะปะฐัั FileSystemAccessRule ะดะปั ัะพะทะดะฐะฝะธั ะพะฑัะตะบัะฐ
$acl.SetAccessRule($AccessRule)
#ะัะธะผะตะฝัะตะผ ัะฐะทัะตัะตะฝะธั ะบ ะฟะฐะฟะบะต
$acl | Set-Acl $Folder
}
Set-AccessRule -Folder $env:USERPROFILEDesktop -UserName $env:USERNAME -Rules CreateFiles,AppendData,Delete -AccessControlType Deny
เดซเดฏเตฝเดธเดฟเดธเตเดฑเตเดฑเด เดฑเตเดฑเตเดฑเตเดธเดฟเดจเตเดฑเต เดเดฆเตเดฏเตเดเดฟเด เดตเดฟเดตเดฐเดฃเด
เดเดชเดฏเตเดเตเดคเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดชเดพเดจเตฝ เดเดทเตเดเดพเดจเตเดธเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต
เดเดคเต เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเดเตพเดเตเดเต เดชเดคเดฟเดตเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเตเดณเตเดณ เดเดฐเต เดเดทเตโเดเดพเดจเตเดธเตเดคเดฎเดพเดเตเดเดฟเดฏ เดกเดพเดทเตโเดฌเตเตผเดกเต เดจเตฝเดเตเดจเตเดจเดคเต เดฐเดธเดเดฐเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดพเตป เดเดฐเตเดคเดฟ. เดเดคเตเดคเดฐเด เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
เดชเดฟเตป เดเตเดฏเตเดค เดเดชเตเดฒเดฟเดเตเดเตเดทเตป
function Set-PinnedApplication
{
<#
.SYNOPSIS
ะฃะฟัะฐะฒะปะตะฝะธะต ััะปัะบะฐะผะธ ะฝะฐ ะฟะฐะฝะตะปะธ ัะฟัะฐะฒะปะตะฝะธั
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ะดะพะฑะฐะฒะปัะตั ะธะปะธ ัะดะฐะปัะตั ััะปัะบะธ ะฝะฐ ะฟะฐะฝะตะปะธ ัะฟัะฐะฒะปะตะฝะธั ะฟะพะปัะทะพะฒะฐัะตะปั
.EXAMPLE
#Set-PinnedApplication -Action UnpinfromTaskbar -FilePath "$env:ProgramFilesInternet Exploreriexplore.exe"
.EXAMPLE
#Set-PinnedApplication -Action PintoTaskbar -FilePath "${env:ProgramFiles(x86)}Mozilla Firefoxfirefox.exe"
.PARAMETER Action
ะะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั, ะบะพัะพััะน ะผะพะถะตั ะฟัะธะฝะธะผะฐัั ะพะดะฝะพ ะธะท ะดะฒัั
ะทะฝะฐัะตะฝะธะน: UnpinfromTaskbar ะธะปะธ PintoTaskbar
.PARAMETER FilePath
ะะผั ััะตัะฝะพะน ะทะฐะฟะธัะธ ะฟะพะปัะทะพะฒะฐัะตะปั, ะดะปั ะบะพะณะพ ะทะฐะดะฐัััั ะฟัะฐะฒะฐ ะดะพัััะฟะฐ (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$True)][String]$Action,
[Parameter(Mandatory=$True)][String]$FilePath
)
if(-not (test-path $FilePath)) {
throw "FilePath does not exist."
}
function InvokeVerb {
param([string]$FilePath,$verb)
$verb = $verb.Replace("&","")
$path = split-path $FilePath
$shell = new-object -com "Shell.Application"
$folder = $shell.Namespace($path)
$item = $folder.Parsename((split-path $FilePath -leaf))
$itemVerb = $item.Verbs() | ? {$_.Name.Replace("&","") -eq $verb}
if($itemVerb -eq $null){
throw "Verb $verb not found."
} else {
$itemVerb.DoIt()
}
}
function GetVerb {
param([int]$verbId)
try {
$t = [type]"CosmosKey.Util.MuiHelper"
} catch {
$def = [Text.StringBuilder]""
[void]$def.AppendLine('[DllImport("user32.dll")]')
[void]$def.AppendLine('public static extern int LoadString(IntPtr h,uint id, System.Text.StringBuilder sb,int maxBuffer);')
[void]$def.AppendLine('[DllImport("kernel32.dll")]')
[void]$def.AppendLine('public static extern IntPtr LoadLibrary(string s);')
Add-Type -MemberDefinition $def.ToString() -name MuiHelper -namespace CosmosKey.Util
}
if($global:CosmosKey_Utils_MuiHelper_Shell32 -eq $null){
$global:CosmosKey_Utils_MuiHelper_Shell32 = [CosmosKey.Util.MuiHelper]::LoadLibrary("shell32.dll")
}
$maxVerbLength=255
$verbBuilder = New-Object Text.StringBuilder "",$maxVerbLength
[void][CosmosKey.Util.MuiHelper]::LoadString($CosmosKey_Utils_MuiHelper_Shell32,$verbId,$verbBuilder,$maxVerbLength)
return $verbBuilder.ToString()
}
$verbs = @{
"PintoTaskbar"=5386
"UnpinfromTaskbar"=5387
}
if($verbs.$Action -eq $null){
Throw "Action $action not supported`nSupported actions are:`n`tPintoTaskbar`n`tUnpinfromTaskbar"
}
InvokeVerb -FilePath $FilePath -Verb $(GetVerb -VerbId $verbs.$action)
}
เดคเตเดฐเตเดฎเดพเดจเด
เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต, เดเดฐเต เดธเตเดฑเตเดฑเตเดทเดจเตเดฑเตเดฏเตเด เดธเตเดตเดจ เดธเดฎเดฏเด เดเตเดฑเดเตเดเต, เดฒเดเตเดทเตเดฏเด เดเตเดตเดฐเดฟเดเตเดเต. เดเดจเตเดจเต เดธเดเดฌเดจเตเดงเดฟเดเตเดเดฟเดเดคเตเดคเตเดณเด, เดเดฐเต เดฒเดฟเดจเดเตเดธเต เดเดชเดฏเตเดเตเดคเดพเดตเตเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดตเดฟเตปเดกเตเดธเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเด เดเดจเตเดจเดคเต เดเดฑเตเดฑเดตเตเด เดเดณเตเดชเตเดชเดฎเตเดณเตเดณ เดธเดพเดนเดธเดฟเดเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ, เดฎเดฑเดฟเดเตเดเต เด เดคเต เดเดฐเต เดตเดฟเดฆเตเดฏเดพเดญเตเดฏเดพเดธเดชเดฐเดฎเดพเดฏ เดเดจเตเดจเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดเดพเตป เดธเดเตเดเตเดเดฐเดฃ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเด. เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดค เดธเตเดซเตโเดฑเตเดฑเตโเดตเตเดฏเดฑเดฟเดจเดพเดฏเตเดณเตเดณ เดเดฐเต เดชเดฐเดฟเดถเตเดงเดจเดฏเตเด เดเดฐเต เดเดจเตเดฑเดฟเดตเตเดฑเดธเดฟเดจเตเดฑเต เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเดจเตเด เดธเดฎเดพเดฐเดเดญเดตเตเด เดเตเตผเดเตเดเดพเตป เดชเดฆเตเดงเดคเดฟเดฏเตเดฃเตเดเต.
เด เดจเตเดคเดฟเดฎ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดชเตเดฐเตเดเดฎเดฟเดเตเดเตเดจเตเดจเต
เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดพเดงเดฟเดเดพเดฐเดฟเดฏเดพเดฏเดฟ
Function New-User {
<#
.SYNOPSIS
ะกะพะทะดะฐะฝะธะต ะฝะพะฒะพะณะพ ะฟะพะปัะทะพะฒะฐัะตะปั
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ัะพะทะดะฐะตั ะฝะพะฒะพะณะพ ะฟะพะปัะทะพะฒะฐัะตะปั ะธ ะดะพะฑะฐะฒะปัะตั ะตะณะพ ะฒ ะณััะฟะฟั ะะพะปัะทะพะฒะฐัะตะปะธ
.EXAMPLE
#New-User "Student" "Student"
.PARAMETER Name
ะะผั ะฝะพะฒะพะณะพ ะฟะพะปัะทะพะฒะฐัะตะปั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER Password
ะะฐัะพะปั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
#>
[CmdletBinding()]
param (
[PARAMETER(Mandatory=$True)][String]$Name,
[PARAMETER(Mandatory=$True)][String]$Password
)
$Pwd = convertto-securestring $Password -asplaintext -force
$GroupSID = "S-1-5-32-545"
New-LocalUser -User $Name -AccountNeverExpires:$true -FullName $Name -Password $Pwd -PasswordNeverExpires:$true
Add-LocalGroupMember -SID $GroupSID -Member $Name
Write-Host "-- ะกะพะทะดะฐะฝ ะฟะพะปัะทะพะฒะฐัะตะปั $Name ั ะฟะฐัะพะปะตะผ $Password" -foregroundcolor Green
}
Function Remove-Users {
<#
.SYNOPSIS
ะฃะดะฐะปะตะฝะธะต ะฟะพะปัะทะพะฒะฐัะตะปะตะน
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ัะดะฐะปัะตั ะฟะพะปัะทะพะฒะฐัะตะปะตะน, ะบะพัะพััะต ัะตะนัะฐั ะฝะต ะฐะบัะธะฒะฝั ะธ ะฝะต ัะฒะปััััั ัะฟะตัะธะฐะปัะฝัะผะธ
ะฃะดะฐะปััััั ะฒ ัะพะผ ัะธัะปะต ัะฐะฑะพัะธะน ะบะฐัะฐะปะพะณ ะธ ัะตะตััั ะฟะพะปัะทะพะฒะฐัะตะปะตะน
.EXAMPLE
#Remove-Users
#>
[CmdletBinding()]
$UsersProfiles = Get-WMIObject -class Win32_UserProfile -ComputerName $env:COMPUTERNAME | Where {!($_.Loaded) -and !($_.Special)}
foreach($Usr in $UsersProfiles) {
$UsrName = $Usr.LocalPath.Split("")[2]
Write-Host "-- ะฃะดะฐะปะตะฝะธะต ะฟะพะปัะทะพะฒะฐัะตะปั $UsrName ..." -foregroundcolor Green
Remove-LocalUser -Name $UsrName
Remove-WmiObject -Path $Usr.__PATH
Write-Host "-- ะะพะปัะทะพะฒะฐัะตะปั $UsrName ัะดะฐะปะตะฝ" -foregroundcolor Green
}
}
Function Set-AutoLogon {
<#
.SYNOPSIS
ะะบะปััะตะฝะธะต ะฐะฒัะพะฒั
ะพะดะฐ ะดะปั ะฟะพะปัะทะพะฒะฐัะตะปั
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ะฒะบะปััะฐะตั ะฐะฒัะพะฒั
ะพะด ะดะปั ัะบะฐะทะฐะฝะฝะพะณะพ ะฟะพะปัะทะพะฒะฐัะตะปั
.EXAMPLE
#Set-AutoLogon "Student" "Student"
.PARAMETER Name
ะะผั ะฟะพะปัะทะพะฒะฐัะตะปั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER Password
ะะฐัะพะปั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
#>
[CmdletBinding()]
param (
[PARAMETER(Mandatory=$True)][String]$Name,
[PARAMETER(Mandatory=$True)][String]$Password
)
$PathToWinlogon = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon"
New-ItemProperty -Path $PathToWinlogon -Name AutoAdminLogon -Value 1 -PropertyType "String"
New-ItemProperty -Path $PathToWinlogon -Name DefaultUserName -Value $Name -PropertyType "String"
New-ItemProperty -Path $PathToWinlogon -Name DefaultPassword -Value $Password -PropertyType "String"
}
$Source = @'
using System;
using System.Collections.Generic;
using System.Text;
namespace MyLsaWrapper
{
using System.Runtime.InteropServices;
using System.Security;
using System.Management;
using System.Runtime.CompilerServices;
using System.ComponentModel;
using LSA_HANDLE = IntPtr;
[StructLayout(LayoutKind.Sequential)]
struct LSA_OBJECT_ATTRIBUTES
{
internal int Length;
internal IntPtr RootDirectory;
internal IntPtr ObjectName;
internal int Attributes;
internal IntPtr SecurityDescriptor;
internal IntPtr SecurityQualityOfService;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
struct LSA_UNICODE_STRING
{
internal ushort Length;
internal ushort MaximumLength;
[MarshalAs(UnmanagedType.LPWStr)]
internal string Buffer;
}
sealed class Win32Sec
{
[DllImport("advapi32", CharSet = CharSet.Unicode, SetLastError = true),
SuppressUnmanagedCodeSecurityAttribute]
internal static extern uint LsaOpenPolicy(
LSA_UNICODE_STRING[] SystemName,
ref LSA_OBJECT_ATTRIBUTES ObjectAttributes,
int AccessMask,
out IntPtr PolicyHandle
);
[DllImport("advapi32", CharSet = CharSet.Unicode, SetLastError = true),
SuppressUnmanagedCodeSecurityAttribute]
internal static extern uint LsaAddAccountRights(
LSA_HANDLE PolicyHandle,
IntPtr pSID,
LSA_UNICODE_STRING[] UserRights,
int CountOfRights
);
[DllImport("advapi32", CharSet = CharSet.Unicode, SetLastError = true),
SuppressUnmanagedCodeSecurityAttribute]
internal static extern int LsaLookupNames2(
LSA_HANDLE PolicyHandle,
uint Flags,
uint Count,
LSA_UNICODE_STRING[] Names,
ref IntPtr ReferencedDomains,
ref IntPtr Sids
);
[DllImport("advapi32")]
internal static extern int LsaNtStatusToWinError(int NTSTATUS);
[DllImport("advapi32")]
internal static extern int LsaClose(IntPtr PolicyHandle);
[DllImport("advapi32")]
internal static extern int LsaFreeMemory(IntPtr Buffer);
}
/// <summary>
/// This class is used to grant "Log on as a service", "Log on as a batchjob", "Log on localy" etc.
/// to a user.
/// </summary>
public sealed class LsaWrapper : IDisposable
{
[StructLayout(LayoutKind.Sequential)]
struct LSA_TRUST_INFORMATION
{
internal LSA_UNICODE_STRING Name;
internal IntPtr Sid;
}
[StructLayout(LayoutKind.Sequential)]
struct LSA_TRANSLATED_SID2
{
internal SidNameUse Use;
internal IntPtr Sid;
internal int DomainIndex;
uint Flags;
}
[StructLayout(LayoutKind.Sequential)]
struct LSA_REFERENCED_DOMAIN_LIST
{
internal uint Entries;
internal LSA_TRUST_INFORMATION Domains;
}
enum SidNameUse : int
{
User = 1,
Group = 2,
Domain = 3,
Alias = 4,
KnownGroup = 5,
DeletedAccount = 6,
Invalid = 7,
Unknown = 8,
Computer = 9
}
enum Access : int
{
POLICY_READ = 0x20006,
POLICY_ALL_ACCESS = 0x00F0FFF,
POLICY_EXECUTE = 0X20801,
POLICY_WRITE = 0X207F8
}
const uint STATUS_ACCESS_DENIED = 0xc0000022;
const uint STATUS_INSUFFICIENT_RESOURCES = 0xc000009a;
const uint STATUS_NO_MEMORY = 0xc0000017;
IntPtr lsaHandle;
public LsaWrapper()
: this(null)
{ }
// // local system if systemName is null
public LsaWrapper(string systemName)
{
LSA_OBJECT_ATTRIBUTES lsaAttr;
lsaAttr.RootDirectory = IntPtr.Zero;
lsaAttr.ObjectName = IntPtr.Zero;
lsaAttr.Attributes = 0;
lsaAttr.SecurityDescriptor = IntPtr.Zero;
lsaAttr.SecurityQualityOfService = IntPtr.Zero;
lsaAttr.Length = Marshal.SizeOf(typeof(LSA_OBJECT_ATTRIBUTES));
lsaHandle = IntPtr.Zero;
LSA_UNICODE_STRING[] system = null;
if (systemName != null)
{
system = new LSA_UNICODE_STRING[1];
system[0] = InitLsaString(systemName);
}
uint ret = Win32Sec.LsaOpenPolicy(system, ref lsaAttr,
(int)Access.POLICY_ALL_ACCESS, out lsaHandle);
if (ret == 0)
return;
if (ret == STATUS_ACCESS_DENIED)
{
throw new UnauthorizedAccessException();
}
if ((ret == STATUS_INSUFFICIENT_RESOURCES) || (ret == STATUS_NO_MEMORY))
{
throw new OutOfMemoryException();
}
throw new Win32Exception(Win32Sec.LsaNtStatusToWinError((int)ret));
}
public void AddPrivileges(string account, string privilege)
{
IntPtr pSid = GetSIDInformation(account);
LSA_UNICODE_STRING[] privileges = new LSA_UNICODE_STRING[1];
privileges[0] = InitLsaString(privilege);
uint ret = Win32Sec.LsaAddAccountRights(lsaHandle, pSid, privileges, 1);
if (ret == 0)
return;
if (ret == STATUS_ACCESS_DENIED)
{
throw new UnauthorizedAccessException();
}
if ((ret == STATUS_INSUFFICIENT_RESOURCES) || (ret == STATUS_NO_MEMORY))
{
throw new OutOfMemoryException();
}
throw new Win32Exception(Win32Sec.LsaNtStatusToWinError((int)ret));
}
public void Dispose()
{
if (lsaHandle != IntPtr.Zero)
{
Win32Sec.LsaClose(lsaHandle);
lsaHandle = IntPtr.Zero;
}
GC.SuppressFinalize(this);
}
~LsaWrapper()
{
Dispose();
}
// helper functions
IntPtr GetSIDInformation(string account)
{
LSA_UNICODE_STRING[] names = new LSA_UNICODE_STRING[1];
LSA_TRANSLATED_SID2 lts;
IntPtr tsids = IntPtr.Zero;
IntPtr tdom = IntPtr.Zero;
names[0] = InitLsaString(account);
lts.Sid = IntPtr.Zero;
//Console.WriteLine("String account: {0}", names[0].Length);
int ret = Win32Sec.LsaLookupNames2(lsaHandle, 0, 1, names, ref tdom, ref tsids);
if (ret != 0)
throw new Win32Exception(Win32Sec.LsaNtStatusToWinError(ret));
lts = (LSA_TRANSLATED_SID2)Marshal.PtrToStructure(tsids,
typeof(LSA_TRANSLATED_SID2));
Win32Sec.LsaFreeMemory(tsids);
Win32Sec.LsaFreeMemory(tdom);
return lts.Sid;
}
static LSA_UNICODE_STRING InitLsaString(string s)
{
// Unicode strings max. 32KB
if (s.Length > 0x7ffe)
throw new ArgumentException("String too long");
LSA_UNICODE_STRING lus = new LSA_UNICODE_STRING();
lus.Buffer = s;
lus.Length = (ushort)(s.Length * sizeof(char));
lus.MaximumLength = (ushort)(lus.Length + sizeof(char));
return lus;
}
}
public class LsaWrapperCaller
{
public static void AddPrivileges(string account, string privilege)
{
using (LsaWrapper lsaWrapper = new LsaWrapper())
{
lsaWrapper.AddPrivileges(account, privilege);
}
}
}
}
'@
Add-Type -TypeDefinition $Source | Out-Null
# -------------------------
# ะะตัะตัะพะทะดะฐะฝะธะต ะฟะพะปัะทะพะฒะฐัะตะปั
# -------------------------
$UserName = "Student"
$Password = "Student"
Remove-Users | Out-Null
New-User $UserName $Password | Out-Null
Set-AutoLogon $UserName $Password | Out-Null
[MyLsaWrapper.LsaWrapperCaller]::AddPrivileges($UserName, "SeBatchLogonRight") | Out-Null
write-host "-- ัะฐะทัะตัะตะฝ ะฒั
ะพะด ะฒ ะบะฐัะตััะฒะต ะฟะฐะบะตัะฝะพะณะพ ะทะฐะดะฐะฝะธั ะดะปั ะฟะพะปัะทะพะฒะฐัะตะปั $UserName" -foregroundcolor Green
schtasks /create /tn LogonUserSettings /tr "pwsh C:ScriptsSetupUser.ps1" /sc onlogon /ru $env:USERDOMAIN$UserName /rp $Password /f
เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเตเดดเดฟเตฝ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเต
Function Set-Proxy {
<#
.SYNOPSIS
ะฃััะฐะฝะพะฒะบะฐ ะฟะฐัะฐะผะตััะพะฒ ะฟัะพะบัะธ
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ะทะฐะดะฐะตั ะฟะฐัะฐะผะตััั ะฟัะพะบัะธ ะดะปั ะฟะพะปัะทะพะฒะฐัะตะปั
.EXAMPLE
#Set-Proxy a.cproxy.ru 8080
.PARAMETER Server
ะะดัะตั ะธะปะธ ะดะพะผะตะฝะฝะพะต ะธะผั ัะตัะฒะตัะฐ (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER Port
ะะพัั (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
#>
[CmdletBinding()]
param (
[PARAMETER(Mandatory=$True)][String]$Server,
[PARAMETER(Mandatory=$True)][Int]$Port
)
If ((Test-NetConnection -ComputerName $Server -Port $Port).TcpTestSucceeded) {
Set-ItemProperty -Path 'HKCU:SoftwareMicrosoftWindowsCurrentVersionInternet Settings' -name ProxyServer -Value "$($Server):$($Port)"
Set-ItemProperty -Path 'HKCU:SoftwareMicrosoftWindowsCurrentVersionInternet Settings' -name ProxyEnable -Value 1
} Else {
Write-Error -Message "-- Invalid proxy server address or port: $($Server):$($Port)"
}
}
Function Set-AccessRule {
<#
.SYNOPSIS
ะฃััะฐะฝะพะฒะบะฐ ะฟัะฐะฒะบ ะฝะฐ ะฟะฐะฟะบั
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ัััะฐะฝะฐะฒะปะธะฒะฐะตั ะทะฐะดะฐะฝะฝัะต ะฟัะฐะฒะฐ ะฝะฐ ะดะธััะตะบัะพัะธั
.EXAMPLE
#Set-AccessRule -Folder $env:USERPROFILEDesktop -UserName $env:USERNAME -Rules CreateFiles,AppendData -AccessControlType Deny
.PARAMETER Folder
ะะธััะตะบัะพัะธั, ะฝะฐะด ะบะพัะพัะพะน ะฟัะพะธะทะฒะพะดะธััั ะดะตะนััะฒะธะต (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER UserName
ะะผั ััะตัะฝะพะน ะทะฐะฟะธัะธ ะฟะพะปัะทะพะฒะฐัะตะปั, ะดะปั ะบะพะณะพ ะทะฐะดะฐัััั ะฟัะฐะฒะฐ ะดะพัััะฟะฐ (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER Rules
ะัะฐะฒะฐ ะดะพัััะฟะฐ ัะตัะตะท ะทะฐะฟัััั(ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
.PARAMETER AccessControlType
ะะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั, ะบะพัะพััะน ะผะพะถะตั ะฟัะธะฝะผะฐัั ะพะดะฝะพ ะธะท ะดะฒัั
ะทะฝะฐัะตะฝะธะน: Allow ะธะปะธ Deny
#>
[CmdletBinding()]
param (
[PARAMETER(Mandatory=$True)][String]$Folder,
[PARAMETER(Mandatory=$True)][String]$UserName,
[PARAMETER(Mandatory=$True)][String]$Rules,
[PARAMETER(Mandatory=$True)][String]$AccessControlType
)
#ััะธััะฒะฐะตะผ ัะตะบััะธะน ัะฟะธัะพะบ ACL ัะฐะฑะพัะตะณะพ ััะพะปะฐ
$acl = Get-Acl $Folder
#ะกะพะทะดะฐะตะผ ะฟะตัะตะผะตะฝะฝั ั ะฝัะถะฝัะผะธ ะฟัะฐะฒะฐะผะธ
$fileSystemRights = [System.Security.AccessControl.FileSystemRights]"$Rules"
#Cะพะทะดะฐะตะผ ะฟะตัะตะผะตะฝะฝัั ั ัะบะฐะทะฐะฝะธะตะผ ะฟะพะปัะทะพะฒะฐัะตะปั, ะฟัะฐะฒ ะดะพัััะฟะฐ ะธ ัะธะฟะฐ ัะฐะทัะตัะตะฝะธั
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($UserName, $fileSystemRights, $AccessControlType)
#ะะตัะตะดะฐะตะผ ะฟะตัะตะผะตะฝะฝัั ะฒ ะบะปะฐัั FileSystemAccessRule ะดะปั ัะพะทะดะฐะฝะธั ะพะฑัะตะบัะฐ
$acl.SetAccessRule($AccessRule)
#ะัะธะผะตะฝัะตะผ ัะฐะทัะตัะตะฝะธั ะบ ะฟะฐะฟะบะต
$acl | Set-Acl $Folder
}
function Set-PinnedApplication
{
<#
.SYNOPSIS
ะฃะฟัะฐะฒะปะตะฝะธะต ััะปัะบะฐะผะธ ะฝะฐ ะฟะฐะฝะตะปะธ ัะฟัะฐะฒะปะตะฝะธั
.DESCRIPTION
ะะฐะฝะฝะฐั ััะฝะบัะธั ะดะพะฑะฐะฒะปัะตั ะธะปะธ ัะดะฐะปัะตั ััะปัะบะธ ะฝะฐ ะฟะฐะฝะตะปะธ ัะฟัะฐะฒะปะตะฝะธั ะฟะพะปัะทะพะฒะฐัะตะปั
.EXAMPLE
#Set-PinnedApplication -Action UnpinfromTaskbar -FilePath "$env:ProgramFilesInternet Exploreriexplore.exe"
.EXAMPLE
#Set-PinnedApplication -Action PintoTaskbar -FilePath "${env:ProgramFiles(x86)}Mozilla Firefoxfirefox.exe"
.PARAMETER Action
ะะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั, ะบะพัะพััะน ะผะพะถะตั ะฟัะธะฝะธะผะฐัั ะพะดะฝะพ ะธะท ะดะฒัั
ะทะฝะฐัะตะฝะธะน: UnpinfromTaskbar ะธะปะธ PintoTaskbar
.PARAMETER FilePath
ะะผั ััะตัะฝะพะน ะทะฐะฟะธัะธ ะฟะพะปัะทะพะฒะฐัะตะปั, ะดะปั ะบะพะณะพ ะทะฐะดะฐัััั ะฟัะฐะฒะฐ ะดะพัััะฟะฐ (ะพะฑัะทะฐัะตะปัะฝัะน ะฟะฐัะฐะผะตัั)
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$True)][String]$Action,
[Parameter(Mandatory=$True)][String]$FilePath
)
if(-not (test-path $FilePath)) {
throw "FilePath does not exist."
}
function InvokeVerb {
param([string]$FilePath,$verb)
$verb = $verb.Replace("&","")
$path = split-path $FilePath
$shell = new-object -com "Shell.Application"
$folder = $shell.Namespace($path)
$item = $folder.Parsename((split-path $FilePath -leaf))
$itemVerb = $item.Verbs() | ? {$_.Name.Replace("&","") -eq $verb}
if($itemVerb -eq $null){
throw "Verb $verb not found."
} else {
$itemVerb.DoIt()
}
}
function GetVerb {
param([int]$verbId)
try {
$t = [type]"CosmosKey.Util.MuiHelper"
} catch {
$def = [Text.StringBuilder]""
[void]$def.AppendLine('[DllImport("user32.dll")]')
[void]$def.AppendLine('public static extern int LoadString(IntPtr h,uint id, System.Text.StringBuilder sb,int maxBuffer);')
[void]$def.AppendLine('[DllImport("kernel32.dll")]')
[void]$def.AppendLine('public static extern IntPtr LoadLibrary(string s);')
Add-Type -MemberDefinition $def.ToString() -name MuiHelper -namespace CosmosKey.Util
}
if($global:CosmosKey_Utils_MuiHelper_Shell32 -eq $null){
$global:CosmosKey_Utils_MuiHelper_Shell32 = [CosmosKey.Util.MuiHelper]::LoadLibrary("shell32.dll")
}
$maxVerbLength=255
$verbBuilder = New-Object Text.StringBuilder "",$maxVerbLength
[void][CosmosKey.Util.MuiHelper]::LoadString($CosmosKey_Utils_MuiHelper_Shell32,$verbId,$verbBuilder,$maxVerbLength)
return $verbBuilder.ToString()
}
$verbs = @{
"PintoTaskbar"=5386
"UnpinfromTaskbar"=5387
}
if($verbs.$Action -eq $null){
Throw "Action $action not supported`nSupported actions are:`n`tPintoTaskbar`n`tUnpinfromTaskbar"
}
InvokeVerb -FilePath $FilePath -Verb $(GetVerb -VerbId $verbs.$action)
}
Set-Proxy cproxy.udsu.ru 8080
Set-AccessRule -Folder $env:USERPROFILEDesktop -UserName $env:USERNAME -Rules "CreateFiles,AppendData,Delete" -AccessControlType Deny
Set-PinnedApplication -Action UnpinfromTaskbar -FilePath "$env:ProgramFilesInternet Exploreriexplore.exe"
Set-PinnedApplication -Action PintoTaskbar -FilePath "${env:ProgramFiles(x86)}Mozilla Firefoxfirefox.exe"
Set-PinnedApplication -Action PintoTaskbar -FilePath "$env:ProgramDataMicrosoftWindowsStart MenuProgramsMicrosoft Office 2013Excel 2013.lnk"
Set-PinnedApplication -Action PintoTaskbar -FilePath "$env:ProgramDataMicrosoftWindowsStart MenuProgramsMicrosoft Office 2013Word 2013.lnk"
Set-PinnedApplication -Action PintoTaskbar -FilePath "$env:ProgramDataMicrosoftWindowsStart MenuProgramsMicrosoft Office 2013PowerPoint 2013.lnk"
Set-PinnedApplication -Action PintoTaskbar -FilePath "$env:ProgramDataMicrosoftWindowsStart MenuProgramsะะกะะะะะะะะะก-3D V16ะะะะะะก-3D V16.lnk"
# ะฃะดะฐะปะตะฝะธะต ะทะฐะดะฐัะธ, ะฟะพัะปะต ะตะต ะฒัะฟะพะปะฝะตะฝะธั
Unregister-ScheduledTask -TaskName UdSUSettingStudent -Confirm:$false
เด เดตเดฒเดเดฌเด: www.habr.com