# encoding: ascii
# api: powershell
# title: Deploy File & Shortcut
# description: Deploys a file to a list of computers pulled from AD and creates a shortcut on each users desktop.
# version: 0.1
# type: script
# author: HughS
# license: CC0
# x-poshcode-id: 3014
# x-archived: 2011-10-23T11:32:54
# x-published: 2011-10-19T11:51:00
#
#
Add-PSSnapin Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue #This is needed to pull computers from AD
Clear-Host
$wshshell = New-Object -ComObject WScript.Shell #Create Shortcut Framework
$Computers = Get-QADComputer -SearchScope Subtree -SearchRoot "OU=Workstations,DC=ins-lua,dc=com" #Get Computers from AD
FOREACH ($Computer in $Computers) #Process Computers
{
If (Test-Connection -ComputerName $Computer -Quiet) #Tests to see if computer is online
{
IF (Test-Path "\\$Computer\C$\Users\Public") #This would indicate Windows 7 OR Vista
{
IF (Test-Path "\\$Computer\C$\Users\Public\Training")
{
Copy-Item "C:\Users\Public\Training\HOWTO_VPN.exe" "\\$Computer\C$\Users\Public\Training"
}
ELSE
{
mkdir -Path "\\$Computer\C$\Users\Public\Training"
Copy-Item "C:\Users\Public\Training\HOWTO_VPN.exe" "\\$Computer\C$\Users\Public\Training"
}
$Users = Get-ChildItem "\\$Computer\C$\Users" #Gets list of user profiles on system
FOREACH ($User in $Users)
{
IF ("Administrator" -ne $User) #Don't Try to create shortcut in admin profile
{
IF ("Public" -ne $User) #Don't try to create a shortcut in public deskop
{
IF (Test-Path "\\$Computer\C$\Users\$User\Desktop") #Checks to see if we can access the Desktop for that user
{
$lnk = $wshshell.CreateShortcut("\\$Computer\C$\Users\$User\Desktop\Training.lnk")
$lnk.TargetPath = "C:\Users\Public\Training"
$lnk.Save()
Write-Host "$Computer $User DONE"
}
ELSE
{
Write-Host "$Computer $User NOPE"
}
}
}
}
}
ELSE
{
IF (Test-Path "\\$Computer\C$\Documents and Settings\All Users\Training")
{
Copy-Item "C:\Users\Public\Training\HOWTO_VPN.exe" "\\$Computer\C$\Documents and Settings\All Users\Training"
}
ELSE
{
mkdir -Path "\\$Computer\C$\Documents and Settings\All Users\Training"
Copy-Item "C:\Users\Public\Training\HOWTO_VPN.exe" "\\$Computer\C$\Documents and Settings\All Users\Training"
}
$Users = Get-ChildItem "\\$Computer\C$\Documents and Settings"
FOREACH ($User in $Users)
{
IF ("Administrator" -ne $User)
{
IF (Test-Path "\\$Computer\C$\Users\$User\Desktop")
{
$lnk = $wshshell.CreateShortcut("\\$Computer\C$\Users\$User\Desktop\Training.lnk")
$lnk.TargetPath = "C:\Users\Public\Training"
$lnk.Save()
Write-Host "$Computer $User DONE"
}
ELSE
{
Write-Host "$Computer $User NOPE"
}
}
}
}
}
}