我必須從某些服務器獲取事件日志,并且我不想讀取找到的每個服務器的憑據。我試圖通過使用ArgumentList參數傳遞變量,但無法正常工作。這是我的代碼:$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 } }}如何使用Invoke-Command ScriptBlock中的變量?
2 回答

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
您可以在腳本塊的開頭聲明參數:
{
param($user,$unsecurepassword)
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
}
或者,您使用$args變量訪問參數:
#first passed parameter
$args[0]
#second passed parameter
$args[1]
....
添加回答
舉報
0/150
提交
取消