Tags

Howto (51) Free Software (35) Powershell (33) Windows Server (23) AD (16) Hyper-V (16) Exchange (13) Office (13) Group Policy (10) Windows Server 2012 (9) Scripts (7) Symantec BE (5) Windows 8 (5) Cisco (4) TMG (4) Terminal Server (4) Cluster (3) HP (3) RDS (3) UAG (3) Citrix (2) DC (2) DNS (2) IE10 (2) OpenID (2) PKI (2) SCVMM (2) Windows Live (2) iLO (2) Backup (1) DPM (1) Fileserver (1) IE (1) SQL; DPM (1) Security (1) Sharepoint (1) Switch (1) VMWare (1) Veeam (1)

vrijdag 20 december 2013

Powershell Pipeline

Vier manieren voor pipeline input:

  1. ByValue (match op naam van object)
  2. ByProperty (match op naam van property)
  3. ByProperty maar waarbij de naam van de property niet overeenkomt met een van de mogelijkheden
  4. Indien CMDLet geen pipe-input kan hebben
Stel je wilt een overzicht hebben van de BITS service op alle computers in het domein.
 
Je voert dan een opdracht in die als eerste de gewenste computers ophaalt, zoals:
 
Get-ADComputer –Filter *
 
Daarna voer je deze door de pipeline heen naar Get-Service –name BITS:
 
Get-ADComputer –Filter * | Get-Service –name bits
 
Dit werkt echter niet omdat het object van byValue niet overeenkomt met het object ADComputer maar met ServiceController.
 
Als je get-member uitvoert voor get-service dan zie je dat het object ServiceController heet, welke wel in de help-file voorkomt als zijn ByValue mogelijkheid:
 
 
 
 
Er zal gekeken moeten worden of er een hookup is op basis van “ByPropertyname”:
In de helpfile staat dat ComputerName wel een input (true) optie is:
 
 
 
Echter als je bij de properties van Get-ADComputer kijkt zul je zien dat ComputerName geen property is van Get-ADComputer.
Wel “name”, je zal dus “name” moeten hernoemen naar “ComputerName” alvorens deze aan Get-Service mee te geven.
 
Get-ADComputer –Filter * | select –Property @{name=’ComputerName’; expression{$_.name}} | Get-Service –name bits
 
 
Het kan voorkomen dat een CMDLet geen pipe-input kan hebben.
Je kunt dat in de help-file van de desbetreffende CMDLet opzoeken.
Onder de parameters staat achter elke “Accept pipeline input?” false.
Tevens staat onder het kopje INPUT:
 
 
 
 
 
 
Get-WmiObject -Class win32_bios -ComputerName (Get-ADComputer -Filter * | Select -ExpandProperty name)
 
Of beter PSv3 stijl:
 
Get-WmiObject -Class win32_bios -ComputerName (Get-ADComputer -Filter * ).name
 
Of je gebruikt de vernieuwde versie van Get-WmiObject nl Get-CimInstance die wel pipeline input ondersteunt ;)
 
 
 

Wie zit er achter welke poort van welke switch

Als eerste installeer je een TFTP server (bijvb de gratis SolarWinds TFTP Server)
 
Vervolgens log je in op alle switches en exporteer je de gehele mac-address tabel naar een csv bestand:
 
copy command-output 'show mac-address' tftp <ip-adres van TFTP server> <bestandsnaam.csv>
 
 
Daarnaast voer je een netwerkscan uit met bijvoorbeeld de gratis Network Scanner Tool van Softperfect.
 
De scan exporteer je naar csv
 
In Excel verwijder je alle streepjes van de mac-addresses in beide export bestanden, zodat ze gelijk zijn.
 
Daarna een vertical lookup

Remove a specific endorsement from LinkedIn Profile

 Edit “Skills & Expertise”, click on “Manage Endorsements” and click on the proper endorsement.
Deselect the appropriate endorsement and click “save”.
 
 
 

Verwijder de voornaam of achternaam of een ander veld van een aantal gebruikers in AD

Onderstaand commando verwijderd de voornamen van alle gebruikers in de OU test:
 
Get-ADUser -Filter * -SearchBase "OU=test,DC=domein,DC=local" | Set-ADUser -GivenName $NULL