新的winserver2016支持了一种nano模式,像以前的core模式,只能远程管理,只支持x64,只有610M,不让CentOS mini版独美。

这个nano版,默认只开启WinRM,所以只能PowerShell,安装后F11重置密码即可使用。

Windows Server 2008以后有Core安装模式(安装后磁盘占用2G+),设置密码后,sconfig,配置远程管理,开启powershell与服务器管理器远程管理。

下面是.net的程序方式像远程传输文件。

前提是,本地与远程的PowerShell可以连接。一般Windows默认是不开启PowerShell的,两边都要运行Enable-PSRemoting(管理员),并且把目标服务器添加到信任主机中:

示例:Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.160.0.100

需要引用System.Management.Automation.dll的功能。一般它在系统多个地方出现,我从C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

引用。

        static void Main(string[] args)
        {
            // 创建ps对象
            var ps = PowerShell.Create();
            ps.AddCommand("New-PSSession");// 得到一个新会话对象
            ps.AddArgument("192.168.0.100");// 目标服务器地址
            var ss = new System.Security.SecureString();
            string pwd = "123123";// 管理员密码
            foreach (var ch in pwd)
                ss.AppendChar(ch);// 依次把char塞入安全字符串
            PSCredential cred = new PSCredential("administrator", ss);// 用安全字符串构造一个凭证
            ps.AddParameter("Credential", cred);// 凭证参数
           
            PSSession session = null;
            var ret = ps.Invoke();// 执行New-PSSession
            if (ps.Streams.Error.Count > 0)// 有错误
            {
                Console.WriteLine(ps.Streams.Error[0]);
                return;
            }
            else
                session = ret[0].BaseObject as PSSession;
               
            ps.Commands.Clear();// 清理命令,重用PS对象
            ps.AddCommand("cp");// Copy-Item
            ps.AddArgument("C:\\Users\\Fyter\\文档\\测试用文件.txt");// 本地文件
            ps.AddParameter("Destination", "c:\\");// 会话所连接的目标计算机硬盘位置
            ps.AddParameter("ToSession", session);// 目标会话
            var result = ps.Invoke();// 执行
            if(ps.Streams.Error.Count > 0)
                Console.WriteLine(ps.Streams.Error[0]);
        }

  

使用C#+PowerShell进行Windows系统间文件传输的更多相关文章

  1. 在windows系统的文件右键菜单中增加“命令提示符”

    本实用小工具能够在windows系统的文件右键菜单中增加“命令提示符”,方便快速进入制定文件的命令提示窗口,避免逐层输入或复制文件夹路径,极其实用. 工具下载地址如下:360云盘(访问密码:5b71) ...

  2. 通过PowerShell获取Windows系统密码Hash

    当你拿到了系统控制权之后如何才能更长的时间内控制已经拿到这台机器呢?作为白帽子,已经在对手防线上撕开一个口子,如果你需要进一步扩大战果,你首先需要做的就是潜伏下来,收集更多的信息便于你判断,便于有更大 ...

  3. [C#]Windows系统特殊文件夹路径获取

    原文:[C#]Windows系统特殊文件夹路径获取 由于软件开发的需要,近期对Windows特殊文件夹(如桌面,我的文档等)路径的查找方法进行了研究,结果如下. 获取特殊文件夹的方法不止一种,下面列出 ...

  4. 虚拟机中实现Linux与Windows之间的文件传输

    虚拟机中实现Linux与Windows之间的文件传输 标签: linux 2016年06月28日 11:17:37 2092人阅读 评论(0) 收藏 举报  分类: linux(2)    一.配置环 ...

  5. 虚拟机centOs Linux与Windows之间的文件传输

    一.配置环境 虚拟机Linux:Fedora 9 文件传输工具:SSHSecureShellClient-3.2.9 二.实现步骤 1. 在Windows中安装文件传输工具SSHSecureShell ...

  6. [转帖]Linux下主机间文件传输命令

    Linux下主机间文件传输命令 https://yq.aliyun.com/articles/53631?spm=a2c4e.11155435.0.0.580ce8ef4Q9uzs   SCP命令: ...

  7. linux、windows系统间传输文件

    日常工作中经常涉及到系统间的文件传输,下面就简单说一下常用的方法   linux--windows      工具:winscp.SecureCRT.Zmodem(sz, rz)   linux--l ...

  8. 【.Net】C#获取Windows系统特殊文件夹的路径

    系统特殊文件夹是包含公共信息的文件夹,如“Program Files”.“Programs”.“System”或“Startup”.特殊文件夹在默认情况下由系统设置,或者由用户在安装 Windows ...

  9. 关于Linux系统和Windows系统中文件夹的命名规范

    Windows系统中. 1.在创建文件夹的时候不能以"."开头(但是文件以多个点开头并且还有其他合法字符的话就是合法的) 但是在windows系统中确实见过以一个点".& ...

随机推荐

  1. sql server 性能调优之 资源等待内存瓶颈的三种等待类型

    一.概述 这篇介绍Stolen内存相关的主要三种等待类型以及对应的waittype编号,CMEMTHREAD(0x00B9),SOS_RESERVEDMEMBLOCKLIST(0x007B),RESO ...

  2. 【python小工具】我在bilibili个人资料里控制家里的电脑

    今天在52学习到的,大佬A是在网易云音乐   歌单设置  里,过程没看到,封装一个exe了,可以控制本地cmd命令\ 思路很奇特,想了一下感觉实现应该简单,就打算自己实现一下\ 两步走:网页正则和本地 ...

  3. Python快速学习10: 循环的对象及设计 (生活的规律)

    前言 系列文章:[传送门] 生活逐渐规律,按时睡觉.今天写博客,明天补时间看会书.慢慢的时间很珍惜 我很喜欢! 时钟就像个循环体,我们将它融入生活. 正文 循环对象的并不是随着Python的诞生就存在 ...

  4. Ubuntu 下 Galera cluster for MySQL 集群安装

    mysql galera cluster官网:http://galeracluster.com/documentation-webpages/ 相关安装教程:(不一定管用) http://blog.c ...

  5. Http系列目录

    1.Http简史 2.Http协议基本术语 3.Http1.1 4.Http2.0

  6. DynamicProxy系列目录

    C# 1.基于Emit实现动态代理 2.Microsoft.CodeAnalysis动态生成代理类 3.castle dynamicproxy + AutoFac 4.DispatchProxy .R ...

  7. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  8. 【Go】优雅的读取http请求或响应的数据

    [Go]优雅的读取http请求或响应的数据 原文链接:https://blog.thinkeridea.com/201901/go/you_ya_de_du_qu_http_qing_qiu_huo_ ...

  9. tp3.2多个或者并且语句语法

    $map['tid1&cid1'] =array($jmid,'0','_multi'=>true); $map['tid2&cid2'] =array($jmid,'0','_ ...

  10. Go基础系列:defer、panic和recover

    defer关键字 defer关键字可以让函数或语句延迟到函数语句块的最结尾时,即即将退出函数时执行,即便函数中途报错结束.即便已经panic().即便函数已经return了,也都会执行defer所推迟 ...