How to copy string to clipboard Powershell? Linux/Windows/Mac - powershell

I'm in the process of writing a powershell module, that aim to be distributed and I'm looking for a cross-platform (Win/Linux/MacOS) powershell ≥5.0 solution to copy a generated string to the system's clipboard.
Env
> $PSVersionTable
Name Value
---- -----
PSVersion 6.1.2
PSEdition Core
GitCommitId 6.1.2
OS Linux 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Set-Clipboard
PS ~/projects/lesspass-powershell> Get-Random | Set-Clipboard
Set-Clipboard : The term 'Set-Clipboard' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:14
+ Get-Random | Set-Clipboard
+ ~~~~~~~~~~~~~
+ CategoryInfo
: ObjectNotFound : (Set-Clipboard:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Write-Clipboard
PS ~/projects/lesspass-powershell> Get-Random | Write-Clipboard
Write-Clipboard : The term 'Write-Clipboard' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:14
+ Get-Random | Write-Clipboard
+ ~~~~~~~~~~~~~~~
+ CategoryInfo
: ObjectNotFound : (Write-Clipboard:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Out-Clipboard
PS ~/projects/lesspass-powershell> Get-Random | Out-Clipboard
Out-Clipboard : The term 'Out-Clipboard' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:14
+ Get-Random | Out-Clipboard
+ ~~~~~~~~~~~~~
+ CategoryInfo
: ObjectNotFound : (Out-Clipboard:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Solution: install module
You can install aditionnal module ClipboardText
Locate command
On Windows (PS v5.1) to know which module contains these command :
PS> get-module | ?{$_.ExportedCommands.Keys -like '*-Clipboard'}
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 3.1.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Content...}
Script 3.2.0.0 Pscx {Add-PathVariable, Clear-MSMQueue, Convert-Xml, ConvertFrom-Base64...}
However, this results is empty on PS v6.1 core!
get-module Microsoft.PowerShell.Management,pscx | ?{$_.ExportedCommands.Keys -like '*-Clipboard'}

Related

Linux Powershell client : Add-PSSnapin VeeamPSSnapIn & Connect-VBRServer

Please advice me how to use : Add-PSSnapin VeeamPSSnapIn & Connect-VBRServer on a Linux Ubuntu Powershell client
Here is what I tried:
#$psversiontable Output
Name Value
---- -----
PSVersion 6.1.0-preview.2
PSEdition Core
GitCommitId v6.1.0-preview.2
OS Linux 4.10.0-38-generic #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
#Connect-VBRServer Output:
Connect-VBRServer : The term 'Connect-VBRServer' is not recognized as
the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that
the path is correct and try again. At line:1 char:1
+ Connect-VBRServer
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Connect-VBRServer:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
#Add-PSSnapin VeeamPSSnapIn Output:
Add-PSSnapin : The term 'Add-PSSnapin' is not recognized as the name
of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path
is correct and try again. At line:1 char:1
+ Add-PSSnapin VeeamPSSnapIn
+ ~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Add-PSSnapin:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
According to Veeam Knowledge Base the PowerShell Module is installed with a Windows Setup File. Maybe ask Veeam directly if it's planned to support Linux?

'New-SelfSignedCertificate' is not recognised as the name of a cmdlet [duplicate]

On a Windows 7 Professional system, it seems not possible to run New-SelfSignedCertificate. I could on a Windows 10 system.
Yes, the shell was started with "Run As Administrator."
PS C:\> new-selfsignedcertificate
new-selfsignedcertificate : The term 'new-selfsignedcertificate' is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that
the path is correct and try again.
At line:1 char:1
+ new-selfsignedcertificate
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (new-selfsignedcertificate:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 0 10586 117
As stated in the comments above, this isn't available in Windows 7.
However, if you're looking for something with a similar API and capability, then I have used & can recommend this from Microsoft Script Centre:
https://gallery.technet.microsoft.com/scriptcenter/self-signed-certificate-5920a7c6
Have to install AzureRM module to use azure commands through powershell. You can use below command to do it.
Install-Module -Name AzureRM -AllowClobber

Missing Azure cmdlets from PowerShell v5

Alrighty so I am trying to control my first Azure instance with Powershell.
I am on windows 10, I run $PSVersionTable
Name Value
---- -----
PSVersion 5.1.14393.693
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14393.693
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
I am trying to follow this guide: https://msdn.microsoft.com/en-us/library/mt125356.aspx
So I type "Install-Module AzureRM" That works
Then I type "Install-AzureRM"
I get:
Install-AzureRM : The term 'Install-AzureRM' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Install-AzureRM
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Install-AzureRM:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
I can use "Login-AzureRmAccount" and see my subscription info. But if I attempt to use
PS C:\WINDOWS\system32> Remove-AzureADGroup
Remove-AzureADGroup : The term 'Remove-AzureADGroup' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Remove-AzureADGroup
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Remove-AzureADGroup:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\WINDOWS\system32> Get-MsolGroup
Get-MsolGroup : The term 'Get-MsolGroup' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Get-MsolGroup
+ ~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-MsolGroup:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Nothing is working, and every single guide I come across seems outdated by two years and refers to V2 or below for Azure PS connections.
My end goal it to delete a group from AD via cmdlet and I just cannot seem to get any of this to work.
I......feel....really silly.
So after I posted this, I came across another technet link buried in another technet blog.
Turns out I don't need ANY of the above (for what I am trying to accomplish)
Simply followed this:
https://learn.microsoft.com/en-us/azure/xplat-cli-install#option-2-use-an-installer
Then used these:
https://learn.microsoft.com/en-us/azure/virtual-machines/azure-cli-arm-commands#azure-account-manage-your-account-information
The referenced article is really, really, really old, and you are now redirected to the new page if you attempt to go there: https://learn.microsoft.com/en-us/powershell/azure/install-azurerm-ps?view=azurermps-4.1.0 . You should only need to run
Install-Module AzureRM
Also, the AzureAD module isnot part of AzureRM. There are a small set of AD cmdlets included in AzureRM that allow you to manipulate AAD users, groups, and applications, but it does not have the full AD and MS Graph support of the AzureAD mdoule

Powershell and path environment variable

I would like powershell to use the environment variable "PATH" to resolve executables. I'm sure it should be able to do this, but here is what I get.
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
PS C:\> ${ENV:PATH} = "C:\WINDOWS\System32\"
PS C:\> ls ${ENV:PATH}\cmd.exe
Directory: C:\WINDOWS\System32
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 22/08/2013 8:03 PM 355840 cmd.exe
PS C:\> & cmd.exe
& : The term 'cmd.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:3
+ & cmd.exe
+ ~~~~~~~
+ CategoryInfo : ObjectNotFound: (cmd.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Run Get-Command -Type Application to see what PowerShell is seeing as valid executables.
You may find a clue as to what's going on, such as all of the listed applications have (or don't have) a certain extension, which could indicate a problem with the PATHEXT environment variable.

How to alias an executable using Powershell permanently?

Creating and running an alias in a current Powershell session works,
Windows PowerShell
Copyright (C) 2013 Microsoft Corporation. All rights reserved.
PS C:\Windows\system32> new-item alias:eadt -value "C:\adt-bundle-windows-x86_64-20140702\eclipse\eclipse.exe"
CommandType Name ModuleName
----------- ---- ----------
Alias eadt -> eclipse.exe
PS C:\Windows\system32> eadt
but fails in a new session:
PS C:\Windows\system32> eadt
eadt : The term 'eadt' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ eadt
+ ~~~~
+ CategoryInfo : ObjectNotFound: (eadt:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\Windows\system32>
You should save your alias in your profile (like in .bashrc in Linux). Hava a look to About_profile to choose your one.
$Profile var gives you the path to your profile file.
It exists 4 different profil files given by :
$profile.AllUsersAllHosts
C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
$profile.AllUsersCurrentHost
C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShellISE_profile.ps1
$profile.CurrentUserAllHosts
C:\Users\JPB\Documents\WindowsPowerShell\profile.ps1
$profile.CurrentUserCurrentHost
C:\Users\JPB\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1