背景:我正在创建一个脚本,向我的域中的每个人发送一条消息。我能够使用Invoke-WMI方法和MSG.exe完成此操作。但是,我的主管希望发送更可自定义的消息。喜欢改变颜色,字体大小,字体样式等。我使用PowerShell创建的。
脚本:
Invoke-WmiMethod -ComputerName $Computer -Class Win32_Process -Name Create -ArgumentList {"C:\x\x\x\Powershell.exe -File `"\\Server\Share\Folder\Script.ps1`""}
当我对我的电脑运行此脚本时,它完美无缺。但是,当我尝试在远程计算机上运行它时,它会失败。 我不明白为什么。
它与我使用的MSG.exe完全相同,但它仍然无法使用PowerShell脚本。
我尝试将脚本复制到远程计算机上C:\'并从该文件路径运行它,但它仍然无法正常工作。
我已验证Powershell.exe的文件路径与脚本相同,远程工作站可以访问.PS1脚本。
但是,脚本确实运行并说它成功,返回值为0.示例:
__ GENUS:2 __CLASS:__PARAMETERS __SUPERCLASS: __DYNASTY:__PARAMETERS __RELPATH: __PROPERTY_COUNT:2 __DERIVATION:{} __SERVER: __NAMESPACE: __PATH: ProcessId:8748 ReturnValue:0
答案 0 :(得分:0)
我的建议是检查两台机器上的版本。您使用的CmdLet可能无法使用以前的版本。
我再次提出建议,如果你有PowerShell版本3或更高版本,你可以使用下面的命令来完成你的工作。
$Outputreport = "Test message to send data using port 443"
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }
$wc = new-object System.Net.WebClient
Invoke-RestMethod -Method Post https://hostnamedotcom/cgi-bin/dir-path/$hostname-filename -Body $Outputreport