gpt4 book ai didi

Powershell - 某些命令不会与 Invoke-Command 一起运行

转载 作者:行者123 更新时间:2023-12-04 01:53:06 25 4
gpt4 key购买 nike

我正在尝试从服务器向大约 50 个运行 Powershell 的客户端发送一些命令。大多数命令使用 Invoke-Command 工作。我使用的格式与我的其他命令完全相同,但这个行不通。基本上我想让每个客户端从我的服务器获取一个 .xml 文件以便稍后导入它。我在此处的代码示例中缺少 $credentials 和其他变量,但它们已在我的脚本中的其他地方正确设置。

在权限方面,winrm 中的 TrustedHosts 设置为 * 并且脚本执行设置为不受限制。

        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

有什么想法吗?在本地运行时,同一命令在客户端上可以完美运行。

最佳答案

您在脚本 block 中使用 $webclient,而另一端不会定义 $webclient。为什么不在脚本 block 中创建 Web 客户端,例如:

$command = {
param($profileName)
$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)
Write-Host (hostname)
$webclient.DownloadFile($uri, $File)}
}

$profileName = Read-Host "Enter the profile name(XML file must be present in c:\share\profiles\)"

Invoke-Command $result.address -ScriptBlock $command -Credential $credentials -Arg $profileName

这将要求您通过 Invoke-Command 上的 -ArgumentList 参数从客户端向远程机器提供一些变量。这些提供的参数然后映射到脚本 block 中的 param() 语句。

关于Powershell - 某些命令不会与 Invoke-Command 一起运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12958714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com