Hi, i just thought i share this tiny bit of code.
Explanation: RDM cmdlets do NOT load in 64 bit Powershell.
I use this to run my New-Session script from standard 64 bit Powershell environment.
supports all Parametersif ([Environment]::Is64BitProcess) { $Myself = $Myinvocation.line Write-Host ".Running in 64 Bit, Restarting in 32 bit '$Myself'" & $env:windir\syswow64\WindowsPowerShell\v1.0\powershell.exe $Myself return 0}$RDMSnapin = Get-PSSnapin -Name *Remote.Desktop* -Registered -ErrorAction SilentlyContinue | sort version -Descending | select -First 1Add-PSSnapin $RDMSnapin -ErrorAction SilentlyContinue$AddRC = (Get-Command *rdm*).countWrite-Host ".Adding RDM Snapin: $($RDMSnapin.Name), Loaded cmdlets: $AddRC"
Peter,
Thank you for sharing your script.
We've have a dev looking at our PowerShell cmdlet. We will be adding new cmdlets and making them more pipeline friendly. Also note, we will also try to enable the cmdlet in PowerShell x64.
I see what you did there. Sorting the list to get the latest version of the PSSnapin. We've added a to-do to cleanup old PSSnapin registrations during the setup.
Best regards,
Stéfane Lavergne
Good to hear :applause:
(Your'e missing a Thumbs up Smiley)
Please i really need your Snapin (or better a module) to run in 64 bit.
To clean up your old versions once in a while is use this dirty workaround:
(Be careful, it manipulates the Registry so i spelled the cmdlet after the pipe wrong ;-)!Get-ChildItem HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellSnapIns | where {$_.name -like "*Remote.Desktop.Manager.10.*"} | Rem0ve-I7em
F.Y.I You can now run the CmdLet under x64 or x86 PowerShell.
Make sure you change the install folder and version(name)set-alias installutil "$([System.Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory())installutil.exe"installutil "C:\Program Files\10.1.3.0\RemoteDesktopManager.PowerShell.dll"if ( (Get-PSSnapin -Name Remote.Desktop.Manager.10.1.3 -ErrorAction SilentlyContinue) -eq $null ) { Add-PsSnapin Remote.Desktop.Manager.10.1.3 }
F.Y.I. new in v10.1.4.0 if you start RDM x64 and launch the PS session from the Tools-> "PowerShell (RDM CmdLet)" it will start PS x64 & register the RDM CmdLet in x64. The same is true for x86, it will register in x86.
Best regards,
Stéfane Lavergne
You can run 32 bit RDM Cmdlets from 64bit Powershell. Here's how. Do all the following on the machine that has RDM installed, of course.
1. Enable PSRemoting. This only needs done once, not every time you want to use RDM Cmdlets. If you've already enabled it, skip this step.
Enable-PSRemoting -Force
2. Start a 32bit "remote" (it's actually local) session.
$Session32 = New-PSSession -ConfigurationName microsoft.powershell32
3. Load the RDM Snapin in the session. This assumes the RDM PS dll has already been registered.
Invoke-Command -Session $Session32 -ScriptBlock {Get-PSSnapin -Name *Remote.Desktop* -Registered | % { Write-Host "$_..." -NoNewline; if ( (Get-PSSnapin -Name $_ -ErrorAction SilentlyContinue) -eq $null ) { Write-Host "installing" -ForegroundColor Yellow; Add-PsSnapin $_ } else { Write-Host "already installed" -ForegroundColor Green; } }}
4. Import the RDM Cmdlets into your current (64bit) session.
$RDMModule = Import-PSSession $Session32 -CommandName *-RDM*
You can now use 32bit RDM Cmdlets in your 64bit PowerShell!
Get-RDMCurrentDataSource
Etc.
If and when you're done using RDM Cmdlets, do this:
Remove-Module $RDMModule.Name
Remove-PSSession $Session32
Dale,
Great tip, thanks for sharing.
Best regards,
Stéfane Lavergne