Eher Amateur Scripter hier, versuchen, Listen von Computernamen an einen Befehl zu übergeben, so dass es durch sie durchlaufen und geben Sie mir nur ihren Namen, OS und OS-Version.Wie übermittele ich in Powershell eine Variable an einen Befehl, der einem Array hinzugefügt werden soll?
$Lab01comps = Get-ADComputer -SearchBase 'OU=Lab01,DC=domain,DC=domain,DC=domain' -Filter '*' | Select -Exp Name | sort
$Lab02comps = Get-ADComputer -SearchBase 'OU=Lab02,DC=domain,DC=domainstate,DC=edu' -Filter '*' | Select -Exp Name | sort
#This first one is more focused on just using a computer name in position 1. Example below code.
function Get-OS {
[CmdletBinding(DefaultParameterSetName="Remote")]
Param(
[Parameter(Position=1,ParameterSetName="Local")]
[Parameter(Position=2,ParameterSetName="Remote")]
[string]$ComputerName,
[System.Management.Automation.PSCredential]$Credential,
[switch]$Raw
)
If (! $ComputerName) {
$ComputerName = $env:COMPUTERNAME
}
foreach ($comp in $ComputerName) {
Get-ADComputer $ComputerName -cred $cred -prop OperatingSystem,OperatingSystemVersion | select name,OperatingSystem,OperatingSystemVersion
}
}
#Example
PS C:\> Get-OS LAB01COMP1
Name OperatingSystem OperatingSystemVersion
---- --------------- ----------------------
LAB01COMP1 Windows 7 Enterprise 6.1 (7601)
#Attempt 2: This one works, but it requires adding to the $osq array before running just the command, with no parameters. Example below code.
$osq = @()
function Get-OS2 {
foreach ($ComputerName in $osq) {
Get-ADComputer $ComputerName -cred $cred -prop OperatingSystem,OperatingSystemVersion | select name,OperatingSystem,OperatingSystemVersion
}
}
#Example
PS C:\> $osq += $Lab01comps
PS C:\> $osq
LAB01COMP1
LAB01COMP2
LAB01COMP3
PS C:\> Get-OS2
Name OperatingSystem OperatingSystemVersion
---- --------------- ----------------------
LAB01COMP1 Windows 7 Enterprise 6.1 (7601)
LAB01COMP2 Windows 7 Enterprise 6.1 (7601)
LAB01COMP3 Windows 7 Enterprise 6.1 (7601)
Ich weiß, dass hier wahrscheinlich ein ziemlich großer Code-Block war zu schreiben, aber ich wollte alle zeigen, was ich bisher versucht. Was ich möchte in der Lage sein wird, etwas zu tun wie folgt aus:
PS C:\> Get-OS $Lab01comps
Name OperatingSystem OperatingSystemVersion
---- --------------- ----------------------
LAB01COMP1 Windows 7 Enterprise 6.1 (7601)
LAB01COMP2 Windows 7 Enterprise 6.1 (7601)
LAB01COMP3 Windows 7 Enterprise 6.1 (7601)
Ich mag das Gefühl, es ist etwas einfach fehlt mir, aber meine Versuche und Online-Hilfe Suche haben irgendwie fruchtlos gewesen. Es ist eine einfache Sache, die Variablen einem Array zuzuführen, bevor Sie den Befehl ausführen, aber für den Code selbst und das Streben nach Wissen für mich würde ich gerne wissen, ob das, was ich versuche, möglich ist.
Danke!
'[string] $ ComputerName' ->' [string []] $ ComputerName' – PetSerAl