小编Joe*_*oey的帖子

如何在Powershell中循环Datareader并创建DataTable

首先,我要感谢那些回答我以前问题的人.你们真棒!

这是我的问题:我想查询我的sql server存储过程并返回一个datareader.但是我想从中创建一个表.我将使用该表来使用新的Powershell OpenXML命令行开关加载excel.当我尝试构建DataTable时代码失败.我认为我没有正确地使用新对象"System.Object []".这是我到目前为止所得到的:

$sqlConnection = new-object System.Data.SqlClient.SqlConnection "server=localhost;database=Demo;Integrated Security=sspi"
$sqlConnection.Open()

#Create a command object
$sqlCommand = $sqlConnection.CreateCommand()
$sqlCommand.CommandText = "EXEC Demo.usp_GetTableValueParameter_Data"

#Execute the Command
$sqlReader = $sqlCommand.ExecuteReader()

#Parse the records

$sqlReader | &{ begin{$values = new-object "System.Object[]" $sqlReader["Name"], $sqlReader["Level_Desc"], $sqlReader["Level"]} process {$_.GetValues($values); $datatable.Rows.Add($values)}}

##$datatable | format-table -autosize

# Close the database connection
$sqlConnection.Close()

#STARTING OPENXML PROCESS
#----------------------------
$xlsFile = "C:\Temp\Data.xlsx"
$datatable | Export-OpenXmlSpreadSheet -OutputPath $xlsFile  -InitialRow 3
Run Code Online (Sandbox Code Playgroud)

sql-server powershell

6
推荐指数
2
解决办法
2万
查看次数

用批处理文件替换文本文件中的字符

有没有办法用批处理文件替换文本文件中的某些字符?

我没有找到任何命令来做到这一点.

batch-file

6
推荐指数
1
解决办法
1万
查看次数

不活动的控制背景颜色

在Windows上是否有办法检索用作非活动控件(TextBox等)的背景颜色的颜色?或者更好的是,边框颜色呢?

这适用于Windows Forms,但我找不到合适的内容SystemColors.哪有这回事

一个很好的例子.我有一个文本框,可能不足以容纳它所持有的文本并被禁用.当它被禁用时,用户无法滚动查看整个文本,我甚至无法显示工具提示,原因很明显.

所以我现在所做的是设置TextBoxReadOnly属性true允许我显示工具提示并使控件可滚动.客户端现在希望文本框看起来像被禁用; ReadOnly是一个非常讨厌的属性,因为它看起来仍然可以编辑.所以我认为在那里放置适当的背景颜色可能足以欺骗大多数用户.我不能使用任意灰度值,因为该表单上还有其他禁用控件,可能会注意到颜色差异.那么我有没有办法找出如何呈现禁用的控件?背景颜色和边框颜色或至少前者应该在这里足够,但我宁愿不猜.有问题的平台很可能是XP和Vista,可能有或没有主题.

ETA:无视.这个问题很愚蠢,我本来应该发现一个错误.单个TextBox不会遵循灰色背景,这有点奇怪.

disabled-control winforms

6
推荐指数
1
解决办法
8964
查看次数

右键单击并使用以管理员身份运行时,%CD%变量行为会有所不同

我有一个Windows cmd文件,它使用%CD%环境变量来确定cmd文件的执行目录.

当我从命令行运行cmd文件时,它正常工作,这意味着%CD%变量包含工作目录.如果我双击左键单击cmd它也可以正常工作.但是,如果我右键单击cmd文件并选择runas administrator,则%CD%变量包含值"C:\ Windows\system32"而不是cmd正在执行的curent目录.

我能够使用以下脚本重现该问题:

echo %CD%
pause
Run Code Online (Sandbox Code Playgroud)

windows cmd batch-file

6
推荐指数
1
解决办法
9588
查看次数

在c#中添加字符串,编译器如何做到这一点?

A = string.Concat("abc","def") 

B = "abc" + "def"
Run Code Online (Sandbox Code Playgroud)

A与B.

最近我很困惑为什么很多人会说,与B相比,A的处理速度要快得多.但是,他们只会说因为有人这么说或者因为它就是这样.我想我可以从这里听到更好的解释.

编译器如何处理这些字符串?

谢谢!

c# string process string-concatenation

6
推荐指数
3
解决办法
614
查看次数

Mousedown事件两次射击(WPF)

我目前正在尝试从简单网格上的图像捕获mousedown.我对事件发射没有任何问题,只是它发射了两次.而且因为点击它两次最终会有不同的状态(它会显示一个扩展的图像),直接进行第二次点击会导致问题.

我目前的代码如下:

XAML

