0

私がやろうとしていることはかなり単純に思えますが、私はそれを理解することができません。Powershellスクリプトを実行してRDPセッションを起動し、ファイルをc:\ディレクトリにコピーして、コマンドラインからそのファイルを実行しようとしています。サーバーIP、ユーザー名、パスワードなどのcsvファイルからパラメーターを取得してループさせたいです。したがって、基本的に、手順は次のようになります...

 1.import infor from the csv file to define variables 
2.copy specefied file (then loop)
 3.launch mstsc.exe
 4.enter server IP, username, password
 5.paste copied file into the c:\ directory 
6.launch cmd.exe
 7.Run the file that was copied to the c:\ directory 
8.log off server 

私は誰かがこれを手伝ってくれるかどうかを見たかったのです。私はPowerShellに不慣れで、多くのことをやり遂げることができました。誰かが私を正しい方向に向けることができれば、あるいは空白を埋めるためのコードを私に提供することができれば、私はそれを大いに感謝します。

私がやろうとしていることについてもっと具体的にすることは、マシンにエージェントをインストールすることです。このプロセスでは、rdpを介してサーバーにログオンし、コマンドラインからサイレントインストール(msi)パッケージを実行します。私がやりたいのは、クライアントにスプレッドシートを提供し、サーバーアドレス、ユーザー名、パスワードなどの詳細をクライアントに入力してもらうことです。Iとcsvを使用して、PowerShellを実行し、そのスクリプトを介して多くのエージェントをインストールします。これは、本質的に自動化されたプロセスの一種です。それがもう少しよく説明されることを願っています。

これが私がこれまでに持っているものです...

ウィンドウズ....

$computers= gc "C:\Users\Desktop\Powershell\DeviceList.txt"
foreach ($computername in $computers) 
{
mstsc
Start-Sleep -s 2 
[System.Windows.Forms.SendKeys]::SendWait("$computername{ENTER}")

これはmstscセッションを起動するだけなので、パズルの一部です。次に、ファイルをそのデバイスにコピーしてから、cmd.exeと1つのコマンドを実行してログアウトします。

UNIXの場合>>>

$computers= gc "C:\Users\Desktop\Powershell\DeviceList.txt"
foreach ($computername in $computers) 
{
c:\putty.exe
Start-Sleep -s 2
[System.Windows.Forms.SendKeys]::SendWait("$computername{ENTER}")
}

ほぼ同じことですが、パテから直接コマンドを実行してこれを機能させることができ、いくつかのコマンドを実行することで別の方法でファイルを取得できるため、ファイルをコピーする必要はありません。

これに関する助けやアイデアはありがたいです、ありがとう。

4

3 に答える 3

0

あなたが間違った方法を選んだようです。PowerShellには優れたリモート機能があるため、すべてのクライアントにWindows管理(Vista、Seven、およびEightのデフォルトパッケージに含まれています)がある場合は、次のことを試すことができます。

# Comma separated list:
$listRaw = @"
Computer,User,Password
computer1,"Domain\user1","passw1"
computer2,"Domain\user2","passw2 with spaces"
"@

# Parse CSV list
$list = $listRaw | ConvertFrom-CSV -Delimiter ','

# Iterate targets
foreach ($target in $list) {
    Write-Host "Connecting to $($target.Computer) as $($target.User)"

    # Creating credential from username and password
    $SecurePassword = $target.Password | ConvertTo-SecureString -AsPlainText -Force
    $Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $target.User, $SecurePassword

    # Creating remote session to that computer
    # Using given credentials
    $session = New-PSSession -ComputerName $target.Computer -Credential $Credentials

    # Invoking actions on that remote session
    Invoke-Command -Session $session -ArgumentList $target.Computer -ScriptBlock {
        Param($computerName)

        # this code executes on remote computer
        "Hello from $computerName"
    }
}

ご使用の環境で機能する場合は、お知らせください。

于 2013-03-04T07:49:00.783 に答える
0

PSSession と (場合によっては) Putty のダウンロード ページにある Plink.exe を組み合わせると、目標を達成するのに役立ちます。

New-PSSession および Enter-PSSession コマンドレットを使用すると、Windows ターゲットでリモート PowerShell セッションを使用できます (WinRM が有効であると仮定します)。そこから、ターゲットで PShell コマンドを実行できます。

$session - New-PSSession -computerName [targetName/ip] -Credential (get-credential)
$session | Enter-PSSession
{ Execute Silent install }
Exit-PSSession
$session | Disconnect-PSSession

または、Invoke-Command を使用できます

Invoke-Command -ScriptBlock { install.exe /s } -computerName [target] -credential (Get-Credential)

Linux ボックスの場合、PLink.exe を利用して SSH 経由でリモート スクリプトを実行できる場合があります。以前に試したことはありませんが、うまくいくはずです。

このリンクが役立つかもしれません: http://the.earth.li/~sgtatham/putty/0.53b/htmldoc/Chapter7.html

于 2014-05-30T17:42:01.593 に答える