เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ 'เจคเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจฒเฉˆเจฌ เจฎเฉ‡เจจเจŸเฉ‡เจจเฉˆเจ‚เจธ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ

เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ 'เจคเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจฒเฉˆเจฌ เจฎเฉ‡เจจเจŸเฉ‡เจจเฉˆเจ‚เจธ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ

เจ•เจˆ เจธเจพเจฒเจพเจ‚ เจคเฉ‹เจ‚, เจฎเฉˆเจ‚ เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฟเจŸเฉ€ เจตเจฟเฉฑเจš เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจพเจซเจŸ เจ“เจเจธ เจšเจฒเจพเจ‰เจฃ เจตเจพเจฒเฉ‡ 10 เจตเจฐเจ•เจธเจŸเฉ‡เจธเจผเจจเจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚เฅค Windows 8.1. เจธเจนเจพเจ‡เจคเจพ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ– เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฟเจฆเจฟเจ…เจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจ†เจฎ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค

เจนเจฐเฉ‡เจ• เจธเจŸเฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš 2 เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจนเจจ: เจชเฉเจฐเจธเจผเจพเจธเจ• เจ…เจคเฉ‡ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€เฅค เจชเฉเจฐเจธเจผเจพเจธเจ• เจฆเจพ เจชเฉ‚เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจนเฉˆ; เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€ เจ•เฉ‹เจฒ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจชเจฐเฉ‡เจธเจผเจพเจจเฉ€ เจจเจพ เจ•เจฐเจจ เจฒเจˆ, เจ‡เจธ เจ–เจพเจคเฉ‡ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจฎเจฟเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจจเจตเฉ‡เจ‚ เจธเจฟเจฐเจฟเจ“เจ‚ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉเจ เจธเจฐเฉ€เจฐเจ• เจ…เฉฐเจฆเฉ‹เจฒเจจ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ เจนเจฐเฉ‡เจ• เจธเจŸเฉ‡เจธเจผเจจ 'เจคเฉ‡ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจ‡เจธ เจธเจพเจฒ เจฎเฉˆเจ‚ ActiveDirectory เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ PowerShell เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจ…เฉฐเจฆเฉ‹เจฒเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจชเฉ‹เจธเจŸ เจตเจฟเฉฑเจš เจ•เฉเจ เจชเจ•เจตเจพเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจนเฉˆ เจœเฉ‹ เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฐเจŸเจฐเจจเฉˆเฉฑเจŸ 'เจคเฉ‡ เจฎเจฟเจฒเฉ€เจ†เจ‚ เจนเจจเฅค

เจธเจฟเจ–เจฒเจพเจˆ

เจฎเฉˆเจจเฉ‚เฉฐ เจคเฉเจฐเฉฐเจค เจ‡เจธ เจคเฉฑเจฅ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเจฟเจ† เจ•เจฟ PS 4 เจธเจŸเฉ‡เจธเจผเจจเจพเจ‚ 'เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจ‡เฉฐเจŸเจฐเจจเฉˆเจŸ เจฆเฉ€เจ†เจ‚ เจ•เฉเจ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจจเฉ‡ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ. เจ‡เจธ เจฒเจˆ, เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉเจ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ:

  1. เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจฒเจˆ Windows เจชเฉเจฐเจฌเฉฐเจงเจจ เจขเจพเจ‚เจšเจพ 5.1
  2. เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹ เจชเจพเจตเจฐเจธเจผเฉ‡เจฒ

เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚

  1. เจ‡เฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ–เจพเจคเจพ เจฎเจฟเจŸเจพเจ‰เจฃเจพ / เจฌเจฃเจพเจ‰เจฃเจพ
  2. เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฒเจˆ เจ†เจŸเฉ‹ เจฒเฉŒเจ—เจ‡เจจ
  3. เจœเจฆเฉ‹เจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจ“

เจ‡เฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ–เจพเจคเจพ เจฎเจฟเจŸเจพเจ‰เจฃเจพ / เจฌเจฃเจพเจ‰เจฃเจพ

เจฎเฉˆเจ‚ เจฐเจšเจจเจพ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เฉ€เจคเฉ€เฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจคเฉเจนเจพเจจเฉ‚เฉฐ 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"
}

เจœเจฆเฉ‹เจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจ“

เจ‡เจน เจชเจคเจพ เจšเจฒเจฟเจ† เจ•เจฟ เจจเจตเฉ‡เจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจฒเฉŒเจ—เจ‡เจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ (เจœเฉ‹ เจ•เจฟ เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจ•เฉเจ เจนเฉˆเจฐเจพเจจเฉ€เจœเจจเจ• เจธเฉ€). เจ‡เจธ เจฒเจˆ, เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจธเฉ€ เจœเฉ‹ เจชเจนเจฟเจฒเฉ‡ เจฒเฉŒเจ—เจ‡เจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เฉเจ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ:

  1. เจ‡เฉฑเจ• เจชเฉเจฐเฉŒเจ•เจธเฉ€ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ
  2. เจกเฉˆเจธเจ•เจŸเจพเจช เจ‰เฉฑเจคเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ
  3. เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจชเฉˆเจจเจฒ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐเจจเจพ

