<# .SYNOPSIS Creates a new Guid object and displays its GUI to the screen .DESCRIPTION Uses static System.Guid.NewGuid() method to create a new Guid object .EXAMPLE 1. Create a new Guid is easy: New-Guid #> function New-Guid () { [System.Guid] $guidObject = [System.Guid]::NewGuid() [Windows.Forms.Clipboard]::Clear(); [Windows.Forms.Clipboard]::SetText($guidObject.Guid) Write-Host $guidObject.Guid } New-Guid
To call the function New-Guid just type its name. You will get new GUIDs without a hassle:
PS C:\users\Tore Aurstad> New-Guid 0d2cc38f-e6de-4049-ae6a-f168bf1ea670 PS C:\users\Tore Aurstad> New-Guid f99044b3-a8a6-4092-a520-c58ae259a19e PS C:\users\Tore Aurstad> New-Guid 4de11003-8bbf-4415-8fe3-e7ecf4be9ee0 PS C:\users\Tore Aurstad> New-Guid cac473e7-1f01-4d2f-b99c-4fdb25ab9da1 PS C:\users\Tore Aurstad>
Of course, this is very similar to creating a Console application with C#, we just call the static method NewGuid on the Guid class. In Powershell, variables can be strongly typed as shown here and to call a static method you just write [MyNamespace.MyClass]::MyStaticMethod. Note the double colon marks in the middle.
In addition to generating a new Guid, the clipboard contents is set to the Guid value, which means you can paste in the text where you want. I did not have to import any additional modules to reach the static function [Windows.Forms.Clipboard]::Clear() and [Windows.Forms.Clipboard]::SetText().
I'm at work now. I found an even more powerful way now, you can paste the following in your $profile file:
ReplyDeletenotepad $profile
Add:
if ($(get-alias Out-Clipboard) -eq $null){
new-alias Out-Clipboard $env:SystemRoot\system32\clip.exe
}
function New-Guid($numberOfGuids = 1, $upperCase = $true){
<#
.SYNOPSIS
Creates a new Guid object and displays its GUI to the screen
.DESCRIPTION
Uses static System.Guid.NewGuid() method to create a new Guid object
.EXAMPLE
1. Create a new Guid is easy:
New-Guid
#>
[string] $result = "";
foreach ($i in 0..$($numberOfGuids-1)){
[System.Guid] $guidObject = [System.Guid]::NewGuid()
$guid = $guidObject.Guid.ToString()
if ($upperCase){
$guid = $guid.ToUpper()
}
$result += $guid + "`n"
}
$result | Out-Clipboard
return $result
}
The code sample above can be used such as:
ReplyDeleteC:\toaurs-he\opplan4hg\source [Doculive_Integration_250313 +5 ~6 ^1]> new-guid 4 $true
61DD7EAB-DC8E-46E8-BCC9-7C754A9C50D0
D77C92C1-2F47-4C63-A8A1-E790C7B29FA0
9879189F-6426-4652-86B3-D2F48FC63456
68200098-C9DD-4AF8-8D43-2B88F3071F46
C:\toaurs-he\opplan4hg\source [Doculive_Integration_250313 +5 ~6 ^1]> new-guid 3 $false
a7b803e7-4277-46ed-83eb-3b3c1e9f408b
5854264c-1e1e-4e71-a6a6-b6378d36d099
9a5292db-d105-4b36-a1ba-e9ed0f2cb32a
C:\toaurs-he\opplan4hg\source [Doculive_Integration_250313 +5 ~6 ^1]>
[guid]::NewGuid()
ReplyDeleteYes, you can omit "System" here. You are correct, [guid]::NewGuid() is quicker to type than [System.Guid]::NewGuid().
ReplyDelete