如果我想生成Base64编码的输出,我将如何在.NET中执行此操作?
我知道从.NET 2.0开始,就有ICryptoTransform接口,以及该接口的 ToBase64Transform()和FromBase64Transform()实现.
但是这些类嵌入到System.Security命名空间中,并且需要使用TransformBlock,TransformFinalBlock等.
是否有更简单的方法在.NET中对base64进行数据流编码?
有没有人知道是否有一个工具允许您通过Web浏览器对SQL Server数据库运行查询(例如通过浏览器提供的SSMS功能)?
我问,因为我们有一个庞大的支持团队,他们在调查问题时严重依赖于运行数据库查询.由于我们的数据中心(托管数据库的地方)远离我们的办公室,我们的许多支持人员通过VPN在海外工作,因此允许他们访问数据中心托管的客户端很有帮助.一种解决方案是在终端服务器上托管SSMS,但如果存在,则具有Web前端将更直接.
我正在编写一些带有基于Enum值的简单switch语句的代码.在我看来,在将来某个时候开发人员可能会添加一个新值,所以我在运行时包含了一个默认方法来捕获它并抛出异常.但是我意识到每次输入这样的逻辑时我都应该这样做,并且我只在运行时看到这些问题而不是编译时间.
我想知道是否有一些我可以添加的代码让编译器告诉开发人员他们需要在更新枚举值的情况下更新某些方法 - 除了向枚举本身添加注释之外?
例如(以下示例纯粹是理论上的;我选择了开发生命周期中的状态,以确保它对大多数人来说是熟悉的).
public enum DevelopmentStatusEnum
{
Development
//, QA //this may be added at some point in the future (or any other status could be)
, SIT
, UAT
, Production
}
public class Example
{
public void ExampleMethod(DevelopmentStatusEnum status)
{
switch (status)
{
case DevelopmentStatusEnum.Development: DoSomething(); break;
case DevelopmentStatusEnum.SIT: DoSomething(); break;
case DevelopmentStatusEnum.UAT: DoSomething(); break;
case DevelopmentStatusEnum.Production: DoSomething(); break;
default: throw new StupidProgrammerException(); //I'd like the compiler to ensure that this line never runs, even if …
Run Code Online (Sandbox Code Playgroud) 背景
我正在创建一些SQL来协助安全审计; 这将从各种系统数据库和Active Directory获取安全信息,并将生成所有异常的列表(即帐户在一个系统中关闭但不在其他系统中关闭的情况.
现行守则
要获取属于安全组成员的用户列表,请运行以下SQL:
if not exists(select 1 from sys.servers where name = 'ADSI')
EXEC sp_addlinkedserver 'ADSI', 'Active Directory Services 2.5', 'ADSDSOObject', 'adsdatasource'
SELECT sAMAccountName, displayName, givenName, sn, isDeleted --, lastLogonTimestamp --, lastLogon (Could not convert the data value due to reasons other than sign mismatch or overflow.)
FROM OPENQUERY(ADSI
, 'SELECT sAMAccountName, displayName, givenName, sn, isDeleted
FROM ''LDAP://DC=myDomain,DC=myCompany,DC=com''
WHERE objectCategory = ''Person''
AND objectClass = ''user''
AND memberOf = ''CN=mySecurityGroup,OU=Security Groups,OU=UK,DC=myDomain,DC=myCompany,DC=com''
')
order by sAMAccountName
Run Code Online (Sandbox Code Playgroud)
问题/问题
我希望这段代码能够递归地工作; …
快速问题
是否有更好的(即更有效/更简洁)的方法来做到这一点?
compare-object $a $b | ?{$_.SideIndicator -eq '<='}
Run Code Online (Sandbox Code Playgroud)
详情
Compare-Object
给出参数-excludeDifferent
并-includeEqual
允许您修改得到的结果.
-includeEqual
给你一个完整的外部联接-excludeDifferent
毫无意义; 因为默认情况下会排除相等的项目,因此它现在将排除所有内容.有对没有选项-includeLeft
,-excludeLeft
或类似的.
目前要做右侧为空的左外连接(即参考对象中不在差异对象中的项目)我需要手动过滤结果,如上面的代码所示.
我错过了什么/有更好的方法吗?
背景
我最近惊讶地注意到XSL能够智能地处理数字; 即在进行比较时知道将文本中的数字视为数字(即它理解7 < 10
而不是思考'10' < '7'
).就我而言,这就是我想要的; 只是不是我所期待的.
出于好奇,我试图强迫XSLT将数字作为字符串进行比较(即通过使用string()
函数,但没有运气.
题
是否有可能让XSLT将数字作为字符串进行比较; 比如这样'10' < '7'
?
例
源XML:
<?xml version="1.0" encoding="utf-8"?>
<element>
<x>1</x>
<x>2</x>
<x>3</x>
<x>4</x>
<x>5</x>
<x>6</x>
<x>7</x>
<x>8</x>
<x>9</x>
<x>10</x>
</element>
Run Code Online (Sandbox Code Playgroud)
XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="element">
<element>
<AsItComes>
<xsl:for-each select="./x">
<xsl:if test="./text() < 7">
<xsl:copy-of select="."></xsl:copy-of>
</xsl:if>
</xsl:for-each>
</AsItComes>
<AsNumber>
<xsl:for-each select="./x">
<xsl:if test="number(./text()) < 7">
<xsl:copy-of select="."></xsl:copy-of>
</xsl:if>
</xsl:for-each>
</AsNumber>
<AsString>
<xsl:for-each select="./x">
<xsl:if test="string(./text()) …
Run Code Online (Sandbox Code Playgroud) W3已经定义了符号&mail;
并&telephone;
在提案草案中.我现在想开始使用它们,即使它们尚未正式使用.
有什么方法可以定义这个; 例如&telephone; = ☎
?
我猜这是不可能的,这不是一个很大的问题 - 只是好奇,因为能够创建这样的自定义字符映射可能会很有趣.
根据此Code-Golf提示,在PowerShell中,您可以使用科学记数法轻松生成10的幂数:https://codegolf.stackexchange.com/a/193/6776
即1e7
产生数字10,000,000
.
如果我将此值传递给get-date
(或别名date
,为了代码高尔夫的目的)我得到一秒钟:ie date 10000000
=> 01 January 0001 00:00:01
.
然而,如果我使用科学记数法,即使使用括号(即date (1e7)
),我也会收到错误:
Get-Date : Cannot bind parameter 'Date'. Cannot convert value "10000000" to type "System.DateTime". Error: "String was not recognized as a valid DateTime."
At line:1 char:6
+ date (1e7)
+ ~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetDateCommand
Run Code Online (Sandbox Code Playgroud)
题
有没有办法将科学记数法与Get-Date的默认(日期)参数一起使用?
摘要
PowerShell模块清单值PowerShellVersion
与PowerShellHostVersion
?之间的区别是什么?
长版
创建新模块清单时,此模块所需的PowerShell最低版本以及所需的PowerShell主机的最低版本都有设置.即
New-ModuleManifest -Path '.\MyModule.psd1' -PowerShellVersion '5.0' -PowerShellHostVersion '2.0'
PowerShellVersion
涉及$PSVersionTable.PSVersion.Major
(NB:与主要版本有关,因为有效值都为其次要版本/没有构建或修订版号设置了0).
PowerShellHostVersion
是我不清楚的那个.我的信念是,这与$Host.Version
(即与之PowerShellHostName
相关$Host.Name
)有关.但是,根据我的经验,ISE(Windows PowerShell ISE Host
)和ConsoleHost
版本号都与PS版本一致; 因此,要求这些与PS版本不同步似乎很奇怪,如示例中所暗示的那样.我希望这些很少用于罕见用例的参数; 但是我想确保我已经正确理解了这些用途,以及是否存在适用的常见情况.
在这个例子值MSDN文档不同(即PowershellVersion
给定5.0
,而PowershellHostVersion
获得2.0
)
在官方文档只给出了一个圆形的说明(即增加不超过参数名称本身就意味着更多的信息).
使用 PowerShell,历史上不需要yield return
; 因为这就是管道的本质。但是,对于 PS5 的类,方法无法写入管道。因此,是否有任何选项可以从 Powershell 类方法中模仿yield return
/pipeline
行为?
此代码将数据返回到管道;我们可以看到变量 $global:i 被函数更新,然后在函数的下一次迭代之前,管道中的下一步读取该值:
[int]$i = 0
function Get-PowerShellProcesses() {
Get-Process | ?{$_.ProcessName -like '*powershell*'} | %{$global:i++; $_}
}
Get-PowerShellProcesses | %{"$i - $($_.ProcessName)}
Run Code Online (Sandbox Code Playgroud)
输出:
1 - powershell
2 - powershell_ise
Run Code Online (Sandbox Code Playgroud)
如果我们对一个类的方法做同样的事情,除了在传递到管道之前收集完整的结果集之外,一切都是一样的。
[int]$i = 0
class Demo {
Demo(){}
[PSObject[]]GetPowershellProcesses() {
return Get-Process | ?{$_.ProcessName -like '*powershell*'} | %{$Global:i++; $_}
}
}
$demo = New-Object Demo
$demo.GetPowerShellProcesses() | %{"$i - $($_.ProcessName)"}
Run Code Online (Sandbox Code Playgroud)
输出:
2 …
Run Code Online (Sandbox Code Playgroud) powershell ×4
.net ×2
adsi ×1
base64 ×1
c#-4.0 ×1
class ×1
comparison ×1
css ×1
diff ×1
enums ×1
html ×1
html5 ×1
javascript ×1
ldap-query ×1
left-join ×1
manifest ×1
right-join ×1
sql-server ×1
ssms ×1
t-sql ×1
xslt ×1
yield-return ×1