我在远程服务器上有一个脚本,如下所示:
function ExtractMetadata()
{
param([string]$url)
add-pssnapin 'microsoft.sharepoint.powershell'
set-alias STSADM "${env:commonprogramfiles}\Microsoft Shared\Web Server Extensions\16\BIN\STSADM.EXE"
STSADM -o mv-populatemetadata -url $url convention1 -usemvprefix
}
我想使用invoke-command从另一台服务器调用此命令,并传入一个url参数。执行此操作的正确语法是什么?
谢谢
答案1
您可以使用 来实现这一点scriptblock
。以下将您的函数转换为scriptblock
,然后使用-ArgumentList
将Invoke-Command
URL 作为参数传递。
$ExtractMetadata = {
param([string]$url)
add-pssnapin 'microsoft.sharepoint.powershell'
set-alias STSADM "${env:commonprogramfiles}\Microsoft Shared\Web Server Extensions\16\BIN\STSADM.EXE"
STSADM -o mv-populatemetadata -url $url convention1 -usemvprefix
}
Invoke-Command -Computer Server456 -scriptBlock $ExtractMetaData -ArgumentList "http://www.serverfault.com"
編輯1
远程服务器上是否已配置 Powershell 远程处理?Test-WSMan
如果已配置,则应返回 4 行信息(wsmid、ProtocolVersion、ProductVendor、ProductVersion)
Test-WSMan -Computer Server456
如果启用了 PSR,运行像这样的更简单的远程命令会发生什么?
Invoke-Command -Computer Server456 -scriptBlock { get-wmiobject win32_computersystem }