Wie übergebe ich Variablen mit dem Cmdlet "Invoke-Command"?

Ich muss Ereignisprotokolle von einigen Servern abrufen und möchte nicht die Anmeldeinformationen für jeden gefundenen Server einlesen.

Ich habe versucht, meine Variablen mit dem Parameter ArgumentList zu übergeben, aber es funktioniert nicht.

Dies ist mein Code:

$User = Read-Host -Prompt "Enter Username"
$Password = Read-Host -Prompt "Enter Password" -AsSecureString
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password)
$UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)

Get-ADComputer -Filter "OperatingSystem -Like '*Server*'" | Sort-Object Name |
ForEach-Object{
    if($_.Name -like '*2008*'){
        Invoke-Command -ComputerName $_.Name -ArgumentList $User, $UnsecurePassword -ScriptBlock {  
            net use P: \\Server\dir1\dir2 /persistent:no /user:$User $UnsecurePassword
            Get-EventLog -LogName System -After (Get-Date).AddHours(-12) -EntryType Error, Warning | format-list | 
            out-file P:\EventLog_$env:COMPUTERNAME.log
            net use P: /delete /yes
        }
    }
}

Wie kann ich die Variablen im Invoke-Command ScriptBlock verwenden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage