Archiv podle štítků: powershell

Powershell – switch

Tohle mě nadchlo :)

Switch -wildcard ($objComputer.Name.split("-")[0].ToLower()) {
	zp* {$strTargetPath = "Praha"}

List users of group

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
$ErrorActionPreference = "Stop"
 
Function listUsers ($group) {
	trap {
		Write-Host "-ERROR-"
        Write-Host "Cannot connect to $domain" -BackgroundColor red -ForegroundColor Black
		Write-Host
		exit
    }  
 
	foreach ($member in $group.member)
	{
		Write-Progress -activity "List users" -status "Search ..." 
 
		$mem = [ADSI] "LDAP://$member"
 
		If ($mem.grouptype) {
			listUsers $mem
		} Else {
			[string]$username = $mem.cn
			[string]$groupname  = $group.cn
			[Boolean]$disable = $mem.psbase.invokeget("AccountDisabled")
			[string]$lastLogon = $(get-date 1/1/1601).adddays(($(&dsquery * $mem.distinguishedName -attr lastLogonTimestamp)[1].Trim())/(60*10000000)/1440)
 
			If (($xmlOutput.SelectNodes("/data/users[path='" + $mem.path + "']")).count -eq 0) {
				$root = $xmlOutput.CreateElement("users")
				$root.set_InnerXML("<username>"+$mem.cn+"</username><path>"+$mem.path+"</path><groups>"+$group.cn+"</groups><disabled>"+$disable+"</disabled><lastlogon>"+$lastLogon+"</lastlogon>")
				$xmlOutput.data.AppendChild($root) > $NULL
			}
			Else{
				$groups = $xmlOutput.SelectNodes("/data/users[path='" + $mem.path + "']/groups").item(0).get_innerText() + ", " + $group.cn
				$node = $xmlOutput.data.users | where {$_.path -eq $mem.path}
				$node.groups = $groups
			}
		}
	}
}
 
 
if ($args.count -lt 1) {
	Write-Host
	Write-Host "LIST USERS v1.0"
	Write-Host "Copyright (c) 2010 Weis Michal"
	Write-Host
	Write-Host "EXAMPLE: listGroups.ps1 ""cn=administrators,cn=builtin,dc=test,dc=local"""
	Write-Host
	exit
}
 
[string]$domain = "LDAP://" + $args[0]
$group = [ADSI] $domain
 
$xmlOutput = [xml] @"
< ?xml version="1.0" standalone="yes"?>
<data>
<users></users>
</data>
"@
Write-Host
listUsers $group
 
ForEach ($user in $xmlOutput.data.users) {
	If ($user.username) {
		Write-Host "Username: " $user.username.toUpper() -ForegroundColor Yellow
		Write-Host $user.path
		Write-Host "Groups :" $user.groups
		If ($user.disabled -eq "True") {
			Write-host "Account is disabled" -ForegroundColor Green
		} Else {
			Write-Host "Account is enabled"
		}
		Write-Host "Last logon:" $user.lastlogon
		Write-host
	}
}

How to write Powershell Cmdlet

http://msdn.microsoft.com/en-us/library/dd878294%28VS.85%29.aspx

Powershell remote registry

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function getRegKey () {
	param (
		[string]$serverName = $args[0],
		[string]$regKeyPath = $args[1],
		[string]$key = $args[2]
	)
 
	$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $serverName)
	$regKey = $reg.OpenSubKey($regKeyPath)
	return $regKey.GetValue($key)
}
 
function setRegKey () {
	param (
		[string]$serverName = $args[0],
		[string]$regKeyPath = $args[1],
		[string]$key = $args[2],
		[string]$value = $args[3]
	)
 
	$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $serverName)
	$regKey = $reg.OpenSubKey($regKeyPath,$true)
	$regKey.SetValue($key, $value)
}
 
getRegKey "nbweis" "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters" "SearchList"
setRegKey "nbweis" "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters" "SearchList" "blbost.cz"
getRegKey "nbweis" "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters" "SearchList"

Powershell Deep Dive

http://neuronspark.com/videos/powershell-deep-dive/

Powershell a transakce

http://blogs.msdn.com/powershell/archive/2008/05/09/powershell-transactions-quickstart.aspx

Powershell add sidhistory

V Powershellu trifka :-)
http://gallery.technet.microsoft.com/ScriptCenter/en-us/9b338347-c012-418b-84f6-efc5a148429b

Powershell Windows Form

Tak tohle se určitě hodí.
http://blogs.technet.com/heyscriptingguy/archive/2010/03/01/hey-scripting-guy-march-1-2010.aspx?utm_source=twitterfeed&utm_medium=twitter

Powershell 2.0 – KB968929

Důležitý update pro Powershell, povýšení na verzi 2.0.

http://support.microsoft.com/kb/968929

Zjištění nainstalované verze Powershellu:

get-host | select version

Výpis neaktivních objektů v AD

# InActiveObject v1.0
#
# – AD : test.local
# – number Of Days Of Inactivity
#

$erroractionpreference = "SilentlyContinue"
if ($args.count -lt 2) {
    Write-Host
    Write-Host "InActiveObject v1.0 [MW 2009]"
    Write-Host "List of inactive objects in Active Directory."
    Write-Host
    Write-Host "Usage : InActiveObject.ps1 domain.name numberOfDaysOfInactivity"
    Write-Host
    exit
}
[string]$domain = "LDAP://" + $args[0]
[int]$day = $args[1]
$Root = New-Object DirectoryServices.DirectoryEntry $domain
$selector = New-Object DirectoryServices.DirectorySearcher
$selector.SearchRoot = $root
$selector.PropertiesToLoad.Add("canonicalName")    >$null
$selector.PropertiesToLoad.Add("sAMAccountName")    >$null
$selector.PropertiesToLoad.Add("lastLogontimeStamp")    >$null
$currentDate = [System.DateTime]::Now
$currentDateUNC = $currentDate.ToUniversalTime()
$lastLogonTimeStamp = $currentDateUNC.AddDays(- $day)
$lastLogonTimeLimit = $lastLogonTimeStamp.ToFileTime()
$selector.Filter = "(lastLogonTimeStamp<=" + $lastLogonTimeLimit + ")"
$adobj= $selector.findall()
if (!$?) {
    Write-Host "[ERROR] Cannot connect to domain : " $domain
    exit
}
If ($adobj.Count -eq 0) {
    Write-Host "No account."
}Else {
    $colUser = @()
    foreach ($person in $adobj){
        $lastLogonTime = [System.DateTime]::FromFileTime([string]$person.properties.lastlogontimestamp)
       
        $objTemp = New-Object System.Object
        $objTemp | Add-Member -MemberType NoteProperty -Name Username -Value $person.properties.samaccountname
        $objTemp | Add-Member -MemberType NoteProperty -Name LastLogon -Value $lastLogonTime
        $objTemp | Add-Member -MemberType NoteProperty -Name Path -Value $person.properties.canonicalname
       
        $colUser += $objTemp
    }
}
$colUser
Better Tag Cloud