3

我正在尝试将 2 个参数传递给 PS 脚本,该脚本将修补远程计算机上的 SQL Server。这是我使用的代码:

$Patcher = "\\remoteShareLocation\SQLpatcher.ps1"
$ver = "SQL2012"
$inst = "NEWINST"

Invoke-Command -ComputerName RMTMACHINE -credential dmn\usrname -ScriptBlock {$Patcher $ver $inst}

这会要求提供凭据,但不会运行并显示任何输出。语法有什么问题吗?请问有什么替代的cmdlet吗?

4

2 回答 2

7

如果您有 powershell V3 或更高版本,您可以使用using前缀将本地变量“传输”到远程主机:

Invoke-Command -ComputerName RMTMACHINE -credential $cred -ScriptBlock {$using:Patcher $using:ver $using:inst}

对于旧版本,请查看调用命令-argumentlist的参数

于 2015-02-19T10:30:24.303 回答
0

尝试

$cred = Get-Credential
Invoke-Command -ComputerName RMTMACHINE -credential $cred -ScriptBlock {$Patcher $ver $inst}

或者像这样创建一个凭证对象:

$username = "username"
$password = "password" | ConvertTo-SecureString -asPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username,$password)

您需要传递凭据对象而不是域\用户名。

要远程运行脚本文件,请查看https://stackoverflow.com/a/10446318/4550393

于 2015-02-19T10:23:37.743 回答