เจฎเฉˆเจ‚ เจ•เจˆ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€, เจชเจฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ‡เฉฑเจ• เจจเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจ•เฉฐเจฎ เจ•เฉ€เจคเจพ: เจ‡เฉฑเจ• เจ•เจพเจฐเจœ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเฉ‹. เจชเจฐ เจฎเฉˆเจ‚ PS เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เฉ‹เจˆ เจ•เฉฐเจฎ เจธเจผเฉเจฐเฉ‚ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฟเจ†เฅค เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจฒเฉฐเจฎเจพ เจฐเจธเจคเจพ เจฒเจฟเจ†:

schtasks /create /tn LogonUserSettings /tr "pwsh C:ScriptsSettings.ps1" /sc onlogon /ru $env:USERDOMAIN$UserName /rp $Password /f

เจชเจฐ เจ‡เจน เจ•เจพเจซเจผเฉ€ เจจเจนเฉ€เจ‚ เจธเฉ€ - Windows เจฌเฉˆเจš เจŸเจพเจธเจ• (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)"
    }
}

เจกเฉˆเจธเจ•เจŸเจพเจช เจ‰เฉฑเจคเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ

เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจจเจพเจฒเฉ‹เจ‚ เจกเฉˆเจธเจ•เจŸเจพเจช 'เจคเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจฌเจฃเจพเจ‰เจฃ 'เจคเฉ‡ เจชเจพเจฌเฉฐเจฆเฉ€ เจฒเจ—เจพเจ‰เจฃ เจตเจฟเฉฑเจš เจœเจผเจฟเจ†เจฆเจพ เจธเจฎเจพเจ‚ เจฒเฉฑเจ—เจพเฅค เจซเฉ‹เจฒเจกเจฐ 'เจคเฉ‡ เจ…เจจเฉเจฎเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ *เจจเจฟเจ•เจธ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจœเจฟเฉฐเจจเจพ เจธเฉŒเจ–เจพ เจจเจนเฉ€เจ‚ เจธเฉ€เฅค เจชเจฐ เจ‡เฉฑเจฅเฉ‡ เจตเฉ€ เจœเจตเจพเจฌ เจธเจจ เจœเฉ‹ เจฎเฉˆเจ‚ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‡เจ†:

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)
}

เจธเจฟเฉฑเจŸเจพ

เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจนเฉ€เจ†เจ‚ เจนเจจ, เจนเจฐเฉ‡เจ• เจธเจŸเฉ‡เจธเจผเจจ เจฒเจˆ เจธเฉ‡เจตเจพ เจธเจฎเจพเจ‚ เจ˜เจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจŸเฉ€เจšเจพ เจชเฉเจฐเจพเจชเจค เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆเฅค เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ, เจ‡เฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ Linux, เจธเฉˆเจŸเจฟเฉฐเจ— Windows เจ‡เจน เจ‡เฉฑเจ• เจšเฉเจฃเฉŒเจคเฉ€เจชเฉ‚เจฐเจจ เจธเจพเจนเจธ เจธเจพเจฌเจค เจนเฉ‹เจ‡เจ†, เจชเจฐ เจ‡เจน เจธเจฟเฉฑเจ–เจฟเจ†เจฆเจพเจ‡เจ• เจธเฉ€เฅค เจฎเฉˆเจ‚ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเจฟเจ•เจธเจค เจ•เจฐเจพเจ‚เจ—เจพเฅค เจฎเฉˆเจ‚ เจธเจฅเจพเจชเจค เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฒเจˆ เจ‡เฉฑเจ• เจœเจพเจ‚เจš เจœเฉ‹เฉœเจจ, เจ‡เฉฑเจ• เจเจ‚เจŸเฉ€เจตเจพเจ‡เจฐเจธ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพ เจฐเจฟเจนเจพ เจนเจพเจ‚เฅค

เจ…เฉฐเจคเจฟเจฎ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจœเจพเจฐเฉ€ เจนเจจ

เจชเฉเจฐเจธเจผเจพเจธเจ• เจตเจœเฉ‹เจ‚ เจšเจฒเจพเจ“

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

DDoS เจธเฉเจฐเฉฑเจ–เจฟเจ†, VPS VDS เจธเจฐเจตเจฐเจพเจ‚ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจพเจˆเจŸเจพเจ‚ เจฒเจˆ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจ–เจฐเฉ€เจฆเฉ‹ ๐Ÿ”ฅ DDoS เจธเฉเจฐเฉฑเจ–เจฟเจ†, VPS VDS เจธเจฐเจตเจฐเจพเจ‚ เจจเจพเจฒ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจ–เจฐเฉ€เจฆเฉ‹ | ProHoster