4.1 KiB
Powershell
Data storing
Variable
$x="Text"
Invoking / Data types
String
[string]$x="Text"
Int
PS C:\Windows\system32> [int]$x=1
PS C:\Windows\system32> [int]$x="1"
PS C:\Windows\system32> [int]$x="1a"
Cannot convert value "1a" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:1
+ [int]$x="1a"
+ ~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
Bool
(MS Documentation)[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_booleans?view=powershell-7.2]
Array
$arry = @("a", "b", "c")
Hash Table / Dictionary
[ordered]@{ <name> = <value>; [<name> = <value> ] ...}
(By default sorts by values, I believe ordered means the array trust you as the elements are ordered.)
$X = [ordered]@{A=1;C=2;B=3}
Call a single elemnt from the array
Normal Array
@("a", "b", "c")[0]
>> a
@("a", "b", "c")[-1 ]
>> c
Hash array
@{A=1;C=3;B=2}["A"]
>> 1
User Interaction
Output
Write-Host
Also accepts from redirection
Write-Host
[[-Object] <Object>]
[-NoNewline]
[-Separator <Object>]
[-ForegroundColor <ConsoleColor>]
[-BackgroundColor <ConsoleColor>]
[<CommonParameters>]
Write-Host "text"
Write-Output
Write-Output "text"
Filtering
Write-Output "text" | Select-String -pattern $filters -notMatch
Select-Object
Select-Object HostName
File interactions
Read file
Get-Content $path
write to file
Write-Host $text | Out-File $path
Operators
Check if last command executed correctly
# Do something
echo $?
Looping
For
For each
(MS Documentation)[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/foreach-object?view=powershell-7.2]
Management
Access remote PS server
Enter-PSSession –ComputerName $hostname [-Credential username]
If username gets left behind, the current user will be used
Send command remotely
Invoke-Command -ComputerName hostname1, hostname2 -ScroptBlock {$COMMAND}
Text formatting
?
https://devblogs.microsoft.com/scripting/understanding-powershell-and-basic-string-formatting/
https://adamtheautomator.com/hyper-v-powershell/
Objects
Functions
Classes
https://livebook.manning.com/book/windows-powershell-in-action-third-edition/chapter-19/64
https://xainey.github.io/2016/powershell-classes-and-concepts/#introduction
Hypver-V specific
Management
Create new host
New-VM -Name "HYPER" -MemoryStartupBytes 512MB
List current VM
Get-VMHost
[[-ComputerName] <String[]>]
[[-Credential] <PSCredential[]>]
[<CommonParameters>]
Example
Find VM by name
Get-VM -ComputerName Server1
VMWARE
Connect-VIServer
Connect-VIServer
Snapshot
https://developer.vmware.com/docs/powercli/latest/products/vmwarevsphereandvsan/categories/snapshot/
Find hosts, iterate with domains?
$Hostname+.domain.dom