Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ####################################################################################
- ### Functions Library, v.1.2.1
- ### Efimov (ge][) Gennady, http://gexeg.blogspot.com/
- ####################################################################################
- function GetObjects2($root, $filter, [string[]]$attrs){
- if (-not $root){
- return GetObjects -SourceDomain $root -filter $filter -attrs $attrs
- }
- $rootObj = [adsi]$root
- $searcher = New-Object System.DirectoryServices.DirectorySearcher($rootObj, $filter, $attrs)
- $searcher.PageSize = 1000
- $searchResult = $searcher.FindAll()
- return $searchResult
- }
- function GetGCRootNCObj($GCServer){
- $rootDSETargetGC = [adsi]"LDAP://$GCServer/RootDSE"
- $TargetRootNC = $rootDSETargetGC.rootDomainNamingContext
- $rootGCSearch = [adsi]("GC://$GCServer/$TargetRootNC")
- return $rootGCSearch
- }
- function ConvertByteArrayToLDAPString($byteArray){
- [string]$result = "";
- foreach ($byte in $byteArray){
- $result += "\" + $byte.ToString("X2");
- }
- return $result;
- }
- function GetObjects($SourceDomain, $filter, [string[]]$attrs, $UserName, $UserPassword){
- if (-not $SourceDomain){
- $SourceDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name
- }
- if ($UserName -and $UserPassword){
- $ctx = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext(`
- [System.DirectoryServices.ActiveDirectory.DirectoryContextType]::Domain, $SourceDomain, $UserName, $UserPassword)
- }
- else {
- $ctx = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext(`
- [System.DirectoryServices.ActiveDirectory.DirectoryContextType]::Domain, $SourceDomain)
- }
- $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($ctx)
- $rootobj = $domain.GetDirectoryEntry()
- $searcher = New-Object System.DirectoryServices.DirectorySearcher($rootobj, $filter, $attrs)
- $searchResult = $searcher.FindAll()
- return $searchResult
- }
- function GetComputerObj($SourceDomain, $ComputerName){
- $ctx = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext(`
- [System.DirectoryServices.ActiveDirectory.DirectoryContextType]::Domain, $SourceDomain)
- $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($ctx)
- $rootobj = $domain.GetDirectoryEntry()
- $searcher = New-Object System.DirectoryServices.DirectorySearcher($rootobj, `
- "(&(objectCategory=computer)(objectClass=computer)(sAMAccountName=$ComputerName))")
- $searchResult = $searcher.FindAll()
- if ($searchResult.Count -eq 0){ throw "Ошибка. Компьютер $ComputerName не найден" }
- if ($searchResult.Count -gt 1){ throw "Ошибка. Найдено более одного объекта для $ComputerName" }
- $compObj = $searchResult[0].GetDirectoryEntry()
- return [object]$compObj
- }
- function GetUserObj($SourceDomain, $UserName){
- $ctx = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext(`
- [System.DirectoryServices.ActiveDirectory.DirectoryContextType]::Domain, $SourceDomain)
- $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($ctx)
- $rootobj = $domain.GetDirectoryEntry()
- $searcher = New-Object System.DirectoryServices.DirectorySearcher($rootobj, `
- "(&(objectCategory=user)(objectClass=user)(sAMAccountName=$UserName))")
- $searchResult = $searcher.FindAll()
- if ($searchResult.Count -eq 0){ throw "Ошибка. Пользователь $UserName не найден" }
- if ($searchResult.Count -gt 1){ throw "Ошибка. Найдено более одного объекта для $UserName" }
- $compObj = $searchResult[0].GetDirectoryEntry()
- return [object]$compObj
- }
- function GetGroupObj($SourceDomain, $GroupName){
- $ctx = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext(`
- [System.DirectoryServices.ActiveDirectory.DirectoryContextType]::Domain, $SourceDomain)
- $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($ctx)
- $rootobj = $domain.GetDirectoryEntry()
- $searcher = New-Object System.DirectoryServices.DirectorySearcher($rootobj, `
- "(&(objectCategory=group)(objectClass=group)(sAMAccountName=$GroupName))")
- $searchResult = $searcher.FindAll()
- if ($searchResult.Count -eq 0){ throw "Ошибка. Группа $GroupName не найден" }
- if ($searchResult.Count -gt 1){ throw "Ошибка. Найдено более одного объекта для $GroupName" }
- $groupObj = $searchResult[0].GetDirectoryEntry()
- return [object]$groupObj
- }
- function DisableComputer($ComputerObject){
- #$compObj = [System.DirectoryServices.DirectoryEntry]$ComputerObject
- $ComputerObject.PsBase.InvokeSet("AccountDisabled", $true)
- $ComputerObject.PsBase.CommitChanges()
- }
- function SetUserEnabled($UserObject, $State){
- #$compObj = [System.DirectoryServices.DirectoryEntry]$ComputerObject
- $UserObject.PsBase.InvokeSet("AccountDisabled", $(-not $State))
- $UserObject.PsBase.CommitChanges()
- }
- function SetUserExpire($UserObject, [double]$NumDay){
- if ($NumDay -eq 0) {
- $UserObject.AccountExpires = 0
- }
- else {
- $date_ = [System.DateTime]::Now.AddDays($NumDay)
- $UserObject.PsBase.InvokeSet("AccountExpirationDate", $date_)
- }
- $UserObject.PsBase.CommitChanges()
- }
- function SetMustChangePasswordEnabled($UserObject, $State){
- if ($State){
- $UserObject.PsBase.InvokeSet("pwdLastSet", 0)
- }
- else {
- $UserObject.PsBase.InvokeSet("pwdLastSet", -1)
- }
- $UserObject.PsBase.CommitChanges()
- }
- function SetUserPassword($UserObject, $Password){
- $UserObject.PsBase.Invoke("SetPassword", $Password)
- $UserObject.PsBase.CommitChanges()
- }
- function ClearSPN($ComputerObject){
- #$ComputerObject= [System.DirectoryServices.DirectoryEntry]$ComputerObject
- $ComputerObject.Properties["servicePrincipalName"].Clear()
- $ComputerObject.PSBase.CommitChanges()
- }
- function GetWindowsDir($computerName){
- $osObj = Get-WmiObject -ComputerName $computerName -Class Win32_OperatingSystem
- if ($osObj){
- return $osObj.WindowsDirectory
- }
- trap {
- Write-Host $_ -ForegroundColor Red -BackgroundColor Black
- return ""
- }
- }
- function GetWindowsVersion($computerName){
- $osObj = Get-WmiObject -ComputerName $computerName -Class Win32_OperatingSystem
- if ($osObj){
- return $osObj.Version
- }
- trap {
- Write-Host $_ -ForegroundColor Red -BackgroundColor Black
- return ""
- }
- }
- function StopService($computerName, $serviceName){
- $svcObj = Get-WmiObject -ComputerName $computerName -Class Win32_Service -Filter "Name='$serviceName'"
- if ($svcObj){
- $result = $svcObj.StopService()
- return $result.ReturnValue
- }
- }
- function StartService($computerName, $serviceName){
- $svcObj = Get-WmiObject -ComputerName $computerName -Class Win32_Service -Filter "Name='$serviceName'"
- if ($svcObj){
- if (-not $svcObj.Started){
- $result = $svcObj.StartService()
- return $result.ReturnValue
- }
- return 0
- }
- }
- function GPUpdate($computerName){
- $result = Invoke-WmiMethod -ComputerName $ComputerName -Class Win32_Process -Name "Create" -ArgumentList @("gpupdate.exe /target:computer /force")
- return $result.ReturnValue
- }
- function SecEditRefreshPolicy($computerName){
- $result = Invoke-WmiMethod -ComputerName $ComputerName -Class Win32_Process -Name "Create" -ArgumentList @("secedit.exe /refreshpolicy machine_policy")
- return $result.ReturnValue
- }
- Function RemoveExch2k3Attrib($obj){
- [string[]]$attribArr = "homeMTA", "proxyAddresses", "homeMDB", "mDBUseDefaults", "mailNickname", "showInAddressBook", "legacyExchangeDN", "textEncodedORAddress", "mail", `
- "msExchHomeServerName", "msExchALObjectVersion", "msExchMailboxSecurityDescriptor", "msExchUserAccountControl", "msExchMailboxGuid", "msExchPoliciesIncluded", "mAPIRecipient", `
- "autoReplyMessage", "adminDisplayName", "msExchADCGlobalNames", "msExchHideFromAddressLists", "targetAddress", "internetEncoding", "mDBStorageQuota", "mDBOverQuotaLimit", `
- "mDBOverHardQuotaLimit", "deletedItemFlags", "garbageCollPeriod", "authOrig", "dLMemSubmitPerms", "unauthOrig", "dLMemRejectPerms", "submissionContLength", "delivContLength", "altRecipient", `
- "deliverAndRedirect", "publicDelegates", "extensionAttribute1", "extensionAttribute2", "extensionAttribute3", "extensionAttribute4", "extensionAttribute5", "extensionAttribute6", `
- "extensionAttribute7", "extensionAttribute8", "extensionAttribute9", "extensionAttribute10", "extensionAttribute11", "extensionAttribute12", "extensionAttribute13", `
- "extensionAttribute14", "extensionAttribute15", "protocolSettings", "displayNamePrintable", "folderPathname", "securityProtocol", "msExchExpansionServerName", `
- "msExchOmaAdminWirelessEnable", "msExchOmaAdminExtendedSettings", "msExchFBURL", "msExchResourceGUID", "dLMemDefault", "msExchControllingZone", "msExchPoliciesExcluded", `
- "msExchMasterAccountSid", "msExchRecipLimit", "deliveryMechanism", "delivExtContTypes", "dnQualifier", "enabledProtocols", "expirationTime", "extensionData", `
- "formData", "forwardingAddress", "importedFrom", "language", "languageCode", "msExchCustomProxyAddresses", "msExchPolicyEnabled", "msExchPolicyOptionList", "msExchPreviousAccountSid", `
- "msExchProxyCustomProxy", "pOPCharacterSet", "pOPContentFormat", "replicationSensitivity", "heuristics", "msExchInconsistentState", "msExchUnmergedAttsPt", "replicatedObjectVersion", `
- "replicationSignature", "unmergedAtts", "autoReply", "msExchMailboxUrl", "msExchPfRootUrl", "msExchUseOAB"
- foreach ($attr in $attribArr){
- $obj.PSBase.Invoke("PutEx", [object[]](1, $attr, 0));
- }
- $obj.PSBase.CommitChanges();
- if (-not $?){
- throw "Не удалось удалить атрибуты у " + $obj.name
- }
- }
- #function GetRemoteRegistryKey($machineName, [Microsoft.Win32.RegistryHive]$hive="LocalMachine", $subPath, `
- # [System.Security.AccessControl.RegistryRights]$accessLevel="QueryValues"){
- #for AccessLevel values see RegistryRights Enumeration type in msdn
- function GetRemoteRegistryKey($machineName, [Microsoft.Win32.RegistryHive]$hive="LocalMachine", $subPath){
- $result = $null
- $regRootKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($hive, $machineName)
- if ($regRootKey){
- return $regRootKey.OpenSubKey($subPath, [Microsoft.Win32.RegistryKeyPermissionCheck]::Default)
- }
- return $result
- }
- function GetKeyValue([Microsoft.Win32.RegistryKey]$regKey, [System.String]$valueName){
- $result = $null
- if ($regKey){
- return $regKey.GetValue($valueName)
- }
- return $result
- }
- function GetWMIClassPropertyArr($className, $server){
- if (-not $server){
- $server = "localhost"
- }
- $mgmtpath = New-Object System.Management.ManagementPath
- $mgmtpath.ClassName = $className
- $mgmtpath.Server = $server
- $class = New-Object System.Management.ManagementClass($mgmtpath)
- $propertyArr = @()
- if ($class){
- foreach ($property in $class.PSBase.Properties){
- $propertyArr += $property.Name
- }
- }
- return $propertyArr
- }
- function GetProducts($computername){
- $products = @()
- $regkey = GetRemoteRegistryKey -machineName $computername -hive LocalMachine -subPath "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
- $subkeys = $regkey.GetSubKeyNames()
- foreach($subkey in $subkeys){
- $subkey = $regkey.OpenSubKey($subkey, $false)
- $val = $subkey.GetValue("ParentKeyName")
- if ($subkey.GetValue("DisplayName") -and -not $subkey.GetValue("ParentKeyName")){
- $product = New-Object System.Object
- $product | Add-Member -Name "__SERVER" -MemberType NoteProperty -Value $computername
- $product | Add-Member -Name "Name" -MemberType NoteProperty -Value $subkey.GetValue("DisplayName")
- $product | Add-Member -Name "DisplayVersion" -MemberType NoteProperty -Value $subkey.GetValue("DisplayVersion")
- $product | Add-Member -Name "EstimatedSize" -MemberType NoteProperty -Value $subkey.GetValue("EstimatedSize")
- $product | Add-Member -Name "InstallDate" -MemberType NoteProperty -Value $subkey.GetValue("InstallDate")
- $product | Add-Member -Name "Language" -MemberType NoteProperty -Value $subkey.GetValue("Language")
- $product | Add-Member -Name "Vendor" -MemberType NoteProperty -Value $subkey.GetValue("Publisher")
- $product | Add-Member -Name "Version" -MemberType NoteProperty -Value $subkey.GetValue("Version")
- $product | Add-Member -Name "VersionMajor" -MemberType NoteProperty -Value $subkey.GetValue("VersionMajor")
- $product | Add-Member -Name "VersionMinor" -MemberType NoteProperty -Value $subkey.GetValue("VersionMinor")
- $products += $product
- }
- }
- $regkey.Close()
- return $products
- }
Advertisement
Add Comment
Please, Sign In to add comment