0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Powershellを使用してWindowsをリモート操作する方法

Posted at

##内容
Powershellを使ってWindowsServer1からWindowsServer2へリモート接続してコマンドを実行するといったことを実施したのでやり方をまとめておきます。

##前提
■リモート接続元、接続先の両方でPowershellのポリシーがRemoteSignedになっている
・実行ポリシーをRemoteSignedに変更

set-ExecutionPolicy RemoteSigned

・実行ポリシー確認方法
コマンドの結果RemoteSignedと表示されれば問題無し。

> get-ExecutionPolicy
RemoteSigned

■WinRMが要求を受け入れられる状態になっている。
・WinRMで要求を受け入れられるようにするコマンド

Enable-PSRemoting

##リモートログイン
・SSH接続したようなリモートログイン
これでログインすると、接続先の情報がプロンプトの頭に表示される。
以降のコマンド実行は接続先のサーバで実行される。

Enter-PSSession -ComputerName windowsserver2 -Credential [接続アカウント] [パスワード]
[windowsserver2]PS C:\Users\~>

この場合、コマンドはすべてWindowsServer2で実行されているため、結果をWindowsServer1側に保存しようとしてExport系のコマンドへパイプを使って結果を渡しても、WindowsServer2側で保存されてしまう。

##コマンドのリモート実行
Invoke-commandを用いる。
その際、複数コマンドを実行する場合、リモートセッション情報を使い回すため、セッションを固定で生成しておくと
都度セッションを開く必要がないため楽だと思う。

$S = New-PSSession -ComputerName windowsserver2 -Credential [接続アカウント] [パスワード]
Invoke-Command -Session $S -ScriptBlock {[実行コマンド]}

こちらの場合、コマンド結果をWindowsServer1で受け取るのでパイプでExportするコマンドへ渡してあげれば、結果をWindowsServer1側で保存できる。
※多数のホストからの情報収集等はこちらを利用すると良いと思う。

Invoke-commandはコマンドだけでなく事前に定義したFunctionも実行可能。

function func {hostname}
Invoke-Command -Session $S -ScriptBlock $function:func

コマンド実行が終わったらセッションをクローズする。

Remove-PSSession -Session $S
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?