<Window x:Class="WpfApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid Background="Transparent" x:Name="MainContent" MouseDown="Generic_MouseDown">
        <Image Source="http://www.blogcdn.com/www.engadget.com/media/2011/05/welcome-kansas-city-google-high-speed-internet.jpg" Height="100" Width="100" MouseDown="Generic_MouseDown"/>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Generic_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (((FrameworkElement)e.Source).GetType() == typeof(System.Windows.Controls.Image))
        {
            Console.Out.WriteLine("image clicked");
        }
        else
        {
            Console.Out.WriteLine("grid clicked");
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我点击图像时,它会两次发射mousedown.

谢谢!

c# wpf onmousedown

6
推荐指数
2
解决办法
7412
查看次数

通过Powershell或Batch将文件从Windows转换为UNIX

我有一个批处理脚本,提示用户输入一些输入,然后输出我在AIX环境中使用的几个文件.这些文件需要采用UNIX格式(我认为是UTF8),但我正在寻找SIMPLEST方法的一些方向.

我不喜欢下载额外的软件包; Cygwin或GnuWin32.如果有可能,我不介意编码,我的编码选项是Batch,Powershell和VBS.有谁知道这样做的方法?

或者,我可以用Batch创建文件并调用Powershell脚本来改造这些吗?

这里的想法是用户会被提示输入一些信息,然后我输出一个标准文件,这些文件基本上是AIX中为作业提示的快速答案.我最初使用Batch,因为我不知道我会遇到这个问题,但我有点倾向于在Powershell中重做这个.因为我在另一个可以进行转换的论坛上找到了一些代码(如下).

% foreach($i in ls -name DIR/*.txt) { \
       get-content DIR/$i | \
       out-file -encoding utf8 -filepath DIR2/$i \
  }
Run Code Online (Sandbox Code Playgroud)

寻找一些方向或一些输入.

windows powershell batch-file utf-8

6
推荐指数
1
解决办法
1万
查看次数

为什么位图比较不等于自身?

这有点令人费解.以下代码是一个小测试应用程序的一部分,用于验证代码更改未引入回归.为了使它快速,我们使用memcmp似乎是比较两个相同大小的图像(不出所料)的最快方式.

但是,我们有一些测试图像显示出一个相当令人惊讶的问题:memcmp在位图数据上告诉我们它们不相等,但是,逐像素比较根本没有发现任何差异.我的印象是,当你使用LockBitsa时,Bitmap你会获得图像的实际原始字节.对于24 bpp位图,有点难以想象像素相同但基础像素数据不相同的情况.

一些令人惊讶的事情:

  1. 差异始终00一个图像和另一个图像FF中的单个字节.
  2. 如果一个人改变了PixelFormatLockBitsFormat32bppRgb或者Format32bppArgb,比较成功.
  3. 如果将BitmapData第一次LockBits调用返回的返回值作为第四个参数传递给第二个参数,则比较成功.
  4. 如上所述,逐像素比较也成功.

我有点难过,因为坦白说我无法想象为什么会这样.

(简化)代码如下.只需编译csc /unsafe并传递一个24bpp的PNG图像作为第一个参数.

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;

class Program
{
    public static void Main(string[] args)
    {
        Bitmap title = new Bitmap(args[0]);
        Console.WriteLine(CompareImageResult(title, new Bitmap(title)));
    }

    private static string CompareImageResult(Bitmap bmp, Bitmap expected) …
Run Code Online (Sandbox Code Playgroud)

c# gdi+ memcmp

6
推荐指数
1
解决办法
2025
查看次数

C++在全局命名空间中找不到非标准C函数

我们有一个相当大的C++项目,我现在正在迁移到VS2010,并且还在更新一些库.到目前为止,一切都建立得很好,除了我(对我来说)非常奇怪的错误,显然有很多(编辑:非)标准C函数和符号没有定义:

error C2039: 'strdup' : is not a member of '`global namespace''    ...\ACE_wrappers\ace\OS_NS_string.inl    222
...
error C2065: 'O_WRONLY' : undeclared identifier                    ...\ACE_wrappers\ace\OS_NS_unistd.inl    1057
...
Run Code Online (Sandbox Code Playgroud)

这会影响我的以下功能和符号:

strdup      getcwd      O_WRONLY
putenv      swab        O_TRUNC
access      unlink      S_IFDIR
chdir       mkdir       S_IFREG
rmdir       tempnam     O_RDONLY
isascii
Run Code Online (Sandbox Code Playgroud)

ACE实验过的包含文件中的strdup一部分是看起来像这样的部分:

ACE_INLINE char *
ACE_OS::strdup (const char *s)
{
#  if (defined (ACE_LACKS_STRDUP) && !defined(ACE_STRDUP_EQUIVALENT)) \
  || defined (ACE_HAS_STRDUP_EMULATION)
  return ACE_OS::strdup_emulation (s);
#  elif defined (ACE_STRDUP_EQUIVALENT)
  return ACE_STRDUP_EQUIVALENT (s);
#  elif defined (ACE_HAS_NONCONST_STRDUP)
  return ::strdup …
Run Code Online (Sandbox Code Playgroud)

c c++ ace

6
推荐指数
1
解决办法
1218
查看次数

Jenkins Timeout因为脚本执行过长

我有一些关于Jenkins和运行Powershell脚本的问题.长话短说:脚本需要8倍的执行时间,然后在服务器(Slave)上手动运行(只需几分钟).我想知道为什么?

在脚本中有调用&msbuild.exe或&svn commit等命令的函数.我发现脚本在执行之前的那些行中挂起.结果是,Jenkins因为脚本需要很长时间而超时.我可以改变Jenkins作业配置中的超时阈值,但我不认为这是问题的解决方案没有错误输出或任何信息为什么需要那么长时间,我没有任何进一步的想法.也许你们其中一个人可以告诉我,Jenkins如何调用这些命令.

这就是Jenkins所做的(Windows批处理插件):

powershell -File %WORKSPACE%\ScriptHead\DeployOrRelease.ps1
Run Code Online (Sandbox Code Playgroud)

powershell performance jenkins

6
推荐指数
1
解决办法
1159
查看次数