Стандартный ответ: не позволяйте своим пользователям установить несанкционированное программное обеспечение на своих компьютерах :)
Но другой способ обработать это состоит в том, чтобы быть более общим в Ваших методах управления. Мы используем прокси-сервер как Солдат, который может также отрегулировать пропускную способность. Затем Вы вызываете весь доступ в Интернет через прокси и блокируете все выходящее в Вашем брандмауэре. Большинство программ будет работать просто великолепно с прокси, и можно создать исключения на приложении основанием приложения, но материал P2P, вероятно, просто умрет в брандмауэре. Если это, действительно оказывается, работает через прокси, можно отрегулировать его там легче.
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
(от приемов безопасности Командной строки)
function Test-Administrator
{
$user = [Security.Principal.WindowsIdentity]::GetCurrent();
(New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
Выполните вышеупомянутую функцию. ЕСЛИ результат Правда, у пользователя есть административные привилегии.
В Powershell 4.0 вы можете использовать requires в верхней части вашего сценария:
#Requires -RunAsAdministrator
Outputs:
Сценарий 'MyScript.ps1' не может быть запущен, так как он содержит оператор "#requesres" для на посту администратора. Текущий сеанс Windows PowerShell не запущен от имени администратора. Запустить Windows PowerShell с помощью опции Run as Administrator, а затем попробуйте запустить скрипт еще раз.
മുകളിലുള്ള ഉത്തരങ്ങളുടെ സംയോജനമായി, നിങ്ങളുടെ സ്ക്രിപ്റ്റിന്റെ തുടക്കത്തിൽ ഇനിപ്പറയുന്നവ പോലുള്ളവ ഉപയോഗിക്കാൻ കഴിയും:
# todo: put this in a dedicated file for reuse and dot-source the file
function Test-Administrator
{
[OutputType([bool])]
param()
process {
[Security.Principal.WindowsPrincipal]$user = [Security.Principal.WindowsIdentity]::GetCurrent();
return $user.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator);
}
}
if(-not (Test-Administrator))
{
# TODO: define proper exit codes for the given errors
Write-Error "This script must be executed as Administrator.";
exit 1;
}
$ErrorActionPreference = "Stop";
# do something
മറ്റൊരു മാർഗ്ഗം ഈ വരി ഉപയോഗിച്ച് നിങ്ങളുടെ സ്ക്രിപ്റ്റ് ആരംഭിക്കുക, ഇത് ഇത് തടയും അഡ്മിൻ അവകാശങ്ങളുമായി ആരംഭിക്കാത്തപ്പോൾ നടപ്പിലാക്കൽ.
#Requires -RunAsAdministrator
Это проверяет, являетесь ли вы администратором, если нет, то он снова откроется в PowerShell ISE в качестве администратора .
Надеюсь, это поможет!
$ver = $host | select version
if ($ver.Version.Major -gt 1) {$Host.Runspace.ThreadOptions = "ReuseThread"}
# Verify that user running script is an administrator
$IsAdmin=[Security.Principal.WindowsIdentity]::GetCurrent()
If ((New-Object Security.Principal.WindowsPrincipal $IsAdmin).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator) -eq $FALSE)
{
"`nERROR: You are NOT a local administrator. Run this script after logging on with a local administrator account."
# We are not running "as Administrator" - so relaunch as administrator
# Create a new process object that starts PowerShell
$newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell_ise";
# Specify the current script path and name as a parameter
$newProcess.Arguments = $myInvocation.MyCommand.Definition;
# Indicate that the process should be elevated
$newProcess.Verb = "runas";
# Start the new process
[System.Diagnostics.Process]::Start($newProcess);
# Exit from the current, unelevated, process
exit
}