Powershell เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเตผ เด•เตเดฒเดพเดธเต เดฎเต†เดฏเดฟเดจเตเดฑเดจเตปเดธเต เด“เดŸเตเดŸเต‹เดฎเต‡เดทเตป

Powershell เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเตผ เด•เตเดฒเดพเดธเต เดฎเต†เดฏเดฟเดจเตเดฑเดจเตปเดธเต เด“เดŸเตเดŸเต‹เดฎเต‡เดทเตป

เด•เตเดฑเดšเตเดšเต เดตเตผเดทเด™เตเด™เดณเดพเดฏเดฟ เดžเดพเตป เดฏเต‚เดฃเดฟเดตเต‡เดดเตเดธเดฟเดฑเตเดฑเดฟเดฏเดฟเตฝ Microsoft Windows 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)"
    }
}

เดกเต†เดธเตเด•เตเดŸเต‹เดชเตเดชเดฟเตฝ เดซเดฏเดฒเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเดŸเดฏเตเดจเตเดจเต

เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเต† เด…เดชเต‡เด•เตเดทเดฟเดšเตเดšเต เดกเต†เดธเตโ€Œเด•เตโ€ŒเดŸเต‹เดชเตเดชเดฟเตฝ เดซเดฏเดฒเตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเดฐเต‹เดงเดฟเด•เตเด•เดพเตป เด•เต‚เดŸเตเดคเตฝ เดธเดฎเดฏเดฎเต†เดŸเตเดคเตเดคเต. เดซเต‹เตพเดกเดฑเดฟเตฝ เด…เดจเตเดฎเดคเดฟเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต *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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•