PoshCode Archive  Artifact [5c6c65c480]

Artifact 5c6c65c4809b9f0830309bf2bd6ef212cfc3796d02eaa2981fed40e01dfcf797:

  • File Deploy-File-amp-Shortcut.ps1 — part of check-in [8b2f7e69c3] at 2018-06-10 13:18:48 on branch trunk — Deploys a file to a list of computers pulled from AD and creates a shortcut on each users desktop. (user: HughS size: 3038)

# 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"
							}
					}
				}
			}
		}
}