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

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

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

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

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

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

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

  1. เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เจฐเจจ เจฒเจˆ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฎเฉˆเจจเฉ‡เจœเจฎเฉˆเจ‚เจŸ เจซเจฐเฉ‡เจฎเจตเจฐเจ• 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

เจชเจฐ เจ‡เจน เจ•เจพเจซเจผเฉ€ เจจเจนเฉ€เจ‚ เจธเฉ€ - เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจจเฉ‡ เจฌเฉˆเจš เจœเฉŒเจฌ (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)
}

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

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

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

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

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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