我尝试通过SMB连接运行PowerShell脚本,但它无法运行该脚本:
smbclient hostname -U username%password -c "Powershell -File run.ps1"
言败曰:
Powershell: command not found
我想通过SMB在远程服务器上运行PowerShell脚本。Linux(从)-〉Windows(到)
nwnhqdif1#
smbclient的-c/--command参数仅适用于SMB命令字符串,不适用于任意shell命令。请参阅man pages。以下是可用的命令:
smbclient
-c
--command
smb: \> ? ? allinfo altname archive backup blocksize cancel case_sensitive cd chmod chown close del deltree dir du echo exit get getfacl geteas hardlink help history iosize lcd link lock lowercase ls l mask md mget mkdir more mput newer notify open posix posix_encrypt posix_open posix_mkdir posix_rmdir posix_unlink posix_whoami print prompt put pwd q queue quit readlink rd recurse reget rename reput rm rmdir showacls setea setmode scopy stat symlink tar tarmode timeout translate unlock volume vuid wdel logon listconnect showconnect tcon tdis tid utimes logoff .. !
您可以将! <SHELL_COMMAND>用于shell命令,但它们将在本地执行,而不是在远程服务器上执行。换句话说,你不能通过SMB远程执行PowerShell脚本。寻找其他远程技术。你会在[SO]这里找到足够多的PowerShell远程或SSH示例。
! <SHELL_COMMAND>
bqf10yzr2#
Powershell远程处理不是一个选项吗?只需将Invoke-Command与PSSession对象或-ComputerName <remotecomputer>一起使用。它将允许您传递文件和脚本块,但您需要使用-ArgumentList将参数传递给脚本块(如果有),参数的位置在脚本块的PARAM()部分中定义。
Invoke-Command
PSSession
-ComputerName <remotecomputer>
-ArgumentList
PARAM()
z2acfund3#
这个错误表明Powershell没有找到。很有可能是因为它不是PATH的一部分,并且您的shell不知道在哪里运行PS命令。根据您的Linux,风格,快速查看一下MS doc on the topic,看看它是否已安装
3条答案
按热度按时间nwnhqdif1#
smbclient
的-c
/--command
参数仅适用于SMB命令字符串,不适用于任意shell命令。请参阅man pages。以下是可用的命令:
您可以将
! <SHELL_COMMAND>
用于shell命令,但它们将在本地执行,而不是在远程服务器上执行。换句话说,你不能通过SMB远程执行PowerShell脚本。寻找其他远程技术。你会在[SO]这里找到足够多的PowerShell远程或SSH示例。
bqf10yzr2#
Powershell远程处理不是一个选项吗?
只需将
Invoke-Command
与PSSession
对象或-ComputerName <remotecomputer>
一起使用。它将允许您传递文件和脚本块,但您需要使用-ArgumentList
将参数传递给脚本块(如果有),参数的位置在脚本块的PARAM()
部分中定义。z2acfund3#
这个错误表明Powershell没有找到。很有可能是因为它不是PATH的一部分,并且您的shell不知道在哪里运行PS命令。根据您的Linux,风格,快速查看一下MS doc on the topic,看看它是否已安装