I decided to create a summary of the useful powershell commands and tricks to give the beginners a starting point to prepare and customize the powershell workspace. I don’t want to copy the powershell help. I will add here only the commands I use to customize powershell environment on the computers I’m working on.
For XenApp 6.5 specific powershell commands see: XenApp 6.5 powershell commands cheat sheet
For XenDesktop 7.6 specific powershell commands see: XenDesktop 7.6 powershell commands cheat sheet
Examine existing powershell environment
# Get-Host or (Get-Host).Version or $PSVersionTable.PSVersion #
#list modules that have been imported into the current session. Get-Module #list modules that are installed and can be imported into the current session. Get-Module -ListAvailable #
Configure powershell environment on new computer
#Check if profile is configured Test-path $profile #Create a new profile file New-item –type file –force $profile #edit profile to add required commands etc Notepad $profile #
# Set-ExecutionPolicy RemoteSigned #available options: Restricted, AllSigned, RemoteSigned, Unrestricted #
#list modules that have been imported into the current session. Get-Module #list modules that are installed and can be imported into the current session. Get-Module -ListAvailable #
Change command output view settings
#Standard view Get-Service a* #Display output with full column width Get-Service a* |Format-Table -AutoSize #
Manage remote computer
# Enable remote management on target computer
Enable-PSRemoting -Force
#Connect to remote computer Server01 with current credentials
Enter-PSSession -ComputerName Server01
#Connect to remote computer Server01 with different credentials
Enter-PSSession -ComputerName Server01 -Credential Admin
#Execute command on remote computers
Invoke-Command -ComputerName Server01,Server02 -ScriptBlock { Get-Service IMA* } -Credential Admin
#Execute local script on remote computers
Invoke-Command -computername Server05 -filepath .\xa65_load.ps1
#
#
PS C:\> Enter-PSSession -ComputerName Server03
[Server03]: PS C:\>
[Server03]: PS C:\> Restart-Computer
or
Invoke-Command -ComputerName Server03 -ScriptBlock { Restart-Computer }
#
#Display session info query session /server:Server01 or QWinSta session /server:Server01 # # #Reset/logoff session on remote server reset session 2 /server:Server01 or logoff 4 /server:Server01 or rwinsta 5 /server:Server01 #
Manage local computer
# #To display basic system information Get-CimInstance CIM_ComputerSystem #To display hardware information Get-CimInstance CIM_BIOSElement #
# #-LogName available options: System, Application, Security etc (use TAB to display more options) #-EntryType available options: Error, Warning, Information, FailureAudit, SuccessAudit # List 3 newest errors from System eventlog Get-EventLog -LogName System -EntryType Error -newest 3 # List System eventlog errors from last 2 days (today and day before) Get-EventLog -LogName System -EntryType Error -After (Get-Date).AddDays(-1) # List System eventlog errors from last 2 hours Get-EventLog -LogName System -EntryType Error -After (Get-Date).AddHours(-2) # List System eventlog errors reported by source: MetaFrame Get-EventLog -LogName System -EntryType Error -Source "MetaFrame" # List System eventlog errors with selected EventID Get-EventLog -LogName System -EntryType Error -InstanceId 9017 # Display details of selected eventlog entry Get-EventLog -LogName System -EntryType Error -Index 83203 # Display details of selected eventlog entry with full description Get-EventLog -LogName System -EntryType Error -Index 83203 |Format-List #
# #By default, all comparison operators are case-insensitive. # #To make a comparison operator case-sensitive, precede the operator name with a "c" (-ceq, -clt, etc..) #Available operators: -eq #Equal to -lt #Less than -gt #Greater than -ge #Greater than or Eqaul to -le #Less than or Equal to -ne #Not equal to -Like -NotLike -Match -NotMatch -Contains -NotContains -In -NotIn -Replace
# get-wmiobject -namespace "root\CIMV2" -class "Win32_Printer" # For use only on Server 2012 and Windows 8 with RSAT installed Get-Printer -ComputerName PrintServer01 # # Registry location for installed printers HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3 #
#
get-wmiobject -namespace "root\CIMV2" -class "Win32_Printer" |select systemname -Unique |where {$_.systemName -ne $env:computername}
#
# Display update status Get-MpComputerStatus | select *updated, *version #Start signature update Update-MpSignature #Start computer scan Start-MpScan -ScanType quick #Availabale options: FullScan, QuickScan, CustomScan #
#List all scheduled jobs Get-ScheduledJob #Create new scheduled job $t=New-JobTrigger -AtStartup -RandomDelay 45 Register-ScheduledJob -Name "Windows Defender Siganture Update" -FilePath "c:\windows\Citrix24\Scripts\Defender update.ps1" -Trigger $t #
# List trigger details Get-JobTrigger -Name *Defender* # Create new job trigger # Available parameters for time schedule: At, Once, Daily, Weekly, AtStartup, At LogOn # Available paremeters for repeating action: DaysInterval, WeeksInterval, RepetitionInterval New-JobTrigger -Once -At "1/20/2012 3:00 AM" or New-JobTrigger -Daily -At "4:15 AM" -DaysInterval 3 or New-JobTrigger -Weekly -DaysOfWeek Monday, Wednesday, Friday -At "23:00" -WeeksInterval 4 or New-JobTrigger -Weekly -DaysOfWeek 1,3,5 -At 23:01 -WeeksInterval 4 #Add new job trigger to an existing scheduled job Add-JobTrigger -Name "Windows Defender Siganture Update" -Trigger (New-JobTrigger -Daily -At 3:10AM) #
#Mount iso
$iso=Mount-DiskImage -PassThru \\nas\iso\W2K8R2.iso
or
$iso=Mount-DiskImage -PassThru \\nas\iso\W2K8R2.iso,\\nas\iso\XD76.iso
#List details for mounted iso
Get-Volume -DiskImage $iso
or
foreach($1 in $iso){Get-Volume -DiskImage $1}
#Dismount iso
Get-Volume e |Get-DiskImage |Dismount-DiskImage
or
Dismount-DiskImage $iso.ImagePath
#
#Display service list - basic information only
Get-Service
or
Get-WmiObject Win32_Service
#Display service list - detailed information
Get-Service | select *
or
Get-WmiObject win32_service | select *
#Display service account information
Get-WmiObject win32_service |select Name, DisplayName, StartName
#Display service account information for SQL Server services
Get-WmiObject win32_service |select Name, DisplayName, StartName |where {$_.name -match "sql"}
#
Active Directory
#List basic info Get-ADUser UserABC #List basic info + selected properties Get-ADUser UserABC -Properties CN, Description #List all info Get-ADUser UserABC -Properties * #
#List all groups with the specified name
Get-ADGroup -filter {Name -like "Group_name"}
#
Hyper-V
#Verify if Hyper-V role isn't already enabled. Get-WindowsFeature Hyper-V* #Install Hyper-V role with powershell cmdlets Install-WindowsFeature Hyper-V, Hyper-V-PowerShell –Restart #
#List available Hyper-V commands Get-Command –Module Hyper-V #Import server manager Import-Module ServerManager #Install module Add-WindowsFeature Hyper-V-PowerShell #List available Hyper-V commands Get-Command –Module Hyper-V #Update help files Update-Help #
Miscellaneous commands and tricks
#Use gwmi or Get-WmiObject
#List available namespaces
gwmi -namespace root -class "__Namespace" | Select Name
#List classes for particular namespace
gwmi -namespace root\citrix -list
#More detailed listing for classes
gwmi -namespace root\citrix -list |where {$_.name -like "metaframe*"}
#
# Get Start Time
$startDTM = (Get-Date)
{command }
# Get End Time
$endDTM = (Get-Date)
# Echo Time elapsed
"Elapsed Time: $(($endDTM-$startDTM).totalseconds) seconds"
#
Hi Andrzej,
How do we display which user profiles in Citrix are using the maximum size?