我正在尝试将一些命令从服务器发送到大约 50 个运行 Powershell 的客户端。大多数命令使用 Invoke-Command 工作。我使用了与其他命令完全相同的格式,但这个格式不起作用。基本上我想让每个客户端从我的服务器获取一个 .xml 文件,以便稍后导入。我在这里的代码示例中缺少 $credentials 和其他变量,但它们在我的脚本中的其他位置正确设置。
权限方面,winrm 中的 TrustedHosts 设置为 *,脚本执行设置为 Unrestricted。
clear
$temp = RetrieveStatus
$results = $temp.up #Contains pinged hosts that successfully replied.
$profileName = Read-Host "Enter the profile name(XML file must be present in c:\share\profiles\)"
$File = "c:\profiles\profile.xml"
$webclient = New-Object System.Net.WebClient
$webclient.Proxy = $NULL
$ftp = "ftp://anonymous:anonymous@192.168.2.200/profiles/$profileName"
$uri = New-Object System.Uri($ftp)
$command = {write-host (hostname) $webclient.DownloadFile($uri, $File)}
foreach($result in $results)
{
# download profile from C:\share\profiles
Invoke-Command $result.address -ScriptBlock $command -Credential $credentials
# add profile to wireless networks
# Invoke-Command $result.address -ScriptBlock {write-host (hostname) (netsh wlan add profile filename="c:\profiles\$args[0].xml")} -argumentlist $profileName -Credential $credentials
}
我收到以下错误:
You cannot call a method on a null-valued expression.
+ CategoryInfo : InvalidOperation: (DownloadFile:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
任何想法?在本地运行时,相同的命令可以在客户端上完美运行。