问题标签 [invoke-command]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 通过 PowerShell 运行远程守护程序(而不仅仅是)进程的问题
从我的脚本中,我想在远程 Windows 框中运行一些命令。所以我用谷歌搜索了一下,似乎最流行和标准的方法是使用 PowerShell 的Invoke-Command
cmdlet,它似乎使用与winrm
and相同的协议winrs
。所以,下面是我试图从我的脚本中调用的命令(实际上我也尝试了很多其他的修改,但 IMO 这些足以说明问题):
PowerShell -Command "$encpass=ConvertTo-SecureString -AsPlainText mypass -Force;$cred = New-Object System.Management.Automation.PSCredential -ArgumentList myuser,$encpass; Invoke-Command -ComputerName REMOTE_COMPUTER_NAME -Credential $cred -ScriptBlock {<fullcommand>};"
PowerShell -Command "$encpass=ConvertTo-SecureString -AsPlainText mypass -Force;$cred = New-Object System.Management.Automation.PSCredential -ArgumentList myuser,$encpass; Invoke-Command -ComputerName REMOTE_COMPUTER_NAME -Credential $cred -ScriptBlock {Start-Process -FilePath <fullexepath> -ArgumentList <arguments> -Wait -NoNewWindow};"
PowerShell -Command "$encpass=ConvertTo-SecureString -AsPlainText mypass -Force;$cred = New-Object System.Management.Automation.PSCredential -ArgumentList myuser,$encpass;$session=new-PSSession -ComputerName "REMOTE_COMPUTER_NAME" -Credential $cred; Invoke-Command -Session $session -ScriptBlock {<fullcommand>};"
注意:脚本是用 编写的perl
,但 IMO 在这里脚本的语言并不重要,所以你可以假设我从batch
脚本调用命令,请注意,由于命令应该从脚本运行,它们不需要任何交互行动。
所以,我对这些命令有几个问题,需要帮助来解决它们。他们来了:
- 无法运行 类型的进程
configure and run daemon
。也就是说,如果我想configure_server.pl
在远程框 (<fullcommand> = "configure_server.pl <arguments>"
) 上运行,它应该做一些事情,然后运行server.exe
,它不起作用,因为一旦configure_server.pl
完成,整个远程工作就会被杀死,包括server.exe
应该作为守护进程运行的工作。(适用于第 1、2、3 点) - 获取包装(每行的长度小于或等于 80 个字符)标准输出和标准错误。(适用于第 1,3 点)
- 不要得到标准输出和标准错误。(适用于第 2 点)
sql-server - 在 out-datatable (invoke-sqlcmd2) 期间将 powershell 变量传递到 SQL 值
当我从 SQL 查询构建数据表时,我想用 Select 插入一个 PowerShell 变量值。
从 TechNet 库中借用函数 invoke-sqlcmd2 并将其点源化。
这会生成一个新的序列 ID 并标记我们开始批处理的时间。结果将产生一个数字,该数字将识别此运行。使用“写入 $NewSequenceID”进行验证。我想将查询的后续结果与此 SequenceID 一起保存以进行分析。
然后我有这个:
然后我想这样做:(编辑:此语句不起作用-底部的错误消息)
并对表做一些事情,然后用 write-datatable 写。
如果我为前两个值选择 NULL 并从现有表中获取其他三个值,它工作正常。我想从前面的语句中添加 $NewSequenceID 和 $PollTime。
我已经阅读了十几页关于使用 `(反引号)、$、{} 等的内容,但我没有正确理解。有人可以帮助使用正确的语法将这些变量值插入到选择中吗?
PS 错误是:使用“1”参数调用“填充”的异常:“无效的伪列“$NewSequenceID”。”
function - Invoke-Command powershell 麻烦
朋友的我这个功能有问题,它会在远程服务器上运行,但我有以下输出:
调用命令:找不到接受参数“& C:\testNunit\dll\”的位置参数。在 D:\test\Multithread.ps1:65 char:16 + Invoke-Command <<<< -ComputerName $serv -ScriptBlock $command ([ScriptBlock]::Create("& $OneProject")) -credential $cred + CategoryInfo : InvalidArgument: (:) [Invoke-Command], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeCommandCommand
powershell - Powershell Invoke-Command 作业状态
我有一个脚本(webdeploy.ps1),可以通过调用命令在本地或远程运行良好。由于某种原因,webdeploy.ps1 将在到达脚本末尾之前失败并退出,这是由于 webdeploy.ps1 无法处理的一些灾难性错误(即磁盘空间不足)。脚本在记录错误的写入错误后终止。最终用户会收到通知。一切都很好。
现在,当通过 Invoke-Command -asjob 远程执行 webdeploy.ps1 时,即使脚本失败,作业状态也始终返回“已完成”。有什么方法可以将作业状态设置为失败,这样当我运行 get-job 时,我可以立即看到哪个服务器失败/成功完成。
powershell - 如何在 PowerShell 中启动远程进程
我有一个问题,我有一个脚本:
- 与 PSSession 连接(我使用
PSSession
管理员帐户) - 停止 2 进程
- 更改他们的文件
- 启动2过程(问题在这里)
我想在服务器上启动进程,所以我与 PSSession 连接(没问题)
我做 Invoke-Command :
但它什么也没做(我用 VNC 验证)
我也做 Invoke-Command :
它启动程序(好)但我的脚本等待结束程序(不好)
有人有想法吗?
谢谢
powershell - Invoke msiexec on remote machine and get 0x80070005 error
I'm trying to do a script in powershell that install msi files on remote machines in the same domain. When i use Invoke-Command to run simple cmdlets on remote machine everything works fine, but when i try to invoke msiexec i've got this error from msi log
MSI (c) (50:C4) [10:50:30:962]: Failed to connect to server. Error: 0x80070005
function in InstallFunction.ps1 file
}
And code in main script
Function ManageMsi work fine on local machine. Thanks for any answers
Edit: When i use
then in remote machine
I've got this error (sorry about format above)
T h e W i n d o w s I n s t a l l e r S e r v i c e c o u l d n o t b e a c c e s s e d . T h i s c a n o c c u r i f t h e W i n d o w s I n s t a l l e r i s n o t c o r r e c t l y i n s t a l l e d . C o n t a c t y o u r s u p p o r t p e r s o n n e l f o r a s s i s t a n c e .
powershell - 无法将结果表单 Invoke-Command 转换为 csv 类型
我在将结果转换Invoke-Command
为 csv 类型时遇到问题。下面的代码:
最后一行给出了这个错误:
但是在这种情况下输入对象$remoteResultEventLog
不是我检查的空值
感谢您的任何回答
powershell - 从 Windows 任务计划程序调用时,Powershell 的 Invoke-Command 不起作用
我有一个 Powershell 脚本,它在从命令行调用时运行良好,但在由 Windows 任务计划程序执行时只能部分正常运行。该脚本如下所示:
任务计划程序中定义的任务已完成且没有错误。如您所见,之前和之后的所有部分Invoke-Command
都在工作,在任务计划程序调用时也是如此。只有Invoke-Command
从命令行调用时,它本身才有效。
我唯一的猜测是,Powershell 脚本过早退出,但我没有找到任何方法来确认这一点,甚至没有解决问题。
powershell - Invoke-Command Powershell“窗口标题不能长于 X 字符”
我正在尝试使用 Powershell 远程运行脚本,该脚本仍在运行,但我收到一个错误Invoke Command : Window Title cannot be longer than 1023 characters.
这是我的代码:
Invoke-Command -ComputerName Test -FilePath "\\Some\File\Path.ps1"
我意识到在 ISE 中运行该行时会发生什么,它将comments in the header
脚本放入文件名中。有没有办法阻止这种行为?我可以使用ErrorAction SilentlyContinue
抑制错误的选项,但它也会抑制所有其他不理想的错误。
session - 找不到带有网络连接的调用命令的 Powershell 错误
由于我在这个网站上找到了我的大部分问题的答案,我希望有人将我的答案藏在他们脑细胞的深处,并愿意为我提取它。我已经搜索了这个网站和互联网,但没有任何成功。这是情况。
我正在 ServerA 上执行一个 Powershell 脚本,如下所示:
远程脚本是一个安装 powershell 脚本,它做了很多事情来安装我们的软件。
问题
一旦 autoupdate.ps1 文件退出,它就会掉到我的 catch 块中,并显示错误"The network connection could not be found"。
如果我输出安装脚本运行后显示的所有错误(仍在 autoupdate.ps1 中)。有8个错误,没有一个说找不到网络连接。
在 autoupdate.ps1 脚本退出之前,我做了一个 $error.clear() 希望它不会返回错误,但它仍然存在。错误列表位置 0 的错误是“使用“1”参数调用“添加”的异常:指定的帐户名称已经是组的成员。”
所以看起来安装脚本正在做的事情是导致调用命令返回错误。任何想法如何清除该错误以便脚本正常返回,除了 $error.clear() 因为那不起作用。我希望安装脚本中抛出的合法错误从安装脚本冒泡到主脚本中,以便我可以采取相应措施。
---在弄清楚事情后为了简洁而编辑---