新的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. 数组转换为List(Arrays.asList)后add或remove出现UnsupportedOperationException

    Java中,可以使用Arrays.asList(T... a)方法来把一个数组转换为List,返回一个受指定数组支持的固定大小(注意是固定大小)的列表.此方法同 Collection.toArray( ...

  2. 源码安装ELK-5.6.10版本

    目录: 一.介绍 二.安装JDK 三.安装Elasticsearch 四.安装Kibana 五.安装Nginx 六.安装Logstash 七.安装Logstash-forwarder 八.测试 系统环 ...

  3. Chapter 4 Invitations——2

    To my dismay, I found myself the center of attention for the rest of that week. 令我沮丧的是, 我发现我自己剩余注意力的 ...

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

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

  5. Nacos系列:基于Nacos的配置中心

    前言 在看正文之前,我想请你回顾一下自己待过的公司都是怎么管理配置的,我想应该会有以下几种方式: 1.硬编码 没有什么配置不配置的,直接写在代码里面,比如使用常量类 优势:对开发友好,开发清楚地知道代 ...

  6. [THUWC2017] 在美妙的数学王国畅游

    Description 懒得概括了.. Solution 挺裸的LCT+挺裸的泰勒展开吧... 稍微了解过一点的人应该都能很快切掉...吧? 就是把每个点的函数泰勒展开一下然后LCT维护子树sum就行 ...

  7. 翻译:CONCURRENT INSERTS(已提交到MariaDB官方手册)

    本文为mariadb官方手册:CONCURRENT INSERTS的译文. 原文:https://mariadb.com/kb/en/concurrent-inserts/我提交到MariaDB官方手 ...

  8. oracle9i的erp数据库无法正常关闭的解决方法。

    oracle9i版本的ERP数据库无法正常关闭. 场景描述:oracle9i数据库正常关闭的时候,hang住在一个地方无法正常关闭. 解决思路:查看alert日志,分析问题. [oraprod@erp ...

  9. mybatis-generator插件执行报错:Cannot resolve classpath entry

    记录一个小问题 使用了mybatis-generator插件自动生成实体类,DAO,Mapper,在执行时报错.报错信息如下 Failed to execute goal org.mybatis.ge ...

  10. C#面向对象之多态。

    1.定义:指不同的对象收到相同的消息时,会产生不同的行为,同一个类在不同的场合下表现出不同的行为特征. 比如. class Program { //下面三各类都继承object,但不同类的tostri ...